opencv-中值滤波(Median filter)

  • Post author:
  • Post category:其他


【原理】


中值滤波(Median filter)是基于排序统计理论的有效抑制噪声的非线性滤波技术,基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值,它不依赖于邻域内那些与典型值差别很大的值。

优点:中值滤波无论是在消除噪声还是保存边缘方面都很有效率

缺点:需要对像素进行排序,花费时间长;去噪同时保留图像边缘细节,不适合细节很多的图像

步骤:1、 按强度值大小排列像素点    2、选择排序像素集的中间值作为点[i,j]的新值.

一般采用奇数点的邻域来计算中值

【原型】

c++: void cv::medianBlur( InputArray _src0,OutputArray _dst, int ksize )

参数1:InputArray类型的src,输入图像,填Mat类的对象即可。待处理的图片深度应该为CV_8U, CV_16U, CV_16S, CV_32F 以及 CV_64F之一

参数2:OutputArray类型的dst,即输出图像,与源图片有一样的尺寸和类型

参数3:Size类型的ksize,内核的大小,只能为奇数。

【实例】


#include "opencv2/core/core.hpp"
#include"opencv2/highgui/highgui.hpp"
#include"opencv2/imgproc/imgproc.hpp"

using namespace cv;

int main()
{
    //载入原图
    Mat image = imread("D:\\study\\picture\\a.jpg");


    //显示原图
    imshow("中值滤波【原图】", image);

    //进行中值滤波操作
    Mat out;
    medianBlur(image, out, 7);

    //显示效果图
    imshow("中值滤波【效果图】", out);

    waitKey(0);

    return 0;
}

结果:



版权声明:本文为weixin_43577679原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。