Unsharp Mask(USM)锐化算法的的原理及其实现

 本文主要内容转载自: http://nkwavelet.blog.163.com/blog/static/22775603820144972816936/
      本人在参考了以上blog内容基础上,结合自己的经验和代码实验写下以下内容。

1.  基本原理
     首先说明一点,Photoshop的USM锐化只是本文所指USM的一种比较特殊的例子而已。
     通过增强图像的高频部分的内容,图像的视觉效果可以极大的得到改观。为达到这个目的,通常可以使用经典USM技术来实现。这个技术的流程可用下图来实现:

Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界

 用具体的公式表达即为:  
                y(n,m)= x(n,m)+ λz(n,m)                           (1)

 其中, x(n,m)为输入图像,y(n,m)为输出图像,而z(n,m)为校正信号,一般是通过对x进行高通滤波获取。λ是用于控制增强效果的的一个缩放因子
 在传统的USM算法中,z(n,m)一般可以通过下式获取:
z(n,m)=4x(n,m)-x(n-1,m) -x(n +1,m)-x(n, m-1) -x(n,m+1)     (2)
当然也可以用如下的模板:

Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界

2.  参考代码

 Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界

3. 效果图
Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界    Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界
原图(分辨率512x512)                            Amount=25 
Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界    Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界
                                                 Amount=50                                                      Amount=75 

 Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界    Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界

                                                 Amount=100                                                 Amount=125
       本人机器配置是CPU 3.4G,内存8GB,以上lena图片处理的时间大约是25-30毫秒。接下来再看另外一组效果图:
Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界    Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界
                                      原图(分辨率708x812)                                          Amount=100

Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界    Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界
                                                   Amount=200                                  Amount=300
4. 缺点
   1) 线性的高通滤波使得效果对噪音非常敏感,这会导致一些不希望的扭曲,特别在图像变换比较缓慢的地方的噪音,比如上图6(Amount=125)中草帽的左侧平坦区域。
   2)对于图像的边缘(高对比度区域)会出现增强过头的现象,如上图草帽的边缘。 
   这两点会导致输出图像存在一些令人看上去不舒服的地方。

5. 改进    
    很多论文中提出了一些自适应通过动态的改变式(1)中的λ参数来控制调节结果。在图像的变换比较平坦的区域,λ取值小,在较大的对比度(边缘处)地方取适当的λ,而在中对比度处取较大的λ值,以使得这部分的得到最大的增强。 比如这篇文章
 Image Enhancement via Adaptive Unsharp Masking 中就提出了一种逐步更新的方式。不过类似这样的文章都普遍存在一个问题,那就是可控参数过多,且这些从参数的取值需要过多的人工参与,我认为这样的算法,是不具有实用的价值的。
    在Photoshop的锐化菜单中也有一项USM锐化,其实这个功能也是符合式1的定义的。通过其UI界面我们可以发现其有3个参数:半径、数量、阈值,其内部的算法过程可以用如下的简单代码表示:

Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界

    众所周知,高斯模糊是低通滤波,那么 Value = Pointer[X] - PointerC[X](原值-低通)则相当于高通的结果,如果原值和低通的差异的绝对值大于指定的阈值,则对改点进行所谓的锐化。这里对式(1)多引进了一个参数阈值,通过调节该值,来决定达到何种程度对比度的像素才需要增强。
     实际的效果表明,这种方式的锐化要比传统的USM锐化能获得更好的调节效果。
有关高斯模糊的算法可参考:待写!!!

6. 改进的效果图
     以下以threshold=0,radius=0.849(即3x3高斯模糊模板为:{1,2,1, 2,4,2, 1,2,1} )为例来看看改进的USM效果:

Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界    Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界
                                                   Amount=50                                     Amount=100

 Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界    Unsharp Mask(USM)锐化算法的的原理及其实现 - nkwavelet - 小波的世界

                                                Amount=125                                     Amount=200

     采用上述高斯模糊改进的USM算法,处理时间大约是50-60毫秒之间。由上面的图可以看出效果比最初的USM算法要好,边缘越发明显,但是所有的调节后的图像都未出现明显的噪音增强,效果非常之理想,对于Lena图,处理后的图片中可以明显的看出在眼睛部位,眼白和眼球的对比更为清晰、明显,而且整幅图形从感觉上说原始图像较为朦胧,处理后的清晰不少。
     Amount参数对效果的影响很明显可以获知,越大,对比度越高,但是由于其和结果的线性关系,这个参数的变化对结果的影响比其他两个参数更敏感。实际上,上述高斯模糊也可以用中值模糊、方框模糊来代替,所得到的效果和高斯滤波非常相似。在Paint.net的效果-》相片-》尖锐化滤镜就是用的中值的方式实现的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值