右图为一个二值图像,即非0即1,但由于人眼系统的局限性(类似于低通滤波器),我们关注于区域级别的信息而不是像素级,在一定距离时,会感觉到右图是一副灰度图(错觉illusion),即人眼系统对像素值进行了加权(看到的某些像素应该是介于(0, 1)直接的值)。
有效的数字半色调可以以最小的成本大幅提高渲染图像的质量。
为什么要用到半色调技术?
- 降低灰度/颜色分辨率的例子
- 激光打印机,要么落墨、要么不落墨
- 半色调是图像的字长缩减
- 半色调试图在保持质量和空间分辨率的同时再现全范围的灰色/彩色
- 阈值抖动法
- 随机调制法
- 有序抖动法
- 误差传播法
测试半色调法两张常用的图像。
阈值抖动法
- 对于每个像素(归一化到[0, 1.0],标准灰度图的灰度等级为[0, 255],将每个像素值除以255即可):如果亮度(intensity,这里指归一化后的灰度值)<0.5,用黑色替换,否则用白色替换;
- 为了保证图像的整体亮度不变:
- 计算整张图像的平均亮度(平均灰度值);
- 使用给定平均值的阈值;
- 例如,如果平均亮度为0.6,则使用一个高于40%的像素、低于其余60%像素的阈值;
- 对于所有的抖动,我们将假设图像是灰度的,并且强度被表示为[0, 1.0]中的一个值(半色调后的灰度等级可以理解为白板上黑色像素所占的面积)。
此时观察这两幅图像,直观上就能感觉出两幅图是二值图像,并非灰度图像。
中间图像即将图像整体的平均灰度作为阈值,但这样可能黑点的数量高于平均灰度值,随机将黑点翻转为白点,如右边图所示(黑点的个数/整幅图像像素点个数 = 二值图像的平均灰度值)。
半色调技术的原理与点画法相同。
随机调制法
- 在阈值设置之前,给每个像素添加一个随机的数值
- 通常从[-a, a]中添加均匀的随机量
- 将纯的噪声添加到图像
- 为了更好的结果,添加更好质量的噪音
- 例如,使用高斯噪声(从正态分布中采样的随机值)
- 应使用与之前相同的程序/步骤来选择阈值
- 对黑色与白色不好,但对更多的颜色还可以
- 在找到表格中最接近的颜色之前,给每个像素添加一个小的随机颜色
虽然更像灰度图,但对灰度图像效果并不好。
有序抖动法
有序抖动是一个点过程,通过将单一的连续音输入值与一个确定的周期性阈值阵列(抖动矩阵,大小为2的幂次方)进行比较来产生输出;
首先要根据抖动矩阵(模板)的大小来对图像进行划分,图像块大小与抖动矩阵大小相同,实际要比较的阈值为,(模板对应值+0.5) / 模型大小的平方,N为模板的尺寸。
效果比前一次更像灰度图,因此采用的是区域的模板,在平滑的区域(背景)会产生一些均匀的纹理。
矩阵的大小和数值的排列对抖动过程有重要影响;
两种常见的抖动矩阵模式:聚合模式和分散模式:
- 聚合模式:如果连续的阈值在空间上相近,那么它就被称为 "聚合模式";
- 分散模式:阈值均匀地分布在矩阵中。
- (a) 聚合模式:小的数值均聚集在中间,大的数值分散在周围;
- (b) 分散模式:小的数值和大的数值相互交叉。
聚合模式的特征:
- 相对明显的纹理(如前面平滑区域的均匀纹理);
- 细节表现相对较差(脸部的阴影,头发丝的细节不明显);
- 整个灰度等级内的纹理均匀;
- 对于非理想输出设备具有的稳健的性能 (优点,早期的报纸印刷业通常使用聚合模式,墨汁滴到纸上会渗开来,周围的阈值比较大,渗墨现象不会造成太大干扰)。
相比于聚合模式,阴影部分展现的更好。
分散模式的特点:
- 在任何包含K个点的区域内,K个阈值应尽可能均匀地分布;
- 用于表示单个灰度等级的纹理的可见度很低;
- 提升了细节表现;
- 对应于不同灰度等级的纹理之间的过渡可能更加明显;
- 对不理想的设备不具有稳健性。
误差传播法
- 使用邻域操作对每个像素进行量化,而不是简单的点状操作;
- 在扫描曲线中移动图像,将结果量化,并将误差向前推;
- 可以产生比屏幕更好质量的图像。
变化:哪些邻近的像素受到影响?
第一次:threshold为0.5。
当前像素点对未来的像素点产生影响。
两种不同的滤波器。
视觉效果相比于前面的三种方法看着更像灰度图。