平滑空间滤波器

Posted zhangqixiang5449

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了平滑空间滤波器相关的知识,希望对你有一定的参考价值。

平滑线性滤波器,均值滤波

平滑线性空间滤波器的输出(响应)是包含在滤波器模板邻域内的像素的简单平均值。这些滤波器有时也称为均值滤波器。也可以把它们归入低通滤波器。
这种处理的结果降低了图像灰度的尖锐变化。由于典型的随机噪声由灰度级的急剧变化组成,因此常见的平滑处理的应用就是降噪。
然而,由于图像边缘(几乎总是一幅图像希望有的特性)也是由图像灰度尖锐变化带来的特性,所以均值滤波器处理还是存在着不希望有的边缘模糊的负面效应。
下面这幅图中的是最为常见的简单平均的滤波器模板:

一种加权平均的均值滤波器:

在这个例子所示的模板中,中心位置的系数最大,因此在均值计算中可以为该像素提供更大的权重。其他像素离中心越近就赋予越大的权重。
这种加权重的策略的目的是,在平滑处理中,试图降低模糊。

均值滤波公式

openCV的均值滤波器:

void menValueFilters()
    auto im = imread("/Users/qixiangzhang/Desktop/openCV/jy.png");
    Mat dstIm_5;
    Mat dstIm_9;
    Mat dstIm_15;

    blur(im, dstIm_5, Size(5,5));
    blur(im, dstIm_9, Size(9,9));
    blur(im, dstIm_15, Size(15,15));

    imshow("Original",im);
    imshow("blur5", dstIm_5);
    imshow("blur9", dstIm_9);
    imshow("blur15", dstIm_15);

原图&结果:

滤波后的图像中可能会有黑边。这是由于我们用0(黑色)填充原图像的边界,经滤波后,再去除填充区域的结果,某些黑的混入了滤波后的图像。对于使用较大滤波器平滑的图像,这就成了问题。


统计排序滤波器,中值滤波

统计排序滤波器是一种非线性空间滤波器,这种滤波器的响应以滤波器包围的图像的像素的排序为基础,然后使用统计排序结果决定的值代替中心像素的值。
这一类中最知名的就要数中值滤波器:将邻域的灰度排序,将中间值赋予滤波后图像中的相应像素点。对处理椒盐噪声(脉冲噪声)十分有效。
摘自96页:

统计排序滤波器除了中值滤波还有其他的选择方式,例如选择最大值(最大值滤波器),最小值等。

openCV中的中值滤波器:

void midValueFilters()
    auto im = imread("/Users/qixiangzhang/Desktop/openCV/jy.png");
    Mat dstIm_5;
    Mat dstIm_9;
    Mat dstIm_15;

    medianBlur(im, dstIm_5, 5);
    medianBlur(im, dstIm_9, 9);
    medianBlur(im, dstIm_15, 15);

    imshow("Original",im);
    imshow("blur5", dstIm_5);
    imshow("blur9", dstIm_9);
    imshow("blur15", dstIm_15); 

以上是关于平滑空间滤波器的主要内容,如果未能解决你的问题,请参考以下文章

中值滤波器(平滑空间滤波器)基本原理及Python实现

每日一练之自适应中值滤波器(基于OpenCV实现)

中值滤波与图像锐化

数字图像处理,中值滤波和均值滤波及其改进算法的C++实现

中值滤波与图像锐化

Python从零到壹丨详解图像平滑的两种非线性滤波方法