Reputation: 171
I have an image I
which is of type double
. I want to convert the image from double
to uint8
. I have tried using both:
I=uint8(I)
I=im2uint8(I)
.When I use the imshow(I)
command, I get only a black image and nothing else. What am I doing wrong?
Upvotes: 6
Views: 14066
Reputation: 14316
The im2uint8
function assumes that your double
image is scaled to the range [0,1]
. If your image has values larger than 1
or smaller than 0
, these values will be clipped. 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);
Upvotes: 10