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
的值来改变滤波的程度。需要注意,中值滤波对于去除椒盐噪声等离群值非常有效,但在某些情况下可能导致图像边缘的模糊。