首页 > 教育学习 > 为什么 > Matlab中将RGB图片转换成Lab空间的了,为什么用imshow函数显示不出来图片?

Matlab中将RGB图片转换成Lab空间的了,为什么用imshow函数显示不出来图片?
2012-01-19 17:43:36   来源:   点击:

    Matlab中将RGB图片转换成Lab空间的了,为什么用imshow函数显示不出来图片?代码如下:% Transfer RGB to CIELab space% We only consider part channels (e.g., a and b) for one image in L*a*b*% space.Lab = makecform("srgb2lab");imgLab = applycform(img,Lab);figure("Name", "L*a*b* Space", "NumberTitle", "off"), imshow(imgLab);% Extract the image in channel a* and b* respectively.imgLabChAB = uint8(imgLab(:,:,2:3));%figure("Name", "Temp Channel a* and b*", "NumberTitle", "off"), imshow(imgLabChAB);rowChAB = size(imgLabChAB,1);colChAB = size(imgLabChAB,2);imgLabChAB = reshape(imgLabChAB,rowChAB,colChAB, 2);figure("Name", "Channel a* and b*", "NumberTitle", "off"), imshow(imgLabChAB);

    1 个答案

    • 答案 1:

      首先简单说下imshow。如果imshow(A)这样一个用法,那么A可以是1维矩阵或者3维矩阵。

        当1维矩阵时,显示的是灰度或二值图像;

        当3维矩阵时,显示的是彩色图像,并默认三个维分别依次对应R、G、B三个通道。

      这段代码里一共有两次imshow。第一次imshow。假如你的imgLab矩阵是符合要求的,那么,应该能正常显示。看代码意图,应该是要显示彩色图像,那么也就是说,你的img矩阵里,应该保存的是原图的矩阵信息。我们不妨假设原图叫 “1.jpg”,那么:img = imread("1.jpg");就可以读取。然后,第一次imshow应该能显示。显示出来的,是这样一个色彩配置比较诡异的图像:它是将“1.jpg”转换到Lab空间后,再强制以L-R、a-G、b-B的通道匹配来显示的一个彩色图像。第二次imshow。理论上,显示不了是正常的。因为imgLabChAB是一个2维矩阵,不符合参数要求。

相关热词搜索:

上一篇:知乎会做基于地点的问答吗?或者说知乎有做基于地点问答的计划吗?
下一篇:为什么在一些问答网站中资深用户的活跃程度低?