目录
12.2 周期性抖动算法
抖动点阵成像规律
12.2.1 聚簇型有序抖动
12.2.2 分散网点型有序抖动
12.2 周期性抖动算法
有序抖动滤波器是周期性抖动算法当中十分重要的一类。此处 “有序” 与前文的 “随机” 相对应:该类算法的核心思路是采用一个有限、确定、局部化的阈值函数,削弱量化误差之间的相关性。下文将展开详细阐述。
一幅数字图像可定义为平面上的点阵网格。取
的一个子网格
,其中
,
均为正整数。子网格
上的每一个 “像素” 称为抖动单元,即单个抖动单元由原网格内一块
的像素区块构成;
则被称作抖动网格。图 12.5 中的阴影区域即为一个
的抖动单元示例。
为每一个抖动单元定义阈值函数,单元内部的二电平量化便可便捷实现:对于单元内任意像素点
,若
,则像素亮度
量化输出为 1;反之则量化为 0。 在离散域中对阈值函数做离散采样,便可得到
阶的阈值矩阵,也就是抖动矩阵。图 12.6 从一维视角依次展示了:(a) 量化函数;(b) 量化函数的离散形式;(c) 抖动单元内原始图像像素值;(d) 经过量化后的单元输出图像。
上述基础框架可衍生出多种实现变体:阈值函数可逐抖动单元更换;也可通过定制阈值函数,分别生成聚簇型抖动或分散型抖动效果。
抖动点阵成像规律
由抖动算法原理不难看出,抖动处理存在空间分辨率‑灰度分辨率的固有权衡:像素被划分成若干独立抖动单元,依靠单元内部位图图案的平均亮度,便可渲染出更多中间灰度层级。对于一个的抖动单元,单元内可放置
个黑色像素,对应
个亮度等级;再加上单元无黑点的全白状态,单个抖动单元最多能够复现
个灰度层级。
注:上述统计并未考虑同一灰度下黑点的多种排布方案;点阵的最终排布形态完全由阈值函数决定。
输入一幅亮度从 0 至连续渐变的恒定灰度图像,便可直观观测各个灰度层级对应的网点图案形态。以如下抖动矩阵为例:
即可生成图 12.7 所示的 10 种不同点阵图案。
12.2.1 聚簇型有序抖动
聚簇抖动旨在通过数字手段复刻传统模拟照相半色调成像工艺。传统模拟半色调流程为:利用专用相机,将原图与网线屏叠加曝光,记录在高反差胶片之上。原图发出的光线先经过网线屏网格调制,再投射至胶片。网线屏上每一处微小开孔等效于一枚透镜,将图像局部区域的光线汇聚,最终在胶片上形成一个网点。网点尺寸由采样区域亮度决定:高亮区域生成小网点,暗区域生成大网点,且暗区网点往往会与周边网点发生重叠。最终网点网格的几何形态受网线屏参数、曝光时长等多重因素共同影响。
数字聚簇有序抖动通过对阈值函数进行设计,令黑点自动聚集,以此复现光学半色调的成像效果。 考虑抖动单元内一幅亮度恒定的图像。图 12.8 (a)(b) 通过绘制阈值函数曲线与恒定亮度值 k,演示量化执行过程。选取形态平滑规整的阈值函数 t,其水平集逆像:
将在抖动单元内部生成一条闭合曲线
。设计阈值函数使曲线
成为不自交的闭合环线,效果如图 12.8 (c)。量化规则十分清晰:环线
内部所有像素量化为 1,环线外部像素量化为 0;其离散实现结果见图 12.8 (d)。由此可见,黑点聚簇的外形轮廓完全由阈值函数的等值线形状控制。
对于亮度均匀的灰度图像,抖动生成的网点图案将在量化图像上周期性重复;而针对灰度动态变化的普通图像,阈值函数沿抖动网格周期性平铺,每个抖动单元内部黑白区域的占比,则跟随原图像素亮度实时调整。最终输出一批尺寸各异的像素簇,成像效果与传统光学半色调印刷高度近似。
图 12.9 (a) 给出一组用于实现聚簇抖动的有序抖动矩阵。该矩阵对应的阈值函数形态与图 12.8 (b) 保持一致。矩阵内的数值代表阈值的排序编号,并非绝对亮度值。由于矩阵包含
个阈值,可划分出 37 个独立亮度区间;各阈值对应的归一化亮度可理解为
。算法执行前,需将原图亮度归一化至区间
。
图 12.9 (b) 中,灰度像素代表阈值大于 50%,白色像素代表阈值小于 50%。若输入一幅亮度恒等于 50% 的图像,经过该抖动矩阵二值量化后,输出图像即为图 12.9 (b) 周期性拼接而成;若恒定灰度图像亮度高于 50%,图 (b) 的白色区域将收缩;亮度低于 50%,白色区域则向外扩张。 图 12.10 展示了采用该有序抖动矩阵,对测试图像执行 1 比特量化后的成像结果。
对角线网点排布
视觉感知研究表明:人眼对于周期性图案引入的图像伪影敏感度,会随图案旋转角度发生变化;当周期主轴与水平方向呈夹角时,人眼对伪影的感知程度最低。可利用该视觉特性,进一步优化聚簇抖动算法的成像质量。优化思路为定制阈值函数,驱使黑点簇沿 45° 对角线方向对齐排布。
菱形单元法是最简便的实现方案:将正方形抖动单元四等分,取四条边中点连接,构造出单元内接正方形(见图 12.11 (a));以此设计阈值函数,当输入亮度为 50% 时,量化后生成图 12.11 (b) 所示的黑白对角线点阵。
图 12.12 (a) 给出一组具体的抖动矩阵实例。该抖动单元共计 32 个像素,可区分 33 个量化灰度等级。图 12.12 (b) 中灰色像素代表阈值大于 50%,白色像素代表阈值小于 50%。 图 12.13 为使用该抖动矩阵处理图 12.1 测试图像后的效果,此时周期性网点呈现显著的 45° 对角线走向。
工程实践要点
前文已经说明:有序抖动算法以牺牲空间分辨率为代价,换取更高的灰度分辨率(可渲染的亮度层级总数)。抖动后图像的有效空间分辨率不再等同于显示设备的物理分辨率,而是由抖动网格分辨率决定;抖动网格分辨率才是决定图像观感质量的核心指标。当然,设备物理分辨率同样具备重要意义,它为单个抖动单元所能容纳的最大像素数量划定了上限。
类比传统模拟半色调工艺,抖动网格通常称作网线屏;抖动单元的排布密度称为网线密度(更精确的名称为网线分辨率),计量单位为线 / 英寸 (lpi)。
用好有序抖动的关键之一就是合理选定网线密度。网线密度越高,抖动图像成像质量越好;150 lpi 的网线屏,即便近距离观察,人眼也几乎无法分辨独立的抖动单元,本书配图 12.1 即采用 150 lpi 网线频率印刷;120 lpi 网线密度依旧能够输出优质效果。与之相对,图 12.13 网线密度约 35 lpi,图 12.10 网线密度约 30 lpi,成像效果差距明显,可参照图 12.14 进行对比。
高网线密度对设备分辨率提出更高要求:设备分辨率必须等于网线密度乘以抖动单元阶数。以图 12.1 为例:150 lpi 网线密度远低于本书照排机的物理分辨率。这意味着抖动单元尺寸较大(矩阵元素数量多),能够表现丰富的灰度层次;同时设备分辨率足够富余,人眼无法察觉抖动单元网格。
设备分辨率 ÷ 网线密度 = 抖动单元阶数;可区分灰度层级数约等于抖动单元阶数的平方。
如前文所述,修改阈值函数的形状即可改变其等值线轮廓,进而调整抖动图像黑点簇的几何形态。利用这一特性,可生成各类特殊的半色调视觉效果,示例如图 12.15。
12.2.2 分散网点型有序抖动
分散网点有序抖动优先适用于能够精准控制像素落点的图像输出设备,例如视频显示器。与聚簇抖动一致,该算法的核心同样在于抖动矩阵的选型。
聚簇抖动致力于复刻传统照相工艺生成的网点网格;分散网点抖动则对抖动矩阵内部的量化阈值进行排布优化,使抖动生成纹理的频率分布尽可能匹配原图纹理。尤其是在恒定灰度区域,输出抖动纹理应当最大限度抑制低频分量;实现手段是将所有量化阈值尽可能均匀地散布在抖动矩阵当中。
分散网点有序抖动在学术文献中亦被称作拜耳抖动 (Bayer 抖动)。B. Bayer 最早推导出一系列多阶抖动矩阵,这类矩阵可实现量化阈值分布的最大化均匀性。
拜耳抖动矩阵:
基于该矩阵生成的亮度分布效果见图 12.16。当区域亮度为 50% 时,最终输出纹理为棋盘格图案,由图 12.16 (c) 周期性平铺得到。
拜耳抖动矩阵:
不难观察到:矩阵内每 4 个一组的阈值区间(1‑4、5‑8、9‑12、13‑16),排布方式均与 2×2 拜耳矩阵当中 1‑4 四个阈值的分布完全一致。该特征来源于任意阶拜耳矩阵生成算法的递归特性。拜耳抖动的生成算法以及更多技术细节,可查阅本章 12.5 节所列参考文献。
图 12.17 展示了 4 阶拜耳抖动作用于图 12.1 测试图像后的成像效果。
前文已提及,分散网点抖动并不适合像素位置、尺寸难以精准控制的输出设备。其原因在于:网点尺寸的微小偏差,便会大幅改变单个抖动单元内的平均亮度。而聚簇抖动受该问题的影响较小:黑点本身就会聚集成团,网点尺寸的偏差只会改动簇的边缘轮廓。 反之,当设备可精准管控像素位置与尺寸时,分散网点抖动更具优势:图像人眼感知上的等效分辨率会高于抖动网格本身的物理分辨率。
综上,分散网点抖动算法(尤以拜耳抖动为代表)被大量应用于帧缓存位深不足(可同时寻址的色彩分辨率比特数有限)的显示器,用于图像抖动补偿。
在设备分辨率给定的前提下,从视觉效果角度对比,拜耳抖动性能远优于 12.1.1 节介绍的随机调制抖动,且二者计算开销基本持平。因此随机调制抖动现已极少落地于工程实践,其价值更多停留在历史参考与学术研究层面。