如何使用Hessian矩阵找到脊

时间:2015-02-19 22:12:09

标签: matlab convolution hessian-matrix

我想找到给定图像的脊。 (山脊不是边缘!) 一个例子如下图所示 enter image description here

我认为Hessian矩阵可以直观地工作。所以我通过从2D高斯方程开始硬编码Hessian矩阵内核作为下面描述的链接。 How to build 2D hessian matrix kernel

我使用surf可视化我创建的3个二阶导数内核(D_xx,D_yy和D_xy),它们看起来都是正确的。 enter image description here

然后我应用这些内核并对我的图像进行2D卷积。

我不知道接下来该怎么做,我是否需要使用D_xx,D_yy和D_xy来表示特征值和向量?我们如何通过对每个像素使用2乘2矩阵的特征分析从图像中拉出脊线? 任何想法,公式甚至代码都会有所帮助。

附件是生成2D Hessian矩阵的代码

[x y]=meshgrid(round(-N/2):round(N/2), round(-N/2):round(N/2));
common = x.^2+y.^2;
Lxx = ((-1+x.^2/(sigma^2)).*exp(-common/(2*sigma^2))) / (2*pi*sigma^4);
Lxx = Lxx./ sum(Lxx(:));

Lyy = ((-1+y.^2/(sigma^2)).*exp(-common/(2*sigma^2))) / (2*pi*sigma^4);
Lyy = Lyy./ sum(Lyy(:));

Lxy = ((x.*y)/(2*pi*sigma^6)).*exp(-common/(2*sigma^2));
Lxy = Lxy./ sum(Lxy(:));

1 个答案:

答案 0 :(得分:0)

取自这个问题:https://dsp.stackexchange.com/questions/1714/best-way-of-segmenting-veins-in-leaves

脊滤波器是Hessian矩阵的主要特征值。