【发布时间】: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