matlab 高斯模糊非庫函式實現方式

2021-08-11 14:42:05 字數 1399 閱讀 6090

簡單講一下原理和思路:

高斯模糊就是讓乙個高斯矩陣和所要模糊的矩陣相點乘(即兩個矩陣對應位置的兩個數相乘),然後把所得矩陣的各項之和相加,即為模糊中心點的值。

所謂高斯矩陣就是由高斯函式(即正態分佈函式)得到的矩陣。

二維正態分佈函式:

此外,要注意的是由此函式得到的矩陣之和小於1,需要均勻化,使得矩陣之和為1。

貼我的matlab程式**:

clc, clear, close all

img_origin=imread('c:\users\izh***\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);

endendweightmatrix=weightmatrix./sum(sum(weightmatrix)) %使該3*3矩陣之和等於1

[row, col] = size( img_gray );

fori = 1: row % 垂直方向

forj = 1:col % 水平方向

ifi==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 ));%高斯模糊

endend

endfigure(1);

subplot(121);

imshow(img_gray);%顯示灰度圖

subplot(122);

imshow(img_undist);%顯示灰度模糊圖

模糊效果:

在智慧型車上的應用效果:

高斯函式模糊

高斯函式有兩個特性 1 乙個高斯函式跟另外乙個高斯函式的卷積仍然是乙個高斯函式,a b c c的標準差的平方是a和b的標準差的平方和,也就是說卷積後的高斯函式更寬,模糊的效果更明顯 直觀上看,連續做高斯模糊運算,影象會越來越模糊。2 高斯函式的傅利葉變換仍然是乙個高斯函式,如果原來的高斯函式越寬 標...

MATLAB庫函式大全

附錄21.1資料型別 函式名功能描述 函式名功能描述 cell 生成單元陣列 sparse 生成稀疏陣列 char 生成字串 struct 生成結構 double 轉換成雙精度型 uint8 轉換成無字符號單位元組整數 inline 生成inline物件 附錄21.2結構操作 函式名功能描述 函式名...

matlab自帶函式實現高斯濾波

自己編寫的高斯濾波已理解,可是matlab自帶的高斯濾波函式卻沒有用過,這裡記錄一下。matlab自帶函式實現灰度圖高斯濾波 clear close all img imread lena.bmp sigma 6 標準差大小 window double uint8 3 sigma 2 1 視窗大小一...