我想使用MATLAB使用AdobeRGB.icc将rgb转换为Lab。我知道如何使用srgb.icc进行转换。
cform = makecform('srgb2lab');
lab = applycform(rgb, cform);
但是,我不知道如何使用AdobeRGB.icc进行转换。首先,我们可以通过以下方式阅读icc配置文件:
p = iccread('AdobeRGB.icc');
但我不知道如何继续。有什么建议?谢谢!
答案 0 :(得分:1)
查看p
- 它是否包含字段“MatTRC”? (我希望如此!)
这很可能是rgb2xyz
转换。 (检查p.Header.ConnectionSpace
)
实际上,如果您查看edit makecform
并稍微深入了解代码,您会看到如果您使用makecform
之类的输入调用'srgb2lab'
,则只需创建两个转换, 'srgb2xyz'
和'xyz2lab'
,然后按顺序应用它们。所以我们可以这样做 - 使用rgb2xyz
部分的icc配置文件和xyz2lab
部分的内置部分:
% 'forward' is rgb2xyz
cform1 = makecform('mattrc', p, 'Direction', 'forward');
cform2 = makecform('xyz2lab');
xyz = applycform(rgb, cform1);
lab = applycform(xyz, cform2);