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
xw
-矩阵或h
x3
-矩阵(h
和w
是高度和宽度的缩写)(例如,double
或uint8
)
imshow(W,[]);
在h
xw
x3
-矩阵的情况下,输出变量map
将为空,您可以使用imshow(A)
直接显示图像。这称为RGB图像
imshow(W,[]);
另一种可能性(称为索引图像)是h
xw
-矩阵。在这种情况下,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命令显示了损坏的图像。如果答案解决了你的问题,你可能会考虑接受它作为正确的答案。