【问题标题】:Detect Plants in a grass Image检测草地图像中的植物
【发布时间】:2016-05-22 13:58:14
【问题描述】:

我是计算机视觉领域的新手。 我想检测草图像中的某种植物。

原图

Canny 边缘检测算法

霍夫线变换(边缘检测后)

我已经试过了:

  • 通过比较区域中白色像素的平均值来去除背景中的草。
  • 使用霍夫线变换算法进行线检测(草加错线)

您认为检测这种植物的最佳方法是什么?

【问题讨论】:

  • Intreasting Task.. 向我们展示其他图片(如果有)
  • 我已经添加了霍夫线变换后的图像,但我目前没有任何其他原始图像。
  • Hougline 完全可以成为 IMO 的解决方案。你甚至没有台词
  • 我得到了大约 90% 的植物。我使用饱和度和强度图像来创建蒙版。植物饱和度低于草饱和度,但植物比背景亮。所以我将两者相乘,增加了植物与背景的对比度。然后我通过一些形态操作和抑制高频去除了草
  • @Piglet 请发布答案,否则这从未发生过:D

标签: c++ opencv computer-vision


【解决方案1】:

我想到了虚拟解决方案。由于草比植物本身更详细:

  1. 应用 Canny 或任何其他边缘检测器。
  2. 使用窗口(假设为 10*10)通过图像。对于每个窗口:
    • 计算密度(如果使用 Canny,则为白色像素的数量)
    • 将其存储在数组中
  3. 使用 Otsu 算法对数组中的值设置阈值。较小的值表示属于植物的窗户。
  4. 将所有需要的窗口重新映射到原始图片。
  5. 如果一个窗口被计算为不是对象的一部分,但同时它被对象的窗口包围,它就是它的一部分。

【讨论】:

【解决方案2】:

只是为了好玩,并且与 Humam 的答案非常相似,只是使用标准偏差而不是密度来完成,并在它认为没有叶子的地方使图像透明。我直接在命令行中使用了 ImageMagick:

convert weed.jpg \( +clone -canny 0x1+10%+30% -statistic standarddeviation 10x10 -blur 0x8 -normalize -negate \) -compose copyopacity -composite result.png

【讨论】:

  • 不错的一个.. 我渴望看到更多来自 OP 的样本,因为我认为这些解决方案(包括我的)会失败。我认为这是有史以来最难的简历问题之一。如果OP可以做到。我认为麻省理工学院会找到他并雇用他:D
  • 聪明的解决方案。然而,与任何其他图像处理方法一样,这很可能仅适用于非常特定的图像,而不是一般情况下。但是,对于这个问题的范围,+1:D。 @HumamHelfawi 深度学习在物体(包括植物)识别方面取得了巨大进步,麻省理工学院已经知道:D
  • Hhhhhh 我正要说深度学习......但我害怕看起来像谁想要一个黑匣子来做他自己的工作:D
  • 我同意。也许需要某种纹理分析。我知道这种方法对于许多其他图片都会失败 - 通用解决方案非常困难!
【解决方案3】:

我实施了 Humam 的方法。

但是在Otsu算法之后增加了一些Steps:

  1. 满足每个黑色连接的组件
  2. 用矩阵减法提取掩码
  3. 将掩码存储在向量中
  4. 按区域大小排序(= sum(mask))
  5. 挑选最大的面具(=植物)
  6. 在植物面膜上:再次执行步骤 1 -3
  7. 从植物面具中移除所有小面具

我有一些来自植物的旧图像和坏图像,接下来几天我将在这些图像上测试算法。 不幸的是,我的国家是冬天,草地上覆盖着雪。所以我必须等待几周才能从这种植物中制作一些合适的图像。

提取结果。

下一步是检测提取的图像是否是所需的植物。

【讨论】:

    猜你喜欢
    • 2012-10-08
    • 2016-04-30
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    相关资源
    最近更新 更多