印刷新闻 印刷技术 印刷展会 印刷词典 院校社团 印刷企业 印刷杂志 电子书库

浅谈几种常用的数字半色调算法

资料来源:《广东印刷》2009年第2期 作者:于晓庆 更新日期:2009-09-28

半色调技术应用于印刷领域已有一个多世纪,应用在数字输出设备上也有40多年。随着激光打印机、喷墨打印机、数字印刷机、数码相机和等离子显示屏等数字输出设备应用越来越普遍,数字半色调技术受到生产厂家和研究机构的普遍关注。除了在印刷与图像输出方面的应用,数字半色调技术还应用于压缩存储、纺织以及医学等领域。因此,数字半色调技术具有重要的理论意义和使用价值。
众所周知,数字半色调技术是指基于人眼视觉特性和图像呈色特性,利用数学、计算机等工具,在二值(或多色二值)呈色设备上实现图像的最优再现的一门技术。数字半色调是利用人眼的低通特性,当在一定距离下观察时,人眼将图像中空间上接近的部分视为一个整体。利用此特性,人眼观察到的半色调图像局部平均灰度近似于原始图像的局部平均灰度值,从而整体上形成连续色调的效果。
根据数字半色调的应用特性和不同领域,人们提出了许多算法。按照算法的处理方式对之进行分类时,可分为点处理算法、邻域处理算法和迭代法。点处理算法是最简单的方法,这类算法利用数字方式来模拟印刷工业中传统的接触加网过程,其产生的半色调图像中的每个像素单元仅取决于像素的阶调。其中最重要的方法有半色调模板法和抖动法;邻域处理算法对连续调图像待处理像素的邻域内多个像素进行计算,以获得半色调图像的像素值。这类算法中较典型的是误差扩散算法;迭代法是一种迭代处理的算法,它需要多次比较计算以获得最优的半色调图像。所以,其计算量最大。本文主要介绍几种具有代表性的数字半色调算法。
一、有序抖动算法(ordered dither)
在这种加网算法中,将输入图像和一个周期的阈值矩阵(或称为加网矩阵)进行比较。阈值矩阵,这里N定义了阈值矩阵的周期。
对于一个特定的阈值矩阵t(n) ,其有序抖动加网算法可以如下描述:
(1)
输入图像 应该被归一化,即0≤x(n)≤1。当h(n)=0时,半色调输出的像素为白点,当h(n)=1时,半色调出的像素为黑点。阈值矩阵决定了当亮度减小时网点变成黑点的顺序,它也决定了半色调图像的质量。有序抖动算法随着阈值矩阵的不同设计而具有不同的特点,最简单的阈值矩阵是那种每个像素点都是固定值的矩阵:t(n)=0.5。如果对图像实行具有这种阈值矩阵的有序抖动算法,大多数存在连续调图像的细节被丢失,并且得到的相应半色调图像对比原连续调图像存在很大的失真。
一般的,有序抖动分为点聚集有序抖动和点离散有序抖动。点聚集有序抖动的加网矩阵被精心设计以模拟半色调处理过程。当连续调图像的像素密度减小时,网点将在像素的周围生成。点离散有序抖动的设计规则是由Bayer提出的。他的研究指出,非理想人工纹理的可见性可以通过对不同亮度等级的网点模式进行傅立叶分析得到。当一个一致色块的网点模式在不同波长都有成分时,有限波长中最长波长对应的成分就是可见度最高的成分。基于这个标准,Bayer设计了优化的加网矩阵,应用这个矩阵的点离散有序抖动得到的半色调图像包含了更多的可见细节。
尽管点离散有序抖动保留了更多的细节,但由于“网点增加”的原因,在实际应用中却经常使用点聚集有序抖动。网点增加是由打印机的非理想特性造成的,虽然可以假定理想的打印机能够产生具有预先定义的几何形状如方形的网点,但由于油墨从预先定义的几何形状向周围像素的扩散,就会产生网点增加现象。而当连续调图像的像素密度降低时,网点将从周围像素生成,所以点聚集有序抖动更易于阻止网点增加,从而在整体上减少了半色调图像中的网点增加效应。
二、误差扩散算法(Error Diffusion)
误差扩散算法是一种比较流行且半色调效果较好的算法,这种算法最早是由Floyed-Steinberg提出的。这种算法需要进行邻域处理,它能够为印刷机提供更高的半色调质量并且不引起网点增大,产生的半色调图像色调丰富,像素点的分布具有各向异性。
其基本思想是先按照一定的扫描路径阈值量化图像像素,然后将量化误差以一定的方式扩散到相邻的未处理的像素上。误差扩散的原理图如图一所示。
图一 误差扩散原理图
其中Q(.)为阈值量化函数, u(m,n)为该像素灰度值与部分量化误差的和,u(m,n)大于阈值时,Q(.)值为l,否则其值为0。e(m,n)为量化误差,x(m,n)为输入信号, x(m,n)∈[0,1]。对u(m,n)进行阈值处理得到表示信号b(m,n),b(m,n)∈[0,1]。H是误差扩散滤波器,滤波器系数为h(k,l)且有。
误差扩散算法可用下面的公式表示:
(2)-(4)
三、点扩散法(Dot Diffusion)
Knuth提出的点扩散半色调算法是一种企图保留误差扩散的优点的同时提供并行处理的一种算法。点扩散算法只有一种设计参数,即类矩阵C,它决定了像素被半色调处理的顺序,一个连续调图像像素的位置 根据被划分到IJ类中,I和J都是不变的整数。表格1是一个 的经典矩阵的例子,在表格中有64个数。
表1 8×8优化类矩阵
令 定义像素值被归一化的连续调图像,对于一个固定的k,我们处理所有属于k类的像素并且按如下公式定义半色调像素值:
(5)
误差 ,通过对 八个领域的观察,将那些具有更高类数的邻域的连续调值替换为原来的连续调图像像素值(例如,那些还没有被半色调处理的邻域)。简言之,具有更高类数的邻域被替换为:
对于直角邻域, (6-a)
对于对角邻域, (6-b)
其中,是为了保证加在所有邻域的误差的总和正好是。直角邻域有额外的参数2是因为水平和垂直方向的误差比对角方向的误差更易察觉。
之后,具有类数为k+1的连续调像素 也被做类似的处理,现在的像素值 已不再是原连续调像素值,而是根据公式(6)调整之后的值,算法中止后,信号 就是半色调结果。
图二 误差从一个像素点扩散到邻域
图二阐述了点扩散的过程,在矩阵中的数字是类矩阵的元素,带圆圈的数字是扩散系数的相关权重值,33的具有更高类数的邻域是58,45,42,40,63,47。在33处产生的误差被按照扩散系数的相关权重之和分成相应的等分,在本例中是2+1+2+1+2+1=9。然后在直角邻域分配e,在对角邻域分配2e。由于这里一共有64级,该算法分64步完成。
四、迭代半色调算法
迭代半色调算法的思想是先用一种简单的方法得到初始的半色调图像,然后对初始半色调图像进行迭代处理,使每次处理得到的半色调图像具有更小的误差,最后得到视觉最优的半色调图像。迭代半色调算法的优点是得到的半色调图像视觉效果非常优秀,基本上没有结构性纹理;能够正确地再现丰富的色调。但是基于这种算法的计算复杂度,迭代半色调算法一般很难用于实时处理场合,仅可以作为一种标准测试程序使用。
直接二值搜索法(DBS)应用一个HVS模型和设备模型来减少呈现的半色调图像和连续调图像之间的可见误差,HVS模型用一个线性移不变低通滤波器来表示。这个滤波器的频率响应如下定义:
(7)
其中 是视网膜对应角的频率变量,L是平均亮度,c=0.525 d=3.91。
让e[m,n]定义误差图像,并定义 (8)
其中,f[m,n]是连续调图像,g[m,n]是相应的半色调图像,则半色调图像和连续调图像之间的可见误差可以表示为 (9)
其中,X对应于输出设备的可寻址点的栅格;并且 是打印点与滤波器做了卷积,我们将假设 有更大的范围从而。
由DBS产生的整个半色调图像与原始图像的总误差为:
(10)
将(9)代入(10),E可以按如下公式计算
(11)
其中,是打印可寻址网格离散点 之间的交叉校正函数。
DBS用一个迭代的交换程序来减少误差E,这种算法从随机获得的初始半色调图像开始,按照从左到右,从上到下的顺序扫描整个半色调图像,对于半色调图像的每个像素,评价将像素取反和将其值与周围八个像素交换对得到的半色调图像质量的影响。如果任何的改变减小了误差,这种使得误差减小的变换就被保留,反复地在半色调图像上执行上述过程,直到整个过程没有任何变换操作,DBS算法结束。
五、小结
总的说来,在这些半色调算法中,产生的半色调图像质量最好的是迭代算法,但是由于过于复杂的计算量,一般不在实时处理算法中使用。误差扩散算法是目前最为流行的半色调算法,其产生的半色调图像无明显龟纹,视觉效果较好。抖动算法实现简单,但在阶调再现、空间分辨率和可见纹理等方面都存在一定的缺陷。而点扩散算法实现了并行处理,但半色调图像质量方面还有待改善。

本站服务
  • 资讯
  • 辞典
  • 期刊
  • 公司
  • 合作伙伴

    印刷问答

    人物专访

    问答搜索

    推荐展会

  • 最新资讯