Python OpenCV 实现高斯滤波详解
本文详解如何使用 Python 和 OpenCV 实现高斯滤波。高斯滤波是一种线性平滑滤波,通过加权平均消除高斯噪声。文章提供了 C++ 与 Python 的完整代码示例,对比展示原始图像及 5x5、9x9 卷积核下的滤波效果,帮助开发者掌握图像去噪技术。
一、高斯滤波
高斯滤波属于线性平滑滤波技术,主要用于消除图像中的高斯噪声,在图像处理的减噪环节中应用广泛。[1] 简单来说,高斯滤波是对整幅图像执行加权平均计算的过程。图像中每个像素的最终值,均由其自身及邻域内其他像素值经过加权平均计算得出。具体操作时,使用一个模板(也称为卷积核或掩模)扫描图像中的每个像素点,利用模板所确定的邻域内像素的加权平均值,来替换模板中心像素点的原始值。
二、C++代码
#include <opencv2\opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat img = imread("gauss_noise.png");
if (img.empty())
{
cout << "请确认图像文件名称是否正确" << endl;
return -1;
}
Mat result_5, result_9; //存放含噪声滤波的结果,后面数字代表滤波器尺寸
//调用均值滤波函数blur()进行滤波
GaussianBlur(img, result_5, Size(5, 5), 0, 0);
GaussianBlur(img, result_9, Size(9, 9), 0, 0);
//显示含有高斯噪声图像
imshow("img_gauss", img);
//显示去噪结果
imshow("result_5gauss", result_5);
imshow("result_9gauss", result_9);
waitKey(0);
return 0;
}
三、python代码
import cv2
# ----------------------读取图片-----------------------------
img = cv2.imread('gauss_noise.png')
# ----------------------高斯滤波-----------------------------
result_5 = cv2.GaussianBlur(img, (5, 5), 0) # 5x5
result_9 = cv2.GaussianBlur(img, (9, 9), 0) # 9x9
# ----------------------显示结果-----------------------------
cv2.imshow('origion_pic', img)
cv2.imshow('5x5_filtered_pic', result_5)
cv2.imshow('9x9_filtered_pic', result_9)
cv2.waitKey(0)
四、结果展示
1、原始图像

2、5x5卷积

3、9x9卷积

到此这篇关于python OpenCV 实现高斯滤波详解的文章就介绍到这了,更多相关Python OpenCV 高斯滤波内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









