The im2uint8 function assumes that your double image is scaled to the range [0,1] . If your image has values โโgreater than 1 or less than 0 , these values โโwill be cropped. See the following example:
im2uint8([-1 0 0.5 1 2]) ans = 0 0 128 255 255
The solution is to scale the input image to [0,1] by subtracting the minimum value and dividing by the total range:
I = (I - min(I(:))) / (max(I(:)) - min(I(:))); I = im2uint8(I); imshow(I);
source share