如何重新缩放整数值,以便可以与im2double格式的图像矩阵进行比较

时间:2015-04-05 19:59:23

标签: image matlab image-processing

我在MATLAB中使用了这段代码:

I=imread('filename');
I=im2double(I);

现在我必须将整数值(比如'2')与已经转换为im2double的图像像素值进行比较。如何将这些整数值重新调整为其im2double等效值?

1 个答案:

答案 0 :(得分:2)

im2double缩放图像,使强度的动态范围为[0,1]。如果要将“整数”值与转换后的图像进行比较,则需要了解该值来自的图像的类型。例如,如果2来自uint8图像,则图像的动态强度范围为[0,255]。因此,2将转换为2/255。但是,如果2来自uint16图像,则图片的动态强度范围为[0,65535],因此2将转换为{{ 1}}。

因此,除非您知道2/65535值来自的图像数据类型,否则无法回答此问题。一旦你知道这一点,那么你可以继续相应地转换2值。您只需要除以数据类型可以容纳的最大值。

因此,给定整数值2,这是一个图表,您可以将其用作所需的正确转换因子的指南:

val

请注意Data Type Floating-Point Equivalent uint8 val/255 uint16 val/65535 uint32 val/4294967295 255 --> 2^8 - 165535 --> 2^16 - 1,这是有道理的。您知道数字需要二进制数字(位)来表示数字,上面数据类型末尾的数字告诉您需要多少位。图像本质上是这些数字的二维网格,这些是无符号数据类型,与使用“强>有符号数据类型的已签名数据类型相比,它们使用所有位来表示整数最重要的一点,表示数字的符号。