当前要做一件事情,根据色彩板生成ICC文件,然后对图像进行色彩校正。什么是ICC文件呢?
ICC文件实际上是为了对色彩进行特征管理,而出的一个规范。该规范有一系列的固定格式,主要用于色彩管理。这里就涉及到色彩空间的概念,也就是一幅图像可以由不同的色彩空间表示。
色彩空间
所谓色彩空间,即一定的色彩范围,这是一种色彩模型。sRGB、AdobeRGB、ProPhotoRGB、CMYK等都是不同的色彩空间。它们都以可见光谱为基础,但分别包含不同的色彩范围。
具体可参考文章:什么是sRGB、AdobeRGB和CMYK色彩空间?
ICC文件格式
可以通过软件 ICC Profile Inspector 进行查看,在路径 C:\Windows\System32\spool\drivers\color 下有很多预设好的ICC文件,我这里打开一个AdobeRGB1998.cc 为例
左侧显示的是ICC文件的头部信息,其中Color Space为 RGB . 右侧为一些Tag 标签列表。具体的格式可以阅读 ICC特征文件格式和信息读取
利用ICC文件进行空间转换
我这里用.net 文件进行处理。图像库使用ImageMagic的.net 版本。 具体代码如下:
// 定义ICC文件
ImageProfile imageProfile = new ImageProfile("icc2", @"C:\Windows\System32\spool\drivers\color\Canon EOS 700D CCPP C1-111.icc");
using (MagickImage image = new MagickImage(@"E:\SJDAID\色彩校正\色卡_CMYK.jpg"))
{
//var colorProfile = image.GetColorProfile();
// 加载ICC色卡
image.AddProfile(imageProfile);
// 配置要转换的颜色空间
image.AddProfile(ColorProfile.sRGB);
// 保存色彩校正后的图片
image.Write(@"E:\SJDAID\色彩校正\色卡dst.jpg");
}
处理前后对比
参考:
[1] http://secai.h.baike.com/article-28780.html#3
[2] https://stackoverflow.com/questions/18914919/how-to-set-profile-using-magick-net-in-the-same-way-using-image-magick/18918798#18918798
[3] https://archive.codeplex.com/?p=magick
[4] https://www.docin.com/p-1349271474.html