博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高斯模糊
阅读量:3976 次
发布时间:2019-05-24

本文共 1701 字,大约阅读时间需要 5 分钟。

一、高斯模糊的概念

高斯模糊,也叫高斯平滑,英文为: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下使用高斯模糊处理图像

#include 
#include
#include
#include
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、百度百科:
2、阮一峰的博客:
3、维基百科:
4、Opencv

你可能感兴趣的文章
Git&GitHub(2)——GitHub常用操作
查看>>
IntelliJ IDEA(9)——其他配置
查看>>
IntelliJ IDEA(10)——常用插件
查看>>
IntelliJ IDEA常用方法(1)
查看>>
IntelliJ IDEA常用方法(2)
查看>>
IntelliJ IDEA常用方法(3)
查看>>
Typora使用MarkDown语法
查看>>
火狐浏览器安装插件提示:“此附加组件无法安装,因为他有可能已损坏”
查看>>
linux 根文件系统,根设备,sys_open, sys_read, sys_write, sys_mount, sys_mknod
查看>>
uboot的配置(make xxx_config)和编译(make)工程解读
查看>>
uboot启动流程之上电启动到第一次准备好C语言运行环境
查看>>
uboot启动之第一次运行C函数到uboot重定位
查看>>
uboot重定位后初始化
查看>>
uboot引导os
查看>>
linux make xxxconfig执行过程
查看>>
linux kernel之platform driver&device
查看>>
linux 内核网卡驱动 ast2500 board
查看>>
linux中断处理与NAPI机制
查看>>
linux kernel编译makefile简要介绍(arm)
查看>>
pci总线扫描及pci网卡驱动
查看>>