半色调(Halftoning)技术

本文详细介绍了半色调技术,包括灰度图像的半色调实现原理,有序抖动法(如有序抖动算法、临界值矩阵与网点结构)以及误差扩散法的工作机制。两种方法各有优缺点,展示了半色调技术在打印机应用中的重要性。
摘要由CSDN通过智能技术生成

什么是半色调技术

半色调技术是指用少量的色彩将一幅连续色调图像(如灰度图像和彩色图像)量化为只有少数几种色彩的彩色图像或是一幅二值图像,并且量化后图像在一定距离的视觉效果和原始图像相似的技术 。对于二阶调来说,就是用黑白两种颜色,来展示不同深度的灰度,从而模拟出灰度图像,简单来说就是让二阶调的图像产生连续调的感觉。这项技术被广泛用于打印机上。

Notice:本文暂时只讨论灰度图像的半色调方法

如何实现图像的半色调变化

半色调技术可以实现的原因是利用人眼的低通特性,人类视觉系统在观察图像时,人眼将图像中空间上接近的部分视为一个整体,倾向于对像素周围的区域进行平均处理,而不是逐个分析每个像素。半色调技术中,图像的色调变化是靠网点面积大小或网点覆盖率来表现的,它将图像分成许多点,通过点的不同大小(或频率)来表现颜色的深浅。对于二值图像,墨点出现的频率(或面积的大小)跟灰度成正相关,也就是说图像颜色越深,墨点出现的频率应该越高(或面积越大),反之颜色越浅,出现的频率就越低(或面积越小)。

半色调技术种类:

应用与打印机上的半色调技术的方法主要有两种,分别是有序抖动法和误差传递法。

有序抖动法 (Ordered dithering)

有序抖动法(点阵调色法)其实是一种通过构造一个临界值矩阵,然后把原始图像像素与临界值矩阵进行对比,来对原始图像进行二值化替换实现半色调技术的方法。有序抖动法依照临界值矩阵来决定输出网点的形状和大小,设计不同的临界值矩阵便可产生不同的网点结构,并通过这些结构的二阶灰度来制造多阶灰度的错觉,从而实现灰度图像的半色调变换。例如,我们可以用一个 2 × 2 2\times 2 2×2的矩阵来模拟5种不同的灰阶变化。
在这里插入图片描述

​ 图1: 二阶灰度模拟示意图

同样地,使用一个3*3的矩阵,我们可以模拟出10个不同的灰度级别,通过这些不同结构的矩阵来替换原图像。有序抖动法就是通过这样对原图像进行逐个像素的替换来达到模拟原图像,从而对原始图像实现半色调的技术。

有序抖动半色调方法的执行步骤
  1. 先将输入图像分割成大小相同的不重叠区域,每一块区域的大小和将要构造的临界值矩阵的大小相同,在有序抖动算法中,我们就是要用二进制图案替换分割出来的图像不重叠区域。(问题:当输入图像没法分割成整数的不重叠区域时,不完整的边界区域怎么处理?)

  2. 根据需要构造临界值矩阵 T N × N T_{N\times N} TN×N,有序抖动半色调法大致分为两种,一种是集中式网点,另一种是分散式网点,它们之间的运算原理都相同,但是两者所使用的临界值矩阵不同,抖动算法的关键是临界值矩阵的构造。

  3. 对于每个原始像素,先将像素灰度值 I ( x , y ) I(x,y) I(x,y) 通过公式(1)映射到定义的临界值矩阵的范围,得到新的图像 M ( x , y ) M(x,y) M(x,y)

M ( x , y ) = N 2 × ( 1 − I ( x , y ) 255 ) M(x,y) = N^2 \times (1 - \frac{I(x,y)}{255}) M(x,y)=N2×(1255I(x,y))

  1. 分别把原始图像分割出来的不重叠区域中的每个像素与临界值矩阵 T T T 中对应位置元素进行比较,从而得到经过有序半色调方法后的二值图像区域 H ( x , y ) H(x,y) H(x,y)

H ( x , y ) = { 1 if  M ( x , y ) ≥ T ( x , y ) , 0 if  M ( x , y ) < T ( x , y ) H(x,y) = \left\{ \begin{array}{rl} 1 & \text{if } M(x,y) \ge T(x,y),\\ 0 & \text{if } M(x,y) < T(x,y) \end{array} \right. H(x,y)={10if M(x,y)T(x,y),if M(x,y)<T(x,y)

  1. 循环执行步骤4,直到把整个原始图像都进行二值替换,从而完成对原始图像的半色调转换。
有序抖动半色调方法的效果展示

下图是使用大小为 2 × 2 2\times2 2×2 4 × 4 4\times 4 4×4 8 × 8 8\times8 8×8 的临界值矩阵进行有序抖动半色调的结果。
在这里插入图片描述
图2:有序抖动半色调法图像

有序抖动半色调方法总结

有序抖动算法比较简单,且具有较好的半色调图像质量。另外,由于有序抖动法是以每一个相同大小的临界值矩阵为单位进行二阶化的,所以在高解析或大尺寸图像时可以用并行处理的方式进行运算。但其也具有致命的缺点,即含有明显的周期性人工纹理。即使抖动矩阵设计的非常完美,其输出的半色调图像依然存在瑕疵,且其半色调图像质量不如通过误差扩散算法获得的半色调图像。

误差扩散法(Error Diffusion)

在有序抖动处理中,利用了像素点与抖动矩阵比较来判断是否在一个位置放置微点,实质是一种点处理过程。在1976年Floyd和Steinberg提出了误差扩散算法,它将半色调加网从“点处理”过渡到“邻域处理”。误差扩散算法的提出为半色调加网带来了革命性的技术变革,也是半色调技术上的里程碑,并促进了半色调技术的飞速发展。通过误差扩散处理后的半色调图像像素分布各异且无规律性,色调丰富,视觉效果较好。直到目前为止,它依然被视为易于实现且视觉效果较好的半色调技术之一,被广泛应用。

误差扩散法的原理

误差扩散法的主要原理是将输入图像的像素点与设定的阈值进行对比,根据像素值与所设定的阈值之间的误差,借着不同的权重矩阵将误差扩散至其相邻尚未处理的像素点。下图是误差扩散系统的流程示意图:

在这里插入图片描述 图3 : 误差扩散(Error Diffusion)系统流程示意图

连续色调数字图像的像素 J [ n ] J[n] J[n]以线性方式、从左到右、从上到下进行处理。 在每一步中,该算法都会将当前像素的灰度值(用 0 到 255 之间的整数表示)与某个阈值(通常为 128)进行比较。 如果灰度值大于阈值,则该像素被视为黑色,其输出值 I [ n ] I[n] I[n] 设置为 1,否则被视为白色, I [ n ] I[n] I[n] 设置为 0。 像素与原始灰度的差值和阈值被视为错误。 为了达到连续色调错觉的效果,根据 Floyd 和 Steinberg1 (FS) 提出的图 2 所示的矩阵,该误差被分配到尚未处理的四个相邻像素。

在这里插入图片描述 图4 : 将误差分数分布到四个相邻像素的扩散矩阵

Fan 提出了对上述误差扩散矩阵的一个小修改。 新的矩阵被认为是在不增加算法总工作量的情况下提高抖动图像的质量,如图3所示。

在这里插入图片描述 图5 :改进的扩散矩阵

误差扩散半色调效果展示

下图是使用不同的误差扩散矩阵所得到的效果图;

在这里插入图片描述

误差扩散半色调方法总结

从整体上看,误差扩散的效果是很好的。目前已有的最好的半色调效果仍是基于误差扩散方法。误差扩散也有不足之处。从速度上看,中值阈值法对每个像素只做一次比较运算,速度很快。而误差扩散要进行大量的乘除法运算,速度相对较慢。

参考文献 :

[1] 半色调技术简介_残月飞雪的博客-CSDN博客 https://blog.csdn.net/majinlei121/article/details/49335693?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-49335693-blog-115286313.235v38pc_relevant_anti_vip_base&spm=1001.2101.3001.4242.1&utm_relevant_index=3

[2] 关于颜色抖动(dithering) - 知乎 (zhihu.com) https://zhuanlan.zhihu.com/p/510251407

[3] Half-Toning: Ordered Dithering. https://medium.com/chennuri-prateek/half-toning-ordered-dithering-4792ba8f2361

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值