您的位置:首页 > 编程语言 > MATLAB

matlab 高斯模糊非库函数实现方式

2017-12-01 10:44 711 查看
简单讲一下原理和思路:

  高斯模糊就是让一个高斯矩阵和所要模糊的矩阵相点乘(即两个矩阵对应位置的两个数相乘),然后把所得矩阵的各项之和相加,即为模糊中心点的值。

  所谓高斯矩阵就是由高斯函数(即正态分布函数)得到的矩阵。

  二维正态分布函数:

  


  此外,要注意的是由此函数得到的矩阵之和小于1,需要均匀化,使得矩阵之和为1。

贴我的matlab程序代码:

clc, clear, close all
img_origin=imread('C:\Users\izhxxx\Desktop\论文\canny\lena.png');%读取图片文件
img_gray=rgb2gray(img_origin);%灰度化
Sigma=1.5;%σ为高斯模糊半径,半径越大模糊程度越大
for x = 1: 3  % 垂直方向
for y = 1:3  % 水平方向
WeightMatrix(x, y)=exp(-((x-1)^2+(y-1)^2)/(2*Sigma^2))/(2*pi*Sigma^2);
end
end
WeightMatrix=WeightMatrix./sum(sum(WeightMatrix)) %使该3*3矩阵之和等于1
[row, col] = size( img_gray );
for i = 1: row  % 垂直方向
for j = 1:col  % 水平方向
if i==1 || j==1 || i==row || j==col
img_undist(i, j)=img_gray(i, j);%边缘未处理
else
miniMatrix=single(img_gray(i-1:i+1, j-1:j+1));
img_undist(i, j)=sum(sum( miniMatrix.*WeightMatrix ));%高斯模糊
end
end
end
figure(1);
subplot(121);
imshow(img_gray);%显示灰度图
subplot(122);
imshow(img_undist);%显示灰度模糊图


模糊效果:



在智能车上的应用效果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab 高斯模糊 lena