【问题标题】:Detect all branches in a plant picture检测植物图片中的所有分支
【发布时间】:2016-04-30 12:31:01
【问题描述】:

我想知道一些可以从下图中检测到所有绿色分支的东西

目前我开始应用 Frangi 过滤器

   options=struct('FrangiScaleRange', [5 5], 'FrangiScaleRatio', 1, 'FrangiBetaOne', 1,...
 'FrangiBetaTwo', 7, 'verbose',true,'BlackWhite',true);
[outIm,whatScale,Direction] = FrangiFilter2D(double(img), options);

Frangi过滤器的输出如下

这之后是霍夫变换来检测所有的线

[H,theta,rho] = hough(outIm,'Theta',-90:1:89);
P = houghpeaks(H,100,'threshold',ceil(0.3*max(H(:))),'NhoodSize',[21 21]);
lines = houghlines(outIm,theta,rho,P,'FillGap',10,'MinLength',100);

输出是这样的

除了这些技术之外,我还能尝试什么?

【问题讨论】:

  • 如果你想要绿色的分支,那么你需要通过颜色阈值来加星以检测绿色部分。然后,您可以应用过滤器和霍夫变换。
  • 这是我的第一步。我没有提到它,因为它很明显
  • 不那么明显,因为 Frangi 过滤器也给出了棕色树枝轮廓。所以阈值化失败了。
  • 在这里设置'BlackWhite',false 可能会有帮助。

标签: image matlab image-processing computer-vision image-segmentation


【解决方案1】:

您可以使用基于颜色的高斯混合模型 (GMM) 来分割绿色分支。适合 2 个 GMM 模型 1 个用于绿色分支,第 2 个用于图像中的其余对象。但是要初始化,您必须首先标记一些手动涂鸦,以了解 GMM 分支和其他的外观。在涂鸦的基础上拟合两个 GMM 模型后,您可以找到两个 GMM 模型的所有像素的可能性,并在此基础上将您划分为两个区域分支和非分支。涂鸦的标记应涵盖图像中的大部分颜色变化。

【讨论】:

  • 您的意思是建议使用 GMM 聚类来分割绿叶和嫩芽吗?如果是,您是否有某种使用此技术的示例代码?
猜你喜欢
  • 2016-05-22
  • 2012-10-08
  • 1970-01-01
  • 2017-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
相关资源
最近更新 更多