本文介绍的内容为Photoshop中的图像锐化算法,USM-Unsharp Mask算法。这个算法的英文名字有些自相矛盾,既然是锐化算法,却命名为Unsharp,主要还是因为其算法的实现思路,有别于传统的USM算法,避开了高通滤波的操作,而是使用低通滤波达到图像锐化的效果。
作为一种关键的数字图像后处理操作,锐化算法可以用于提升图像中的细节展现效果,使得观看者获得更加细腻的感官体验。USM算法作为一种常用的锐化算法,主要是提升图像中原有细节内容的表现强度,并不会增加额外的细节信息。
算法基本原理
Step 1 使用低通滤波(均值/中值/高斯/双边/...)对原始图像进行模糊操作,BlurImg = LPF(OrgImg)
Step 2 使用原始图像减去模糊图像,产生细节信息掩模(Unsharp Mask),USMImg = OrgImg - BlurImg
(类似于使用高通滤波获取细节信息)
Step 3 将细节信息掩模与原始图像进行叠加,增加边缘的对比度,FinalImg = OrgImg + Gain * USMImg
下图展示了TEXT文本图像的USM算法的处理过程。
说到这里,可能有的同学就会表示不解,为啥分辨率没有增加,文本的边缘却会变得更清晰呢?看下图,在保持分辨率不变的情况下,USM算法是通过提升边缘的锐利度,进而达到改善图像清晰度的效果。(请见《清晰度(Sharpness)》)
注意:在摄影领域,USM算法早有应用,更多是用于提升局部对比度,而非小范围的细节增强。对于传统的胶片摄影,通常会使用不清晰的胶片作为蒙版,与原始底片进行组合打印,以便于提升图像的局部对比度。
视觉机理
为什么这种亮暗变化的上冲/下冲能够有效地提升清晰度呢?实际上,人眼在亮度急剧转换的边缘会看到所谓的“马赫带”,这是由物理学家恩斯特·马赫(Ernst Mach)在1860年代发现的,“马赫带”效应增强了我们识别边缘细节的能力。
“马赫带”效应是指视觉的主观感受在亮度有变化的地方出现虚幻的明亮或黑暗的条纹,这些马赫带其实并不存在,它是由人类的视觉系统造成的,是不同亮度区域的边界在人眼中的过冲响应。人眼一般只能感知32个级别的灰度,相当于5位的亮度表示,再多眼睛便难以区分辨别了,如下图所示。
需要注意的是,每一阶的亮度值并非恒定的,如下图所示,其右侧更亮,左侧更暗。
实际操作
在Adobe Photoshop软件中,可以通过Filter > Sharpen > Unsharp Mask,打开Unsharp Mask调整页面,其中包含三个调整项:Amount,Radius,Threshold。
- Amount用于调整上冲的幅度,以及边缘处的对比度,设定值越大,对比度越高。
- Radius用于调整模糊滤波半径,可以控制模糊掩模的细节多少,半径值越大,边缘越明显。
- Threshold用于设定需要进行锐化处理的最小亮度变化,可以实现一方面锐化明显的边缘,同时保持细微的边缘不变。这对于避免放大噪音,或者在不使皮肤纹理变粗的情况下令睫毛变尖,特别有用。
可能导致的问题
USM算法在用于清晰度增强时,也可能会导致一些问题,比如由于过度的上冲导致的边缘虚影(Halo现象)。如果上冲或者下冲过大,可能会产生明显可见的虚影,从而影响到图像呈现的效果质量。
通过调小USM算法的半径设定值,可以有效地降低虚影。
另外,在使用USM算法对RGB值进行处理时,由于相邻RGB像素值的过冲变化,可能会引起轻微的色偏问题。特别是纹理丰富的图像内容,RGB值的轻微变化,可能就会看到明显的异常彩色边缘的出现,如下图所示。当从灰色背景中移除部分红色,便会出现中间子图的色偏问题(请见《色彩认知》)。如果USM算法仅用于亮度通道,便可以避免色偏,其效果如右边子图所示,上冲表现为浅红色,下冲表现为深红色。