【问题标题】:How to find RGB/HSV color parameters for color tracking?如何找到用于颜色跟踪的 RGB/HSV 颜色参数?
【发布时间】:2010-12-03 21:01:29
【问题描述】:

我想跟踪一组图像中的颜色。 出于这个原因,我使用中提到的恒定阈值算法 Introduction to Autonomous Mobile Robots。这个方法只是简单地标记所有那些在红色、绿色、蓝色(或色调、饱和度、在我的例子中的值)的最小和最大阈值之间的像素。

我的问题是 - 尽管 HSV 对光照条件的变化不太敏感 - 我仍然想从程序中设置阈值,以尽量减少误报和漏报的数量。换句话说,该算法将确保最后只标记给定的一组像素,例如校准图像上的一个矩形。

我知道问题是在 6 维参数空间中进行搜索,我可以提出可能的解决方案,但我正在寻找其他程序员对此主题的意见和经验。

如果这很重要,我会尝试使用 OpenCV 在 C++ 中实现它。

【问题讨论】:

  • 我了解仅在 HSV 中设置阈值的局限性,但我不明白您所说的“我仍然想从程序中设置阈值”以及您从哪里获得 6 个参数是什么意思。请您重新提出您的问题。
  • 我想要一个程序来找到色调、饱和度和值的最小和最大级别:这是 6 个参数。适当的阈值使得具有跟踪颜色的所有像素都被标记,而没有其他像素被标记。

标签: algorithm image-processing color-tracking


【解决方案1】:

据我了解的问题您正在寻找从包含跟踪标记的校准图像中校准 6 个阈值(每个 HSV 通道的最小值和最大值)的过程。为此,我会:

  1. 首先手动描绘 区域,在校准图像中, 标记出现的位置
  2. 计算该区域的直方图,每个区域对应一个 HSV 频道
  3. 最小和最大阈值设置为直方图 百分位数 0.05 和 0.95 分别

不使用直方图的最小值和最大值,而是使用它的 0.05 和 0.95 百分位数有助于测量对噪声更加稳健。

编辑:

第二步的修改: 如果您想最小化错误,您可以建立标记的 normilized 直方图和环境的 normalized 直方图(这可以是 2 个单独的图像)并减去后者从一开始。生成的标记直方图将衰减背景像素值。这将影响上述百分位数的值。

【讨论】:

  • 有趣的解决方案,无需搜索。我的问题是它不能确保只有最少数量的标记像素会出现在划定区域之外。此外,我不想在此过程中手动执行步骤。
  • 如果您想避免手动步骤,您可以显示标记,使其全屏显示。关于您要确保最小数量的错误,您应该了解基于阈值的对象检测的局限性,并且它对采集方式、环境光等的变化并不鲁棒。通常人们使用阈值 + 某种形式的过滤。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
  • 2010-09-26
  • 2018-12-14
  • 2016-05-08
相关资源
最近更新 更多