二维图像中的Hessian矩阵(及MATLAB代码)


一、图像中Hessian矩阵的定义及公式推导

对于二维图像 f ( x , y ) f(x,y) f(x,y),在点 x , y x,y x,y处的Hessian矩阵定义为: H ( x , y ) = [ I x x I x y I x y I y y ] H(x,y)= left[ egin{matrix} I_{xx} & I_{xy} \ I_{xy} &I_{yy} \ end{matrix} ight] H(x,y)=[IxxIxyIxyIyy]


其中 I x x I_{xx} Ixx为高斯二阶微分 ∂ 2 G ( x , y ) ∂ x 2 frac{partial^2G(x,y)}{partial x^2} ∂x2∂2G(x,y)与图像 f ( x , y ) f(x,y) f(x,y)的卷积: I x x = ∂ 2 G ( x , y ) ∂ x 2 ∗ f ( x , y ) I_{xx}=frac{partial^2G(x,y)}{partial x^2}*f(x,y) Ixx=∂x2∂2G(x,y)∗f(x,y) 且 G ( x , y ) = 1 2 π σ 2 e − x 2 + y 2 2 σ 2 G(x,y)=frac{1}{2πsigma^2}e^{-frac{x^2+y^2}{2sigma^2}} G(x,y)=2πσ21e−2σ2x2+y2 将两式结合,有: I x x = 1 2 π σ 4 ( x 2 s i g m a 2 − 1 ) ∂ 2 G ( x , y ) ∂ x 2 ∗ f ( x , y ) I_{xx}=frac{1}{2πsigma^4}(frac{x^2}{sigma^2}-1)frac{partial^2G(x,y)}{partial x^2}*f(x,y) Ixx=2πσ41(sigma2x2−1)∂x2∂2G(x,y)∗f(x,y) 同理可得 I x y 、 I y y I_{xy}、I_{yy} Ixy、Iyy。


二、MATLAB代码

代码如下(示例):

function [Dxx,Dxy,Dyy] = Hessian2D(I,Sigma)
[X,Y]   = ndgrid(-round(3*Sigma):round(3*Sigma));
DGaussxx = 1/(2*pi*Sigma^4) * (X.^2/Sigma^2 - 1) .* exp(-(X.^2 + Y.^2)/(2*Sigma^2));
DGaussxy = 1/(2*pi*Sigma^6) * (X .* Y)           .* exp(-(X.^2 + Y.^2)/(2*Sigma^2));
DGaussyy = DGaussxx;

Dxx = imfilter(I,DGaussxx,conv);
Dxy = imfilter(I,DGaussxy,conv);
Dyy = imfilter(I,DGaussyy,conv);
end

经验分享 程序员 微信小程序 职场和发展