Matlab 使用ICC配置文件将RGB转换为(L,a*,b*)
我想使用MATLAB将rgb转换为Lab,使用AdobeRGB.icc。我知道如何使用srgb.icc进行转换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-它
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
配置文件一起使用,从一个配置文件转换到另一个配置文件。