颜色校正方法和装置
技术领域
本发明涉及数字排版领域,具体而言,涉及颜色校正方法和装置。
背景技术
光栅图像处理器RIP(Raster Image Processor)将计算机制作版面中的各种图像、图形和文字解释成打印机或照排机能够记录的点阵信息,然后控制打印机或照排机将图像点阵信息记录在纸上或胶片上。
数据文件经RIP处理后分成多个页面,这些页面数据多以点阵形式存储。点阵图像即位图图像,其颜色编码方式有两种。RGB是最常见的位图编码方式,它用红、绿、蓝三原色的光学强度来表示一种颜色,可以直接用于屏幕显示。而CMYK用青、品红、黄、黑四种颜料含量表示一种颜色,可以直接用于彩色印刷。色深16位以上的位图可以根据其中分别表示RGB三原色或CMYK四原色的位数进一步分类,如16位位图图片还可分为R5G6B5,R4G4B4A4等等。
随着印刷行业的发展和印前处理模式及处理环境的不断改变,对于印前流程中的颜色管理要求越来越高。为了更真实地反应原稿或满足特定环境的应用要求,通常需要对图像颜色进行校正。不包含颜色管理的处理过程为:扫描原稿、送出RGB数据、在输出设备的RIP中将这些数据转换成CMYK数值。而采用色彩管理系统进行工作时,在输出RGB数值和计算CMYK数值之间,插入像素校正的步骤。
传统的方式在像素校正过程中仅生成一条颜色校正曲线,利用该颜色校正曲线修正各页面中的像素值。发明人发现,在像素校正过程中可能需要进行多个不同的校色处理,而仅仅一条颜色校正曲线不能够同时应用于多个不同的校色处理。
发明内容
本发明旨在提供一种颜色校正方法和装置,以解决现有技术在像素校正过程中更改校色效果时,必须完全重新设计校色曲线,不能在原有基础上进行增删微调的问题。
在本发明的实施例中,提供了一种颜色校正方法,包括:根据用户写入节点生成的配置文件,在各个原色的通道上分别生成至少一条颜色校正曲线和/或在混合各原色的通道上生成至少一条颜色校正曲线;使用至少一条所述的颜色校正曲线校正页面中像素的颜色值;其中,使用至少一条所述的颜色校正曲线校正页面中像素的颜色值包括:根据各个颜色空间及其对应的所述颜色校正曲线,分别生成原像素值与校正值之间的映射;分别按照各个所述原像素值与校正值之间的映射校正所述页面中像素的颜色值;所述生成的颜色校正曲线包括一组混合通道的颜色校正曲线和多组单通道的颜色校正曲线,每组所述单通道的颜色校正曲线对应一个通道的颜色空间;根据各个颜色空间及其对应的所述颜色校正曲线,分别生成原像素值与校正值之间的映射,包括:遍历各个通道的颜色空间;对于当前通道的颜色空间,遍历当前通道对应组的所述单通道的颜色校正曲线,包括:A:取所述对应组中第一条所述颜色校正曲线作为曲线C1,并取当前通道的颜色空间作为初始化数据S1;B:使用S1和C1生成原像素值与校正值之间的映射T1;C:使用T1和第一条所述混合通道的颜色校正曲线生成原像素值与校正值之间的映射T2;D:使用T2和下一条所述混合通道的颜色校正曲线生成新的T2,反复执行,直至遍历所有所述混合通道的颜色校正曲线;E:判断是否遍历完所述对应组的颜色校正曲线,如果没有,则设置S1=T2,并回到步骤A;F:如果遍历完所述对应组的颜色校正曲线,则设置T2作为当前通道的所述原像素值与校正值之间的映射。
在本发明的实施例中,提供了一种颜色校正装置,包括:生成模块,用于根据用户写入节点生成的配置文件,在各个原色的通道上分别生成至少一条颜色校正曲线和/或在混合各原色的通道上生成至少一条颜色校正曲线;校正模块,用于使用至少一条所述的颜色校正曲线校正页面中像素的颜色值;其中,所述校正模块包括:映射模块,用于根据各个颜色空间及其对应的所述颜色校正曲线,分别生成原像素值与校正值之间的映射;通道校正模块,用于分别按照各个所述映射校正所述页面中像素的颜色值;其中,所述生成的颜色校正曲线包括一组混合通道的颜色校正曲线和多组单通道的颜色校正曲线,每组所述单通道的颜色校正曲线对应一个通道的颜色空间;映射模块具体用于:遍历各个通道的颜色空间;对于当前通道的颜色空间,遍历当前通道对应组的所述单通道的颜色校正曲线,包括:A:取所述对应组中第一条所述颜色校正曲线作为曲线C1,并取当前通道的颜色空间作为初始化数据S1;B:使用S1和C1生成原像素值与校正值之间的映射T1;C:使用T1和第一条所述混合通道的颜色校正曲线生成原像素值与校正值之间的映射T2;D:使用T2和下一条所述混合通道的颜色校正曲线生成新的T2,反复执行,直至遍历所有所述混合通道的颜色校正曲线;E:判断是否遍历完所述对应组的颜色校正曲线,如果没有,则设置S1=T2,并回到步骤A;F:如果遍历完所述对应组的颜色校正曲线,则设置T2作为当前通道的所述原像素值与校正值之间的映射。
上述实施例的颜色校正方法和装置因为采用多条颜色校正曲线,所以克服了现有技术在像素校正过程中更改校色效果时,必须完全重新设计校色曲线,不能在原有基础上进行增删微调的问题,从而扩展了校色的应用范围,满足不同的校正需求。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1示出了根据本发明实施例的颜色校正方法的流程图;
图2示出了根据本发明一个优选实施例的颜色校正方法的流程图;
图3示出了根据本发明一个优选实施例的配置文件;
图4示出了根据图3的配置表生成原像素值与校正值之间的映射的流程图;
图5示出了图4的校正对齐误差的流程图;
图6示出了根据本发明实施例颜色校正装置的示意图。
具体实施方式
下面将参考附图并结合实施例,来详细说明本发明。
图1示出了根据本发明实施例的颜色校正方法的流程图,包括:
步骤S10,生成一条或多条颜色校正曲线;
步骤S20,使用该一条或多条颜色校正曲线校正页面中的像素的颜色值。
现有技术在像素校正过程中仅生成一条颜色校正曲线,因此现有技术若想更改校色效果时必须完全重新设计校色曲线,不能在原有基础上进行增删微调,浪费很大精力。而本实施例在像素校正过程中生成多条颜色校正曲线,这样就可以分别进行不同的校色处理,从而扩展了校色的应用范围,满足不同的校正需求。在实际应用中可根据需要添加任意多条曲线,多组校正曲线可以叠加方式应用,如果当前校正效果不理想,欲在此基础上进行微调,则可直接添加一个新的曲线组。该新增曲线将在已有基础上产生校正效果,从而避免完全重新设计曲线。
优选地,步骤S10包括:生成一组或多组节点;根据每组节点分别生成一条颜色校正曲线。利用计算机强大的计算能力,可以很容易地通过节点拟合生成曲线。对于用户来说,仅提供曲线的节点,而避免提供整条曲线,显然可以大大地减轻用户的负担。
优选地,对于生成多条颜色校正曲线,生成多组节点包括:在配置文件中记录X={xa,ya};{x1,y1};…;{xn,yn};{xb,yb},其中,{xa,ya}和{xb,yb}为两端的端点;{x1,y1}、{xn,yn}为端点中间的节点;X为每组名称。采用XY坐标系来描述节点是比较通用的数学方法,能够显著地减轻用户的计算负担。本实施例中,曲线描述格式中第一个和最后一个点表示两个端点,中间部分为各中间的节点。当曲线描述格式中只有两个点时只能表示端点。每组曲线的名称可以取“R”、“G”、“B”和“RGB”四个字串之一,用于表示将校正的通道名称。
优选地,配置文件为INI文件或是以XML描述。INI或者XML都是业界比较通用的计算机文件格式,本优选实施例采用这些格式来描述配置文件,可以提高文件的通用性。
优选地,在各个原色的通道上分别生成至少一组节点和/或在混合各个原色的通道上生成至少一组节点。一般来说,用户对于页面进行多个不同的校色处理分别是根据页面的各个原色的通道来进行的。例如,本优选实施例可以在R通道上生成一组R颜色校正曲线,在G通道上生成一组G颜色校正曲线,在B通道上生成一组B颜色校正曲线,还可以再生成一组能同时应用于RGB通道的颜色校正曲线,这样可以针对RGB通道分别或综合进行不同的校色处理。
优选地,采用贝塞尔函数拟合每组节点,分别得到一条颜色校正曲线。贝塞尔函数是比较常用的数学函数,适合于拟合平滑曲线,且适合计算机处理。
优选地,步骤S20包括:根据各个颜色空间及其对应的颜色校正曲线,分别生成原像素值与校正值之间的映射;分别按照各个所述映射校正页面中的像素的颜色值。本优选实施例生成表格后并保存,以后只需查找表格数据即可完成校色。
优选地,使用所述映射校正页面中的像素的颜色值包括:以页面中的像素的颜色值为序号,查找原像素值与校正值之间的映射,获取对应的校正值,使用校正值替换像素的颜色值。由于根据所述映射可生成线性数组结构,故查找速度快、效率高。
图2示出了根据本发明一个优选实施例的颜色校正方法的流程图,包括以下步骤:
步骤202,读取用户写入节点生成的配置文件;
步骤204,从配置文件中解析节点,得到颜色校正曲线;
步骤206,利用颜色校正曲线及其对应的颜色空间生成顺序表(即原像素值与校正值之间的映射);
步骤208,打开文件,读取其中需要校正的页面;
步骤210,使用顺序表校正页面的颜色,即以页面中像素值为序号,通过查找顺序表,获取到该像素的校正值,并替换原像素值,对页面中的所有像素依次查表替换,从而完成对页面颜色的校正;
步骤212,修正在RIP处理过程中对齐算法产生的对齐误差,对齐算法是为了保证RIP效率,适当增大输出页面尺寸,使之等于给定数值的整数倍,增大的部分就是对齐误差,该误差与对齐算法和页面原始尺寸相关;
步骤214,判断是否所有页面校正完毕,如果没有校正完毕,则回到步骤208,读取下一个页面;
步骤216,如果校正完毕,则写入数据,结束流程。
优选地,多条颜色校正曲线包括一组混合通道的颜色校正曲线和多组单通道的颜色校正曲线,每组单通道的颜色校正曲线对应一个通道的颜色空间;根据各个颜色空间及其对应的颜色校正曲线,分别生成原像素值与校正值之间的映射,包括:遍历各个通道的颜色空间;对于当前通道的颜色空间,遍历当前通道对应组的单通道的颜色校正曲线,包括:
A:取对应组中第一条颜色校正曲线作为曲线C1,并取当前通道的颜色空间作为初始化数据S1;
B:使用S1和C1生成所述映射T1;
C:使用T1和第一条混合通道的颜色校正曲线生成所述映射T2;
D:使用T2和下一条混合通道的颜色校正曲线生成新的T2,反复执行,直至遍历所有混合通道的颜色校正曲线;
E:判断是否遍历完对应组的颜色校正曲线,如果没有,则设置S1=T2,并回到步骤A;
F:如果遍历完对应组的颜色校正曲线,则设置T2作为当前通道的原像素值与校正值之间的最终映射。
图3示出了根据本发明一个优选实施例的配置文件。本实施例中,共有2个曲线组,其中第1组中包含2条曲线的节点数据,分别为R曲线和G曲线,第2组中包含4条曲线,分别为RGB曲线、R曲线、G曲线、B曲线。即,R通道有两条颜色校正曲线,G通道有两条颜色校正曲线,B通道有一条颜色校正曲线,RGB混合通道有一条颜色校正曲线。R曲线、G曲线、B曲线分别用于校正R、G、B三个通道;RGB曲线同时校正三个通道。
该配置文件中可以存放多组校正曲线,各组曲线以独立方式使用,从而可以根据需求选取不同的曲线分别应用。
图4示出了根据图3的配置表生成所述映射的流程图,包括以下步骤:
步骤S21,取当前通道的颜色空间作为初始化数据S1;
步骤S22,取配置文件中当前通道的第一组节点生成第一条颜色校正曲线C1;
步骤S23,使用S1和C1生成顺序表T1;
步骤S24,取配置文件中混合通道的节点生成RGB颜色校正曲线C2;
步骤S25:使用T1和C2生成顺序表T2;
步骤S26,判断是否当前通道的所有曲线都已处理完毕;
步骤S27,如果没有处理完毕,就赋值S1等于T2,然后回到步骤S22;
步骤S28:如果已经处理完毕,则设置T2作为当前通道的顺序表X;
步骤S29,判断所有通道是否处理完毕;
步骤S30,如果没有处理完毕,则取下一个通道,然后回到步骤S21;
如果所有通道处理完毕,则结束流程。
本优选实施例采用了循环算法遍历所有的通道的所有的颜色校正曲线,算法简单,便于计算机实现。
图5示出了图4的校正对齐误差的流程图。页面对齐误差分为横向和纵向两部分。由于点阵文件比较大,一般处理时内存中都是分段进行,所以必须判断哪些段的哪些行需要校正。
本实施例中,S31首先确定当前点阵文件的色彩类型,保证查表的正确性。S32计算本页面中需要校正的行数,每经过S33读取一段新的数据,在S34中要判断一下当前段的行数与需要修正的行数关系,如果当前段行数小于等于需校正的行数,则说明当前段需全部校正,然后继续读取下一段。如果当前段行数大于需校正的行数,则只校正一部分并且完成对当前页面的处理。
图6示出了根据本发明实施例颜色校正装置的示意图,包括:
生成模块10,用于生成一条或多条颜色校正曲线;
校正模块20,用于使用该一条或多条颜色校正曲线校正页面中的像素的颜色值。
本颜色校正装置扩展了校色的应用范围,满足不同的校正需求。
优选地,生成模块10包括:点模块,用于生成一组或多组节点;曲线模块,用于根据每组节点分别生成一条颜色校正曲线。本优选实施例可以大大地减轻用户的负担。
优选地,校正模块20包括:映射模块,用于根据各个颜色空间及其对应的颜色校正曲线,分别生成所述原像素值与校正值之间的映射;通道校正模块,用于分别按照各个所述映射校正页面中的像素的颜色值。本优选实施例生成表格后并保存,以后只需查找表格数据即可完成校色。
针对现有技术中存在的缺陷,本发明的目的是提供一种点阵图像的颜色校正方法,利用该方法可以精确的生成多条颜色校正曲线,提高处理的可控性,并可根据需要单独使用一条或对多条曲线进行叠加运算后再校正颜色。扩展了校色的应用范围,满足不同的校正需求。
本发明的效果在于:采用本发明所述的方法,可以根据拟定的曲线对图像颜色校正,可以同时应用多条校色曲线独立或联合校正颜色,提高了应用的灵活性,可控性。曲线描述格式简单、易懂,可以随时修改配置文件,增删曲线数据。曲线数据为生成一次,多次查找,即在初始化时进行一次运算过程,生成表格后并保存,以后只需查找表格数据即可完成校色,且由于表格采用线性数组结构,故查找速度快、效率高。
从以上的描述中可以看出,本发明可以精确地生成多条颜色校正曲线,提高处理的可控性,并可根据需要单独使用一条或联合对多条曲线进行叠加运算然后校正颜色,在后期通过自动查表校正颜色,提高了点阵校色的效率和质量;具有独立或叠加两种应用方式,扩展了校色的应用范围,满足不同的校正需求。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。