matlab 高斯模糊非庫函式實現方式
阿新 • • 發佈:2019-01-02
簡單講一下原理和思路:
高斯模糊就是讓一個高斯矩陣和所要模糊的矩陣相點乘(即兩個矩陣對應位置的兩個數相乘),然後把所得矩陣的各項之和相加,即為模糊中心點的值。
所謂高斯矩陣就是由高斯函式(即正態分佈函式)得到的矩陣。
二維正態分佈函式:
此外,要注意的是由此函式得到的矩陣之和小於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);%顯示灰度模糊圖
模糊效果:
在智慧車上的應用效果: