Frangi 滤波器用作边缘检测器

问题描述 投票:0回答:3

我试图使用 Frangi 过滤器从植物图像中提取所有茎。我想利用每个茎比叶子有更多类似血管的特性。 使用本文作为参考

我的输入图像是这样的

enter image description here

这是我的 matlab 代码片段

 options=struct('FrangiScaleRange', [1 3], 'FrangiScaleRatio', 1, 'FrangiBetaOne', 0.5,...
       'FrangiBetaTwo', 2, 'verbose',true,'BlackWhite',true);
      [outIm,whatScale,Direction] = FrangiFilter2D(double(rgb2gray(img2)), options);
      outIm = uint8(outIm/max(outIm(:))*256);

这是输出

enter image description here

我知道可能还有其他方法来完成此任务,但我只是想知道为什么这种方法不起作用。

matlab image-processing computer-vision imagefilter
3个回答
4
投票

就 Frangi-filter 而言,正如已经讨论过的,你的茎和叶都是类似容器的,所以你不能简单地使用过滤器输出来区分它们。

但是,您可以:(i) 选择更好的尺度(大致适合您要检测的结构的尺度)和 (ii) 尝试不同的参数。

我尝试过,给定尺度

5 10 20 30
和 Frangi 参数
beta=0.5
c=100

Frangi eq.

[Frangi 等人:多尺度血管增强过滤,MICCAI 1998]

这就是我得到的:

Frangi

以原始图像的逻辑单位进行缩放https://i.sstatic.net/s6wuE.jpg,已在 Photoshop 中转换为gray-8bpp。

您可以观察到以下内容。叶子的反应尺度比茎更高。也许这可能是一个线索。

编辑:

我查看了https://i.sstatic.net/eZwxg.png。 “边缘检测器”对明亮叶子的影响是由于 Frangi 的理论不足以适应二维:

  • 3-D 血管:血管方向上的小特征值,其他两个正交方向上的两个高负特征值。
  • 2-D 血管:血管方向上的小特征值,垂直于它的一个高负特征值。

相反

  • 3-D 板:一个高负特征值,两个小特征值。

0
投票

Frangi 滤波器测量图像区域的拉长程度,因此它将血管检测为“长”而不是“斑点”的对象。 论文中的示例图像的茎又窄又直(就像你的一样),叶子非常圆(与你的不同)。 由于叶子比论文中的更长、更薄,因此第一步的算法效果较差。 您的选择是:

(a) 对参数进行 futz(在 matlab 中,我相信它们是 FrangiAlpha 和 .FrangiBeta 参数)。 这些默认设置为 0.5,我认为你需要将它们设置得更低(这样你就必须更长更瘦才能算作茎)。

(b) 就像 @dasdingonesin 所说,论文有很多步骤,后面的 Hough Filter 步骤也会鼓励比 Frangi 过滤器考虑的更大规模的长连续线。


0
投票

有谁知道如何获得弗兰吉过滤器中用于血管增强的最佳参数? 感谢您在本主题中的富有洞察力的讨论。

© www.soinside.com 2019 - 2024. All rights reserved.