1. 程式人生 > >matlab 高斯模糊非庫函式實現方式

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

簡單講一下原理和思路:
  高斯模糊就是讓一個高斯矩陣和所要模糊的矩陣相點乘(即兩個矩陣對應位置的兩個數相乘),然後把所得矩陣的各項之和相加,即為模糊中心點的值。
  所謂高斯矩陣就是由高斯函式(即正態分佈函式)得到的矩陣。
  二維正態分佈函式:
  二維正態分佈函式:
  此外,要注意的是由此函式得到的矩陣之和小於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);%顯示灰度模糊圖

模糊效果:
這裡寫圖片描述

在智慧車上的應用效果:
這裡寫圖片描述