【原理】
中值滤波(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 版权协议,转载请附上原文出处链接和本声明。