将图像转换为double类型

hav*_*kok 0 matlab casting image-processing computer-vision

我正在使用以下命令读取图像:

lefty = imread('sintra2.JPG');
Run Code Online (Sandbox Code Playgroud)

imshow();给了我一个很好的回击.但如果我尝试使用:

lefty = double(imread('sintra2.JPG'));
Run Code Online (Sandbox Code Playgroud)

imshow()给我一个白色的图像.我正在处理这里分享的相对较大的图像.有连接吗?

如果有必要,我如何转换为double?有人告诉我,在MATLAB中处理图像处理和计算机视觉时,最好使用double.

Sar*_*ama 6

当读出的图像,其类型为uint8,因此lefty所包含的值从0到255(2 8 = 256).当您使用时double,它将类转换为uint8,double但值保持相同,即0-255.

im2double这里需要的不仅是将值转换为双精度,还要通过将输入的所有条目除以输入数据类型的最大可能值来重新调整0-1范围内的值.因此,在您的情况下,由于输入数据类型uint8的最大可能值为255,因此所有值将除以255.请注意,图像数据中的最大值可能不是255,而是可能的最大值值为uint8255,因此所有值将除以255.

以下是您正在寻找的内容:

lefty = imread('sintra2.JPG');
imshow(lefty)
figure
imshow(im2double(lefty))
Run Code Online (Sandbox Code Playgroud)