赞
踩
图像采集过程中,常常会引入高斯噪声,即这是一种按照高斯曲线进行分布的噪声
所以使用高斯滤波来进行图像去噪
高斯滤波考虑了像素离开滤波器中心的距离影响,中心位置为高斯分布均值,比如上图为 0
根据高斯分布公式,和滤波器所覆盖像素距离中心的距离,就可以计算每个像素被滤波后的像素值,即执行了一个卷积操作
void cv::GaussianBlur ( InputArray src,
OutputArray dst,
Size ksize,
double sigmaX,
double sigmaY = 0,
int borderType = BORDER_DEFAULT
)
解析:
void TestGaussianBlur()
{
cv::Mat lena = cv::imread("lena.jpg", 1);
cv::Mat blurred_3x3;
cv::Mat blurred_5x5;
cv::Mat blurred_7x7;
cv::GaussianBlur(lena, blurred_3x3, cv::Size(3, 3), 0, 0);
cv::GaussianBlur(lena, blurred_5x5, cv::Size(5, 5), 0, 0);
cv::GaussianBlur(lena, blurred_7x7, cv::Size(7, 7), 0, 0);
cv::imshow("lena", lena);
cv::imshow("blurred_3x3", blurred_3x3);
cv::imshow("blurred_5x5", blurred_5x5);
cv::imshow("blurred_7x7", blurred_7x7);
cv::waitKey(0);
return;
}
原图:
使用 3X3 的 kernel:
使用 5X5 的 kernel:
使用 7X7 的 kernel:
可以看到,kernel 越大,去除噪声(平滑)的效果越明显,但同时,图像也会越模糊!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。