使用ICC配置文件进行RGB到(L,a *,b *)转换

时间:2014-03-12 17:16:40

标签: matlab rgb color-profile color-management

我想使用MATLAB使用AdobeRGB.icc将rgb转换为Lab。我知道如何使用srgb.icc进行转换。

         cform = makecform('srgb2lab');
         lab = applycform(rgb, cform);

但是,我不知道如何使用AdobeRGB.icc进行转换。首先,我们可以通过以下方式阅读icc配置文件:

         p = iccread('AdobeRGB.icc');

但我不知道如何继续。有什么建议?谢谢!

1 个答案:

答案 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);