一种抑制undershoot/overshoot锐化算法介绍

Posted 浩瀚之水_csdn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一种抑制undershoot/overshoot锐化算法介绍相关的知识,希望对你有一定的参考价值。

一、USM

       当增强图像的边缘、细节信息等高频信息时,图像的锐化视觉效果会得到较大提升。提高图像锐化的一种经典算法为非锐化掩码(UNsharp Masking)技术。该技术首先通过高通滤波并与缩放系数相乘,其结果再与原始图像相加,即可对高频信息进行增强。其主要的原理如下图所示:

 

其中,对图像进行高通滤波的另一种等效方法为:原始图像减去原始图像的低通滤波图像,其结果被称之为“掩码”。因此,上述的USM方法可以表示为:

      1. 原始图像减去原始图像低通滤波之后的图像得到掩码M。


    2.掩码M与控制锐化强度的权重系数α相乘之后,再与原始图像相加即可得到锐化的图像。

 

      通常来说,USM算法中低通滤波会使用较为常用的高斯滤波。USM算法中高斯滤波的标准差一般是1到20,锐化控制系数α一般为0.2到4.0。下图展示的是高斯函数中不同标准差,相同锐化控制系数的USM效果。 

 

        尽管USM实现简单,并且能够适用于大部分应用场景,但是输出图像会有明显的过冲或低冲伪影。为了消除过冲和低冲伪影,必须对对过冲和低冲伪影进行适当控制。


过冲和低冲示意图

 

二、ADSOC-Adaptive Directional Sharpening with Overshoot Control

 1. 亮度提取。该算法从RGB空间转换到YUV空间,对亮度信息Y进行锐化处理。


    2.图像纹理区域分析。利用如下图的5*5的高通滤波作用于原始图像,用以区分纹理区域和平坦区域。图像中每个像素经过下述高通滤波处理,进行粗边缘的检测,其结果与用户设置的阈值Th1比较。若是大于该阈值,则认为该像素落入了纹理区域,将进行后续的步骤处理,否则,保留原始像素值。

 

 

3.锐化益计算。使用以下方向滤波计算锐化增益并判断其边缘方向。使用以下滤波器是为了更加精确检测边缘。如果某一像素的通过以下某一个边缘检测器检测的结果大于预先设置的阈值Th2,则认为该像素是边缘像素,需要进行锐化处理。

 

添加到原始像素的增益可以表示为:

 

 

其中,gain为锐化增益控制系数,范围为[0,128]。

4.unnder shoot/overshoot 控制。为了控制锐化带来的undershoot、overshoot,引入这个模块。undershoot、overshoot在图像中各自可能表现为黑边黑点、白边白点或者是图像人脸或线条有毛刺、不平滑的毛刺噪声。该模块利用像素的局部信息对锐化Under shoot/overshoot 进行控制。

 

Pout=Pin+Sharp,添加到原始像素的”sharp”值由前三步计算得出。对于N*N大小(N=5,取决于第二、三步的滤波模板大小)。如果锐化后的输出像素大小Pout落入[Min,...,Max]范围,其中Min=minimum(N,N),Max = Maximum(N,N),则Pout不做任何处理;如果Pout超过[Min,...,Max]范围,则在邻域最大值或最小值(未进行锐化处理的邻域)左右进行适当增强或减小。 


————————————————
版权声明:本文为CSDN博主「大熊背」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lz0499/article/details/119544500

以上是关于一种抑制undershoot/overshoot锐化算法介绍的主要内容,如果未能解决你的问题,请参考以下文章

zabbix告警抑制

有没有一种简单的方法来抑制 Oracle 中集合的 XML 行标记?

PHP 通知抑制;只有某些情况/方法

如何在锐龙平台上安装CentOS

抑制 MatPlotLib 良性警告 [重复]

星网锐捷5800ub怎样连接无线路由