Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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 Matlab imshow不';无法正确绘制,但imshowpair可以_Image_Matlab_Image Processing_Imshow - Fatal编程技术网

Image Matlab imshow不';无法正确绘制,但imshowpair可以

Image Matlab imshow不';无法正确绘制,但imshowpair可以,image,matlab,image-processing,imshow,Image,Matlab,Image Processing,Imshow,我导入了一个图像。我已将其解析为双精度,并对其执行了一些过滤 当我用imshow打印结果时,双图像太暗。但当我使用imshowpair绘制原始图像和最终图像时,两幅图像都正确显示 我曾尝试使用uint8,im2uint8,乘以255,然后使用这些函数,但获得正确图像的唯一方法是使用imshowpair 我能做些什么?当显示双重数据时,大多数强度/颜色数据超出了imshow可接受的动态范围,这听起来像是个问题 我还看到您使用的是im2double,但是im2double只是将图像转换为double

我导入了一个图像。我已将其解析为双精度,并对其执行了一些过滤

当我用
imshow
打印结果时,双图像太暗。但当我使用
imshowpair
绘制原始图像和最终图像时,两幅图像都正确显示

我曾尝试使用
uint8
im2uint8
,乘以255,然后使用这些函数,但获得正确图像的唯一方法是使用
imshowpair


我能做些什么?

当显示
双重
数据时,大多数强度/颜色数据超出了
imshow
可接受的动态范围,这听起来像是个问题

我还看到您使用的是
im2double
,但是
im2double
只是将图像转换为double,如果图像已经是double,则不会发生任何事情。这可能是因为你过滤图像的方式。你在做边缘检测吗?你得到暗图像的原因可能是因为你的大多数强度是负数,或者徘徊在0左右
imshow
whe显示
double
type图像时,假设强度的动态范围为[0,1]

因此,解决问题的一种方法是:

imshow(im,[]);
这将改变显示范围,使最小值映射为0,最大值映射为1

如果你想要一个更持久的解决方案,考虑创建一个新的输出变量来为你这样做:

out = (im - min(im(:))) / (max(im(:)) - min(im(:)));
这将执行与为您显示数据时所执行的移动相同的移动。您现在可以执行以下操作:

imshow(out);

您是否尝试过
imshow(im,[])?另外,请向我们展示您为解析图像数据而编写的代码。要知道发生了什么而不看到您尝试了什么是不可能的;还有,我试过你说的话,效果很好!为什么?如果我想将图像存储在矩阵中,我该怎么办?非常感谢。图像已经存储为矩阵,因此这没有意义。但是,使用
im2double
只需将图像转换为
double
,如果图像已经是
double
,则不会发生任何事情。这可能是因为你过滤图像的方式。你在做边缘检测吗?你得到暗图像的原因可能是因为你的大部分强度都是负数
imshow
假设对于
double
类型,强度的动态范围是
[0,1]
,这样做
imshow(im,[])
会移动范围,使最小值映射为0,最大值映射为1。我问如何更改图像的动态范围,但是经过你的解释,我可以自己做了。你不知道我花了多少时间试图解决这个问题,多亏了你,我终于做到了!非常感谢你!