Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 如何重新缩放整数值,以便将其与im2double格式的图像矩阵进行比较_Image_Matlab_Image Processing - Fatal编程技术网

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

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

我在MATLAB中使用了以下代码:

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