【问题标题】:object detection LEDs in simple scene简单场景中的物体检测 LED
【发布时间】:2014-07-06 21:38:24
【问题描述】:

我是 opencv 新手,我猜这个问题可能有点简单:我试图在 470 x 590 像素的图像中检测几乎 25 x 15 像素的对象。

我附上了这个对象的放大图像,我有几个选择:

1 - 使用霍夫变换的两个闭合圆检测, 2 - 直方图匹配 3 - SURF 特征检测

关于我应该采取哪个方向的任何建议?请考虑速度和实时应用。谢谢

【问题讨论】:

  • 你的背景会是黑色的,还是什么都可以?此外,是否保证 LED 具有一定的尺寸和方向?一般来说:霍夫变换太慢而无法实时进行;选项 2 和 3 在一般背景下会更好。如果背景很暗,基于颜色或亮度的简单算法会是最快的。
  • @Luke 谢谢。是的,我的背景是黑色的。我试图避免使用简单的算法,因为可能有另一个明亮的物体可能不是我正在寻找的两个 LED...
  • OpenCV 有一个斑点检测器,它(也)用于(a)对称圆形图案校准。它应该能够检测到圆形斑点的中心,例如这些 LED。

标签: opencv image-processing computer-vision


【解决方案1】:

我认为应该不用明确说明,但可能有数百种方法可以尝试,而且只有一张示例图片很难给出建议。例如,LED 是否始终为绿色?我们不知道。

除此之外,恕我直言,两个不错的起点是使用 ol' 忠实模板匹配或 blob 检测。

如果这还不够健壮,您将需要查看模板/blob 的一些替代表示,例如经典的 HoG(适合形状,可能这个应用有点重),甚至是您自己定制的它编码了您自己对该问题的特定领域知识。

然后,如果这还不够稳健,请构建具有代表性的 +ve 和 -ve 示例的数据集,尽可能大,然后训练像 svm 或增强分类器这样的机器。

模板匹配:

http://docs.opencv.org/doc/tutorials/imgproc/histograms/template_matching/template_matching.html

斑点检测:

https://code.google.com/p/cvblob/

机器学习:

http://docs.opencv.org/modules/ml/doc/ml.html

提示: 添加尽可能多的领域知识,即如果它们总是绿色,则在表示中使用颜色,例如 g 通道上的 hog。如果它们始终是圆形的,请尝试对其进行编码,例如在模板中使用对数极坐标网格,而不是常规网格......等等。

机器学习并不神奇,线性分类器本质上会对特征空间中的不同点进行加权,所以你仍然需要一个好的表示,所以如果模板匹配完全失败,那么简单的线性机器学习不太可能有帮助,但如果模板匹配没问题,那么 ml 可能会将性能提升到一个不错的水平。

【讨论】:

  • 感谢您的回答。 LED 始终为绿色。你认为 25 x 25 内核的模板匹配会足够快吗?
  • @Samer 我认为这将取决于实现、表示和距离函数,以及最重要的是图像的大小 :) 即在较小的规模上工作,真的会损害性能吗?就opencv而言,我想你可以试试看......
  • @Samer 哦,还有一个简单的加速技巧称为级联。在您的情况下,作为级联中的第一级,您可以通过使用简单的阈值来消除大部分图像像素,去除大部分明显的黑色区域,然后将生成的掩码传递给最后阶段的模板匹配器。这将减少模板匹配器的计算负担。
【解决方案2】:

第 1 步:去除黑色背景。

第 2 步:可以使用蛇形算法找到对象的边界

【讨论】:

  • 也可以不用step1直接使用snake
猜你喜欢
  • 1970-01-01
  • 2011-08-08
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 2015-10-14
相关资源
最近更新 更多