高斯模糊的实现matlab_第1页
高斯模糊的实现matlab_第2页
高斯模糊的实现matlab_第3页
高斯模糊的实现matlab_第4页
高斯模糊的实现matlab_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、高斯模糊实现(matlab)高斯模糊是一种图像模糊滤波器,它用正态分布计算图像中每个像素的变换。N 维空间正态分布方程为 (1)在二维空间定义为Gx,y=122e-(x-m2)2+(y-n2)222 (2) 其中 r 是模糊半径 ,指模板元素到模板中心的距离。 是正态分布的标准偏差,。在二维空间中,这个公式生成的曲面的等高线是从中心开始呈正态分布的同心圆。分布不为零的像素组成的卷积矩阵与原始图像做变换。每个像素的值都是周围相邻像素值的加权平均。原始像素的值有最大的高斯分布值,所以有最大的权重,相邻像素随着距离原始像素越来越远,其权重也越来越小。这样进行模糊处理比其它的均衡模

2、糊滤波器更高地保留了边缘效果。1. 使用给定高斯模板平滑图像维基百科的实例高斯模糊矩阵:0.000000670.000022920.000191170.000387710.000191170.000022920.000000670.000022920.000786330.006559650.013303730.006559650.000786330.000022920.000191170.006559650.054721570.110981640.054721570.006559650.000191170.000387710.013303730.110981640.225083520.1109

3、81640.013303730.000387710.000191170.006559650.054721570.110981640.054721570.006559650.000191170.000022920.000786330.006559650.013303730.006559650.000786330.000022920.000000670.000022920.000191170.000387710.000191170.000022920.00000067用该矩阵进行高斯模糊的结果如下:使用代码如下:guass=0.00000067 0.00002292 0.00019117 0.00

4、038771 0.00019117 0.00002292 0.00000067; 0.00002292 0.00078633 0.00655965 0.01330373 0.00655965 0.00078633 0.00002292; 0.00019117 0.00655965 0.05472157 0.11098164 0.05472157 0.00655965 0.00019117; 0.00038771 0.01330373 0.11098164 0.22508352 0.11098164 0.01330373 0.00038771; 0.00019117 0.00655965 0.0

5、5472157 0.11098164 0.05472157 0.00655965 0.00019117; 0.00002292 0.00078633 0.00655965 0.01330373 0.00655965 0.00078633 0.00002292; 0.00000067 0.00002292 0.00019117 0.00038771 0.00019117 0.00002292 0.00000067; TestImg=imread('Lena1.jpg'); FuzzyImg=conv2(TestImg,guass,'full'); subplot(

6、121); imshow(TestImg); subplot(122); imshow(FuzzyImg/256);编程注意事项:在matlab中,我们常使用imshow()函数来显示图像,而此时的图像矩阵可能经过了某种运算。在matlab中,为了保证精度,经过了运算的图像矩阵I其数据类型会从unit8型变成double型。如果直接运行imshow(I),我们会发现显示的是一个白色的图像。这是因为imshow()显示图像时对double型是认为在01范围内,即大于1时都是显示为白色,而imshow显示uint8型时是0255范围。而经过运算的范围在0-255之间的double型数据就被不正常得

7、显示为白色图像了。  imshow(I/256);    -将图像矩阵转化到0-1之间                                      imshow(I,);

8、60;      -自动调整数据的范围以便于显示 (不明白原理!)2. 二维高斯函数理论上来讲,图像中每点的分布都不为零,这也就是说每个像素的计算都需要包含整幅图像。在实际应用中,在计算高斯函数的离散近似时,在大概3距离之外的像素都可以看作不起作用,这些像素的计算也就可以忽略。通常,图像处理程序只需要计算  的矩阵就可以保证相关像素影响。对于边界上的点,通常采用复制周围的点到另一面再进行加权平均运算.在实际应用中,如何根据theta的值生成高斯模糊矩阵是关键,高斯矩阵可根据公式(2),并进行归一化,归一化确保矩阵的值在0,1

9、之间。设sigma=0.435生成3*3的高斯模糊矩阵如下:0.003883754157531040.05455226509218840.003883754157531040.05455226509218840.7662559230011220.05455226509218840.003883754157531040.05455226509218840.00388375415753104sigma=0.628,生成5*5的高斯模糊矩阵如下:0.0000 0.0007 0.0025 0.0007 0.0000 0.0007 0.0319 0.1134 0.0319 0.0007 0.0025 0

10、.1134 0.4029 0.1134 0.0025 0.0007 0.0319 0.1134 0.0319 0.0007 0.0000 0.0007 0.0025 0.0007 0.0000设置sigma=2.5时,高斯模糊后的图像和原图对比:3. 改进的高斯模糊函数使用上述二维高斯模糊矩阵进行滤波时,速度较慢。且当sigma变大时,高斯核和卷积的运算量将急速增加。可以利用二维高斯函数的线性可分性,对其进行改进。除了圆形对称之外,高斯模糊也可以在二维图像上对两个独立的一维空间分别进行计算,这叫作线性可分。这也就是说,使用二维矩阵变换得到的效果也可以通过在水平方向进行一维高斯矩阵变换加上竖直方

11、向的一维高斯矩阵变换得到。从计算的角度来看,这是一项有用的特性,因为这样只需要  次计算,而不可分的矩阵则需要  次计算,其中 , 是需要进行滤波的图像的维数,、 是滤波器的维数而且,使用二次一维的高斯卷积可以消除二维高斯卷积产生的边缘。Sigma=3.0; %Sigma=0.435; kernel=OneDimGuassKernel(Sigma); TestImg=imread('Lena1.jpg'); m,n=size(TestImg); FilterImgX=conv(TestImg(:),kernel,'same'); B=reshape(FilterImgX,m,n)' imshow( B,); FilterImgXY=co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论