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 imshow命令不显示与原始图像相同的二进制图像_Image_Matlab_Image Processing_Matlab Figure - Fatal编程技术网

Image imshow命令不显示与原始图像相同的二进制图像

Image imshow命令不显示与原始图像相同的二进制图像,image,matlab,image-processing,matlab-figure,Image,Matlab,Image Processing,Matlab Figure,我用以下方式阅读图像: W=double(imread('rose32.bmp')); imshow(W,[]); 然后: imshow(W,[]); 或 imshow(W,[]); imshow(W,[]); 但显示的图像似乎与原始图像相反。我怎样才能解决这个问题?这是一个MATLAB问题吗?这个问题可能是由格式化图像文件引起的! imshow(W,[]); 使用imread时,返回的内容取决于图像文件中图像的格式imread返回树值[A,map,transparen

我用以下方式阅读图像:

 W=double(imread('rose32.bmp'));
 imshow(W,[]);
然后:

 imshow(W,[]);

 imshow(W,[]);

 imshow(W,[]);

但显示的图像似乎与原始图像相反。我怎样才能解决这个问题?这是一个MATLAB问题吗?

这个问题可能是由格式化图像文件引起的!
 imshow(W,[]);
使用
imread
时,返回的内容取决于图像文件中图像的格式
imread
返回树值
[A,map,transparency]=imread(
),其中
A
可能是几个不同可能类别的
h
x
w
-矩阵或
h
x
3
-矩阵(
h
w
是高度和宽度的缩写)(例如,
double
uint8

 imshow(W,[]);
h
x
w
x
3
-矩阵的情况下,输出变量
map
将为空,您可以使用
imshow(A)
直接显示图像。这称为RGB图像

 imshow(W,[]);
另一种可能性(称为索引图像)是
h
x
w
-矩阵。在这种情况下,
map
是彩色贴图,您可以通过
imshow(a,map)
来显示图像

 imshow(W,[]);
您可以通过
ind2rgb(A,map)
rgb2ind(A)
轻松地在这两种类型的图像之间进行转换

 imshow(W,[]);
你需要注意的另一件事是图像的类别

 imshow(W,[]);
如果您有一个类为
uint8
的rgb图像,那么图像的值将是介于0和255之间的整数,而类型为
double
的rgb图像的值介于0和1之间。您决不能像您那样通过
double
函数将图像转换为
double
-类;而应使用
im2double

 imshow(W,[]);
因此,要解决您的问题,请尝试以下代码:

 imshow(W,[]);
[img,map] = imread('rose32.bmp');
if ~isempty(map)
  img = ind2rgb(img,map);
end
img = im2double(img);
[W,map] = imread('rose32.bmp');
imshow(W,map);
现在
imshow(img)
应该正确显示图像。或者您可以简单地使用以下代码:

 imshow(W,[]);
[img,map] = imread('rose32.bmp');
if ~isempty(map)
  img = ind2rgb(img,map);
end
img = im2double(img);
[W,map] = imread('rose32.bmp');
imshow(W,map);

我可以问一个有类似问题的类比吗?问题主题:相关值很好,但是IMSID命令显示了损坏的图像。如果答案解决了你的问题,你可能会考虑接受它作为正确的答案。