二维图像中的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