Image 如何重新缩放整数值,以便将其与im2double格式的图像矩阵进行比较
我在MATLAB中使用了以下代码:Image 如何重新缩放整数值,以便将其与im2double格式的图像矩阵进行比较,image,matlab,image-processing,Image,Matlab,Image Processing,我在MATLAB中使用了以下代码: I=imread('filename'); I=im2double(I); 现在我必须比较一个整数值,比如“2”,与已经转换为im2double的图像像素值。如何将这些整数值重新缩放为其im2double等效值?im2double缩放图像,使强度的动态范围从[0,1]变化。如果要将“整型”值与转换后的图像进行比较,则需要了解值来自的图像类型。例如,如果2来自uint8图像,则图像的动态强度范围为[0255]。因此,2将转换为2/255。但是,如果2来自uin
I=imread('filename');
I=im2double(I);
现在我必须比较一个整数值,比如“2”,与已经转换为
im2double
的图像像素值。如何将这些整数值重新缩放为其im2double
等效值?im2double
缩放图像,使强度的动态范围从[0,1]
变化。如果要将“整型”值与转换后的图像进行比较,则需要了解值来自的图像类型。例如,如果2
来自uint8
图像,则图像的动态强度范围为[0255]
。因此,2
将转换为2/255
。但是,如果2
来自uint16
图像,则图像的动态强度范围为[065535]
,因此2
将转换为2/65535
因此,除非您知道2
值源自的图像数据类型,否则无法回答此问题。一旦知道了这一点,就可以继续相应地转换2
值。您只需除以数据类型可以容纳的最大值即可
因此,给定整数值val
,以下图表可作为所需正确换算系数的指南:
Data Type Floating-Point Equivalent
uint8 val/255
uint16 val/65535
uint32 val/4294967295
请注意,
255-->2^8-1
、65535-->2^16-1
和4294967295-->2^32-1
,这是有意义的。您知道数字需要二进制数字(位)来表示数字,上面数据类型末尾的数字告诉您需要多少位来表示数字。图像本质上是这些数字的二维网格,它们是无符号数据类型,使用所有位表示整数,而有符号数据类型使用最高有效位表示数字的符号。为什么不同时使用im2double
?