Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/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
Matlab 使用imshow时uint8和双图像之间的差异_Matlab_Image Processing_Imshow_Imread - Fatal编程技术网

Matlab 使用imshow时uint8和双图像之间的差异

Matlab 使用imshow时uint8和双图像之间的差异,matlab,image-processing,imshow,imread,Matlab,Image Processing,Imshow,Imread,下面的代码段产生了一个双精度 然而,另一个代码段产生了一个uint8 在显示这两个图形时,使用imshow的这两个图像的显示结果是不同的,但这种差异背后的原因是什么?假定类型为double的图像的值介于0和1之间,并且假定uint8图像的值介于0和255之间。由于您的double数据包含0到255之间的值(因为您只是将其转换为double并且不执行任何缩放),它将显示为白色,因为大多数值都大于1 您可以使用imshow的第二个输入指示您希望忽略此假设,并自动将显示缩放到数据的动态范围 imsho

下面的代码段产生了一个
双精度

然而,另一个代码段产生了一个
uint8


在显示这两个图形时,使用imshow的这两个图像的显示结果是不同的,但这种差异背后的原因是什么?

假定类型为
double
的图像的值介于0和1之间,并且假定
uint8
图像的值介于0和255之间。由于您的
double
数据包含0到255之间的值(因为您只是将其转换为
double
并且不执行任何缩放),它将显示为白色,因为大多数值都大于1

您可以使用
imshow
的第二个输入指示您希望忽略此假设,并自动将显示缩放到数据的动态范围

imshow(h, [])
或者,您可以在显示图像之前使用
mat2gray
double
版本进行规范化

h = mat2gray(h);
imshow(h)

假定类型为
double
的图像的值介于0和1之间,
uint8
的图像的值介于0和255之间。由于您的
double
数据包含0到255之间的值(因为您只是将其转换为
double
并且不执行任何缩放),它将显示为白色,因为大多数值都大于1

您可以使用
imshow
的第二个输入指示您希望忽略此假设,并自动将显示缩放到数据的动态范围

imshow(h, [])
或者,您可以在显示图像之前使用
mat2gray
double
版本进行规范化

h = mat2gray(h);
imshow(h)

uint
!无符号整数(非
unit
uint
!无符号整数(不是
单位
)在非交互式环境中,imshow的神奇行为几乎从来都不是一件好事。你可以把它包装在一个函数中,检查输入类型和范围的假设,这样可以省去你的惊讶和痛苦。在非交互式环境中,imshow的神奇行为几乎从来都不是一件好事。您可以通过将其包装到一个函数中来检查关于输入类型和范围的假设,从而避免意外和痛苦。