Matlab 使用ICC配置文件将RGB转换为(L,a*,b*)

Matlab 使用ICC配置文件将RGB转换为(L,a*,b*),matlab,rgb,color-profile,color-management,Matlab,Rgb,Color Profile,Color Management,我想使用MATLAB将rgb转换为Lab,使用AdobeRGB.icc。我知道如何使用srgb.icc进行转换 cform = makecform('srgb2lab'); lab = applycform(rgb, cform); 但是,我不知道如何使用AdobeRGB.icc进行转换。首先,我们可以通过以下方式阅读icc简介: p = iccread('AdobeRGB.icc'); 但我不知道如何继续。有什么建议吗?谢谢 查看p-它

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

         cform = makecform('srgb2lab');
         lab = applycform(rgb, cform);
但是,我不知道如何使用AdobeRGB.icc进行转换。首先,我们可以通过以下方式阅读icc简介:

         p = iccread('AdobeRGB.icc');

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

查看
p
-它是否包含字段“MatTRC”?(我希望如此!)

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

实际上,如果您查看
edit makecform
并深入研究代码,您将看到,如果您使用
'srgb2lab'
等输入调用
makecform
,它们只会创建两个转换,
'srgb2xyz'
'xyz2lab'
,然后依次应用它们。因此,我们也可以这样做-将您的icc配置文件用于
rgb2xyz
部件,并将内置配置文件用于
xyz2lab
部件:

% 'forward' is rgb2xyz
cform1 = makecform('mattrc', p, 'Direction', 'forward');
cform2 = makecform('xyz2lab');
xyz = applycform(rgb, cform1);
lab = applycform(xyz, cform2);

非常感谢。它有MatTRC,p.Header.ConnectionSpace='XYZ',那么上面的方法就可以了!大多数*.icc文件都具有内部(abc2xyz)转换(其中abc通常为rgb)。您还可以将
makecform
与两组
icc
配置文件一起使用,从一个配置文件转换到另一个配置文件。