OpencCV多重随机形状跟踪

时间:2018-09-13 13:23:42

标签: opencv image-recognition

我正在尝试对随机移动的粒子实施光学颜色分类。并不是那么随机-它只是塑料颗粒,圆柱体和薄片,但仍然非常随机。

当前实现如下:

  1. 获取中立背景下的前辈形象
  2. 执行Canny过滤器以获取轮廓
  3. 执行Scharr过滤器以获取更精确的轮廓
  4. 执行findContours();
  5. 在每个轮廓周围创建boundingRect并检查bbox区域,因此我们不分析垃圾的颜色
  6. 创建其余填充白色的轮廓的蒙版
  7. 将每个boundingRect用作ROI,对ROI内部的图像应用蒙版,这样我们只能在ROI内部获得粒子
  8. 计算每个ROI内的平均颜色并确定颜色粒子的好坏

images are here

在静态合成图像上,一切正常,但是在真实网络摄像头图像上,一切都很糟糕:

并非每个轮廓都是闭合的,使用MORPH_CLOSE的morphologyEx并没有太大帮助,而且速度也很慢 非封闭轮廓不会填充白色以创建蒙版,因此平均颜色计算不正确。

真正的问题是:有没有办法追踪几乎随机形状的粒子?还是我正在寻找某种不存在的东西?粒子在移动(沿一个方向,从屏幕上移入和移出屏幕),如果我们以描述的方式对其进行处理,即使没有任何移动,它们也会将每个新帧视为 new 粒子集。在恶劣情况下,算法可能会确定颜色超出了“良好”颜色范围,即使不是那样。

据我所知,只有在对形状的好坏样本进行训练时,才能识别出工作良好的对象,但是无法对随机形状进行训练

用于位置预测的卡尔曼滤波器需要一个点。我可以通过使用轮廓的矩来找到粒子的中心。但是只有当发现轮廓是粒子的真实轮廓时,发现中心才可以。这并不总是正确的。

预先感谢您的任何建议。

0 个答案:

没有答案