📅  最后修改于: 2023-12-03 15:07:37.707000             🧑  作者: Mango
中值滤波器是一种常见的数字信号处理方法,用于去除数字图像或信号中的噪声。C++ 提供了丰富的图像处理库,可以方便地实现中值滤波器。
首先需要将需要去除噪声的图像加载进内存。使用 OpenCV 库可以方便地完成该任务。
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat image = imread("input.jpg", IMREAD_GRAYSCALE);
if (image.empty()) {
std::cout << "Could not open or find the image!\n";
return -1;
}
imshow("Original Image", image);
waitKey();
return 0;
}
中值滤波的主要思想是在一定窗口内,将像素值按从小到大排序,取中间值作为当前像素的值。这样可以有效地去除椒盐噪声(黑白点噪声)。
Mat denoisedImage;
medianBlur(image, denoisedImage, 3); // 3 为窗口大小
imshow("Denoised Image", denoisedImage);
waitKey();
处理完成后,需要将结果保存为图像文件。
imwrite("output.jpg", denoisedImage);
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat image = imread("input.jpg", IMREAD_GRAYSCALE);
if (image.empty()) {
std::cout << "Could not open or find the image!\n";
return -1;
}
imshow("Original Image", image);
Mat denoisedImage;
medianBlur(image, denoisedImage, 3);
imshow("Denoised Image", denoisedImage);
imwrite("output.jpg", denoisedImage);
waitKey();
return 0;
}
中值滤波器是一种常用的图像处理算法,可以用于去除数字图像中的噪声。与其他方法相比,中值滤波有较好的保边缘效果,并且对于椒盐噪声的去除效果尤佳。在 C++ 中,使用 OpenCV 库实现中值滤波也非常简单,甚至只需一行代码就可以完成。