c++与OpenCV去除椒盐噪声
时间: 2025-01-07 12:18:57 浏览: 5
### 使用C++和OpenCV去除图像中的椒盐噪声
为了有效处理并减少图像中的椒盐噪声,中值滤波是一种常用的技术。相比于均值滤波器,中值滤波对于消除这种类型的噪声更为高效,因为它能够更好地保留边缘和其他重要特征[^1]。
下面是一个利用OpenCV库实现中值滤波来移除椒盐噪声的具体实例:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
// 加载原始图片
cv::Mat img = cv::imread("noisy_image.jpg", cv::IMREAD_GRAYSCALE);
if (img.empty()) {
std::cerr << "无法加载图片!" << std::endl;
return -1;
}
// 应用中值模糊函数
cv::Mat medianFilteredImg;
int apertureSize = 3; // 可调整此参数以获得不同效果
cv::medianBlur(img, medianFilteredImg, apertureSize);
// 显示原图与处理后的对比结果
cv::imshow("Original Image", img);
cv::imshow("Median Filtered Image", medianFilteredImg);
cv::waitKey(0);
return 0;
}
```
这段代码展示了如何读取一张灰度模式下的含噪图片,并通过调用`cv::medianBlur()`方法对其进行平滑处理。这里设置了一个大小为3×3窗口的卷积核来进行操作;当然也可以根据实际需求改变这个尺寸以便达到更好的降噪效果。
阅读全文