首页 > 编程笔记 > C++笔记 阅读:1

OpenCV medianBlur()函数的用法(附带实例)

中值滤波用像素点领域灰度值的中值来代替该像素点的灰度值,也就是说用一片区域的中间值来代替所有值,这可以除去最大值和最小值。中值滤波对除去斑点噪声和椒盐噪声很有用,缺点是中值滤波花费的时间在均值滤波的 5 倍以上。

中值平滑也有核,但并不进行卷积计算,而是对核中所有像素值排序得到中间值,用该中间值来代替锚点值。中值滤波在数字图像处理中属于空域平滑滤波的内容。

在 OpenCV 中,利用 medianBlur() 来进行中值平滑,其声明如下:
void cv::medianBlur ( InputArray  src, OutputArray  dst, int ksize );
各个参数的含义如下:
【实例】实现中值滤波。
1) 打开 Qt Creator,新建一个控制台工程,工程名是 test。

2) 在工程中打开 main.cpp,输入如下代码:
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

using namespace cv;
int main()
{
    Mat image = imread("lady.png"); // 载入原图
    namedWindow("src"); // 创建窗口
    namedWindow("median filtering"); // 命名窗口
    // 显示原图
    imshow("src", image);
    // 进行中值滤波操作
    Mat out;
    medianBlur(image, out, 7); // 输入,输出,孔径为 7
    // 显示效果图
    imshow("median filtering", out); // 显示中值滤波效果图
    waitKey(0);
}
在上述代码中,我们对图片进行了孔径为 7 的中值滤波。

3) 保存工程并运行,结果如下图所示:

相关文章