1. 程式人生 > 實用技巧 >MATLAB 構建Hessian矩陣

MATLAB 構建Hessian矩陣

很多演算法都用到了這個矩陣,比如Hessian affine region detector、SURF,雖然這些演算法我還沒有完全搞透,不過那都是後話,先把這個矩陣搞出來再說,學習是不斷迭代的過程。

整個矩陣的形成主要由四部分公式決定:

g(x,y)就是高斯函數了,沒啥可說的:

對高斯函式的x和y分別求二階偏導:

求出的模板對原圖進行卷積:

卷積後的值構成Hessian矩陣:

所以這裡的H是相當於原影象每一個畫素都能求出一個Hessian矩陣。

matlab程式碼如下:

 1 clear all;
 2 close all;
 3 clc;
 4 
 5 img=double(imread('
lena.jpg')); 6 [m n]=size(img); 7 8 w=4; 9 sigma=1.2; 10 [x y]=meshgrid(-w:w,-w:w); 11 %高斯函式對應的二階偏導,如何求導數請自行腦補 12 Dxx = 1/(2*pi*sigma^4)*(x.^2/sigma^2-1)*exp(-(x.^2+x.^2)/(2*sigma^2)); 13 Dyy = 1/(2*pi*sigma^4)*(y.^2/sigma^2-1)*exp(-(x.^2+y.^2)/(2*sigma^2)); 14 Dxy = 1/(2*pi*sigma^6)*(x.*y)*exp(-(x.^2
+y.^2)/(2*sigma^2)); 15 16 Ixx=imfilter(img,Dxx,'replicate'); 17 Iyy=imfilter(img,Dyy,'replicate'); 18 Ixy=imfilter(img,Dxy,'replicate'); 19 20 H=cell(m,n); 21 for i=1:m 22 for j=1:n 23 H{i,j}=[Ixx(i,j) Ixy(i,j);Ixy(i,j) Iyy(i,j)]; 24 end 25 end