OpenCV(medianBlur())

发布时间 2024-01-03 13:19:02作者: 做梦当财神

cv::medianBlur 是OpenCV库中用于中值滤波(Median Filtering)的函数。中值滤波是一种非线性滤波技术,它用局部区域内像素值的中值来替代中心像素值。这种滤波方法对于去除图像中的椒盐噪声或脉冲噪声非常有效,因为中值滤波可以保留图像的边缘信息。

该函数的声明如下:

void cv::medianBlur(
    InputArray src,
    OutputArray dst,
    int ksize
);

其中:

  • src 是输入图像,可以是单通道或多通道的图像。
  • dst 是输出图像,与输入图像具有相同的尺寸和通道数。
  • ksize 是中值滤波的卷积核大小。通常,ksize 应该是一个奇数,因为中值是通过对区域内像素排序来计算的。

以下是一个简单的例子,演示如何在C++中使用 cv::medianBlur 进行中值滤波:

#include <opencv2/opencv.hpp>

int main() {
    // 读取图像
    cv::Mat image = cv::imread("image.jpg");

    // 定义卷积核大小
    int ksize = 5;

    // 应用中值滤波
    cv::Mat median_filtered;
    cv::medianBlur(image, median_filtered, ksize);

    // 显示原始图像和中值滤波后的图像
    cv::imshow("Original Image", image);
    cv::imshow("Median Filtered Image", median_filtered);
    cv::waitKey(0);

    return 0;
}

在这个例子中,cv::medianBlur 函数将图像进行中值滤波,并将结果存储在 median_filtered 中。你可以调整 ksize 的值来改变滤波的程度。需要注意,中值滤波对于去除椒盐噪声等离群值非常有效,但在某些情况下可能导致图像边缘的模糊。