简单讲一下原理和思路:
高斯模糊就是让一个高斯矩阵和所要模糊的矩阵相点乘(即两个矩阵对应位置的两个数相乘),然后把所得矩阵的各项之和相加,即为模糊中心点的值。
所谓高斯矩阵就是由高斯函数(即正态分布函数)得到的矩阵。
二维正态分布函数:
此外,要注意的是由此函数得到的矩阵之和小于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);%显示灰度模糊图
模糊效果:
在智能车上的应用效果: