高斯模糊

2022-05-09 07:59:19 浏览数 (1)

一、高斯模糊的概念 高斯模糊,也叫高斯平滑,英文为:Gaussian Blur,是图像处理中常用的一种技术,主要用来降低图像的噪声和减少图像的细节。高斯模糊在许多图像处理软件中也得到了广泛的应用。

二、高斯模糊的原理 1、模糊在图像中的理解 模糊在图像中的意思可理解为:中心像素的像素值为由周围像素的像素值的和的平均值。如图:

第一幅图为原始图像,其中心像素的像素值为2,第二幅图为中心像素进行模糊后的图像,其像素值为周围像素值的和的平均值。 图像模糊在数值上,这是一种”平滑化”。在图形上,就相当于产生”模糊”效果,”中心点”失去细节。高斯模糊会减少图像的高频信息,因此是一个低通滤波器。 2、图像模糊后的效果 下图的图像左半部分为原始图像,右半部分为模糊后的图像。

下图分别是原图、模糊半径3像素、模糊半径10像素的效果。模糊半径越大,图像就越模糊。从数值角度看,就是数值越平滑。从下图中可以看出,计算平均值时,取值范围越大,即模糊半径越大,模糊效果越强烈。

3、高斯模糊 既然每个点都要取周边像素的平均值,那么就涉及到了权重分配的问题。如果使用简单平均,显然不是很合理,因为图像都是连续的,越靠近的点关系越密切,越远离的点关系越疏远。因此,加权平均更合理,距离越近的点权重越大,距离越远的点权重越小。而高斯模糊就是用正态分布来分配周围像素的权重。在图形上,正态分布是一种钟形曲线,越接近中心,取值越大,越远离中心,取值越小。计算平均值的时候,我们只需要将中心像素作为原点,其他点按照其在正态曲线上的位置,分配权重,就可以得到一个加权平均值。一维正态分布图像如下图所示,由于图像都是二维的,所以我们需要二维的正态分布。

一维正态分布的密度函数为:

其中,μ是x的均值,σ是x的方差。中心点像素在原点位置,因此μ=0,因此,图像的一维正态分布变为:

二维正态分布概率密度公式如下:

图像的二维正态分布的密度函数为:

假定中心点的坐标是(0,0),那么距离它最近的8个点的坐标及当σ=1.5时周围像素各权重如下:

由于这9个像素点的权重总和等于0.4787147,因此需要进行归一化操作,每个点的权重计算公式为:单个像素高斯权重/所有像素高斯权重的和,得到像素最终的权重。 有了权重矩阵就可计算高斯模糊。假设现有9个像素点,灰度值(0-255)如下:

每个点乘以自己的权重值:

将这9个值加起来,就是中心点的高斯模糊的值。

对所有点重复这个过程,就得到了高斯模糊后的图像。如果原图是彩色图片,可以对RGB三个通道分别做高斯模糊。

三、高斯模糊的代码及实验结果 在Opencv下使用高斯模糊处理图像

代码语言:javascript复制
#include <opencv2corecore.hpp>
#include <opencv2highguihighgui.hpp>
#include <opencv2imgprocimgproc.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc,char* argv[])
{
    Mat image = imread("lena.bmp");
    if (image.empty())
    {
        cerr << "Fail in loading image " << endl;
    }
    Mat gaussianImage;
    GaussianBlur(image, gaussianImage, Size(9,9), 100.0);
    imshow("src",image);
    imshow("GaussianBlur", gaussianImage);
    waitKey(0);
}

下图分别是高斯核大小为99,sigma分别为1.0,10.0,100.0下的实验结果。可以看出,sigma越大,图像越模糊。

下图为sigma=10.0,高斯核大小分别为33,99,2727下的实验结果。可以看出,尺寸越大,图像越模糊。

参考资料: 1、百度百科:http://baike.baidu.com/link?url=yNgq8w79SYbS7OT4DQ5zhiwVg-7LyBWUm2vKnbg8KDD0FcPcb2Ok3AFNBvoiubzbrgrNUlk0tYKcRVlpykeI9q 2、阮一峰的博客:http://www.ruanyifeng.com/blog/2012/11/gaussian_blur.html 3、维基百科:https://en.wikipedia.org/wiki/Gaussian_blur 4、Opencv

0 人点赞