Divide one image by another image?

I am working with two Geotiff images that have 16 bit depth. I need to estimate a ratio by using those images with equation such as below:
Ratio = (image1-image2)/(image1+image2);
The resulting ratio should be in the range of 0 to 1, but I am getting zero for all the pixels. I assumed it might have to do with image type conversion, so tried converting those images into double before estimating the ratio (as below), and it is still giving me zero for all pixels.
Ratio = (im2double(image1) - im2double(image2))/(im2double(image1) + im2double(image2))
What should be done to address this problem. Thanks.

 Accepted Answer

Use dot slash instead of slash. Also use double() instead of im2double() because I'm not sure if im2double() scales each image independently of the others, which you would not want
Ratio = (double(image1) - double(image2)) ./ (double(image1) + double(image2));
imshow(Ratio, []); % Use the [] - it's important.

3 Comments

Why is the [] important?
Because that scales the image so that you see the entire range. In this case we might have both positive and negative values in the range -1 to +1. If you don't use [] then all values less than 0 will show up as black since if [] is not used it expects that all values to be between 0 and 1. Anything below 0 will appear black and anything over 1 will appear white. With [] you will have no clipping and see the whole range.
Awesome, you truely are The Image Analyst!

Sign in to comment.

More Answers (0)

Asked:

on 17 Sep 2017

Commented:

on 5 Dec 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!