2

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

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

但是,我不知道如何使用 Adob​​eRGB.icc 进行转换。首先,我们可以通过以下方式读取 icc profile:

         p = iccread('AdobeRGB.icc');

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

4

1 回答 1

1

看看p- 它是否包含“MatTRC”字段?(但愿如此!)

这很可能是一种rgb2xyz转变。(检查p.Header.ConnectionSpace

实际上,如果您仔细查看edit makecform并深入研究代码,您会发现如果您makecform使用输入进行调用,例如'srgb2lab'他们只是创建两个转换,'srgb2xyz'and 'xyz2lab',然后按顺序应用它们。所以我们可以做同样的事情 - 使用您的 icc 配置文件作为rgb2xyz部件,并使用内置的xyz2lab部件:

% 'forward' is rgb2xyz
cform1 = makecform('mattrc', p, 'Direction', 'forward');
cform2 = makecform('xyz2lab');
xyz = applycform(rgb, cform1);
lab = applycform(xyz, cform2);
于 2014-03-13T13:55:57.750 回答