【问题标题】:How to find ridges by using Hessian matrix如何使用 Hessian 矩阵找到脊
【发布时间】:2015-04-21 11:38:30
【问题描述】:

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

我认为 Hessian 矩阵可以直观地工作。因此,我从 2D-Gaussian 方程开始对 Hessian 矩阵内核进行硬编码,如下所述的链接。 How to build 2D hessian matrix kernel

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

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

我不确定下一步该做什么,我是否需要使用 D_xx、D_yy 和 D_xy 来表示特征值和向量?我们如何使用每个像素的 2×2 矩阵的特征分析从图像中提取脊线? 任何想法、公式甚至代码都会很有帮助。

附上生成二维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(:));

【问题讨论】:

  • 你考虑过使用threshold和sekleton吗?
  • @Steffen 你是如何使用阈值来寻找山脊的?我确实相信骨架适用于二进制图像处理,但我正在处理灰度图像。
  • 创建骨架工作的二进制图像的阈值。
  • @Steffen Threshold 方法有其局限性。由于我们要实现一种自动比例选择方法来查找脊,因此为不同维度的特征图像找到合适的阈值太棘手了。我相信骨架是处理二进制图像的方式,所以我也不想使用它。
  • @Steffen 我们不只是处理上面显示的图像。我们正在通过使用不同尺度的 DOG 来处理多尺度特征图像。我在这里展示的是一个带有很多模糊的大尺度空间图像。也许可以使用阈值。但是如果处理的是小尺度空间图像,会有很多噪声和其他人员,可能会导致阈值处理失败。

标签: matlab image-processing convolution hessian-matrix


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 2016-12-30
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多