matlab練習程序(構建Hessian矩陣)


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

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

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

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

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

卷積后的值構成Hessian矩陣:

所以這里的H是相當於原圖像每一個像素都能求出一個Hessian矩陣。

matlab代碼如下:

clear all;
close all;
clc;

img=double(imread('lena.jpg'));
[m n]=size(img);

w=4;
sigma=1.2;
[x y]=meshgrid(-w:w,-w:w);
%高斯函數對應的二階偏導,如何求導數請自行腦補
Dxx = 1/(2*pi*sigma^4)*(x.^2/sigma^2-1)*exp(-(x.^2+x.^2)/(2*sigma^2));     
Dyy = 1/(2*pi*sigma^4)*(y.^2/sigma^2-1)*exp(-(x.^2+y.^2)/(2*sigma^2));
Dxy = 1/(2*pi*sigma^6)*(x.*y)*exp(-(x.^2+y.^2)/(2*sigma^2));

Ixx=imfilter(img,Dxx,'replicate');
Iyy=imfilter(img,Dyy,'replicate');
Ixy=imfilter(img,Dxy,'replicate');

H=cell(m,n);
for i=1:m
   for j=1:n 
    H{i,j}=[Ixx(i,j) Ixy(i,j);Ixy(i,j) Iyy(i,j)];    
   end
end

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM