OpenCV图像平滑原理之均值滤波、中值滤波、高斯滤波和高斯双边滤波原理

it2026-01-27  4

 

图像平滑  

        图像平滑是一种区域增强的算法,平滑算法有邻域平均法、中值滤波、边界保持类滤波等。在图像产生、传输和复制过程中,常常会因为多方面原因而被噪声干扰或出现数据丢失,降低了图像的质量(某一像素,如果它与周围像素点相比有明显的不同,则该点被噪声所感染)。这就需要对图像进行一定的增强处理以减小这些缺陷带来的影响。图像平滑有均值滤波、中值滤波、高斯滤波和高斯双边滤波等。

1.均值滤波:

用其像素点周围像素的平均值代替元像素值,在滤除噪声的同时也会滤掉图像的边缘信息。

均值滤波API:blur(Mat src,Mat dst,Size(xradius,yradius),Point(-1,-1));

2.中值滤波:

中值滤波用测试像素周围邻域像素集中的中值代替原像素。中值滤波去除椒盐噪声和斑块噪声时,效果非常明显。

中值模糊API:medianBlur(Mat src,Mat dest,kszie);

3.高斯滤波:

图像上的像素实际上是坐标离散但是值却连续的,因为越靠近的点关系越密切,越远离的点关系越疏远。因此,加权平均更合理,距离越近的点权重越大,距离越远的点权重越小。

高斯模糊API:GaussianBlur(Mat src,Mat dst,Size(11,11),sigmax,sigmay);

运用了一维的高斯的正态分布的密度函数:

其中μ是x的均值,σ是x的标准差。由于每次计算都以当前计算点为原点,所以μ等于0。

       二维公式如下图:

实际图像应用如下:

代入公式计算得出:

归一化后结果为:

如果x和y的标准差未知,有以下公式计算得出:

4.高斯双边滤波

双边滤波只是比高斯滤波多了一种掩膜而已。两种掩膜都是套用高斯分布公式得出来的,只是其中的代表的含义不同而已。求第一个掩膜所用的高斯分布中,代表掩膜中每一个点的位置,其中为掩膜中心的位置;求第二个掩膜所用的高斯分布中,代表掩膜中每一个点的像素亮度值,其中为掩膜中心的像素亮度值;(这里有一个是需要注意的:第二个掩膜是需要每次都求取的,因为像素的亮度值无法预先确定,不是维持一个固定不变的pattern)。这就是双边滤波,不光考虑了像素在空间中位置远近程度的影响,还考虑了像素亮度相近程度的影响。

双边模糊API:bilateralFilter(src,dest,d=15,150,3);

15---计算的半径,半径之内的像素都会被纳入计算,如果提供-1,则根据sigma space参数取值             

150—sigma color 决定多少差值之内的像素会被计算

3—sigma space如果d的值大于0则声明无效,否则根据它来计算d值

最新回复(0)