我有一堆图像,其中绝大多数是彩色(rgb)图像。我需要在Lab颜色空间的三个不同通道中应用一些空间特征。通过rgb2gray
可以直接从RGB颜色空间到Lab颜色空间的转换。但是,当图像为灰度时,这自然会失败(仅由一个通道组成,数值表示为double
,uint8
,真的是任何东西。
我熟悉Lab颜色空间的“亮度”(L)通道基本上是灰度级原始RGB图像。然而,这个问题具有不同的性质;我要问的是:给定一个已经是灰度的图像,我很容易在Lab色彩空间中得到L通道。 a和b频道应该?它们应该为零吗?以下示例使用预构建的“辣椒”图像,显示了这样做的视觉效果:
I = imread('peppers.png');
figure; imshow(I, []);
Lab = rgb2gray(I);
Lab(:, :, 2) = 0;
Lab(:, :, 3) = 0;
figure; imshow(Lab, []);
如果您运行此代码,您会注意到第二个imshow
输出第一个图像的红色版本,类似于旧的黑暗房间。我承认不了解a和b颜色通道代表什么,以便了解我应该如何处理灰度图像,并寻求一些帮助。
答案 0 :(得分:0)
在CIELAB中,a *和b *为0表示没有色度:即为灰度。
还有更多信息! 。如果您遇到问题,那是因为那不是您需要回答的实际问题:
首先,不,L*a*b*
的L *不是亮度,并且与亮度不同。
亮度(L或Y)是光线的线性度量。
L * (* Lstar)是感知上的亮度,它遵循人类的感知(或多或少,取决于不计其数的上下文事物)。
rgb2grey无法转换为L*a*b*
不幸的是,不幸的是,某些用于色彩空间的MATLAB函数在实现中存在错误。
如果要将sRGB颜色/图像/像素转换为LAB,则需要遵循以下流程图:
sRGB->线性RGB-> CIEXYZ-> CIELAB
如果只需要灰度或亮度信息,而没有颜色,则可以:
sRGB->线性RGB-> CIE Y (光谱加权)-> L * (感知亮度)
的简单方法如果您想了解更多详细信息,请I suggest Bruce Lindbloom.