3

我想跟踪一组图像中的颜色。出于这个原因,我使用 自主移动机器人简介中提到的恒定阈值算法。这种方法只是标记所有那些在红色、绿色、蓝色(或色调、饱和度、在我的例子中的值)的最小和最大阈值之间的像素。

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

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

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

4

1 回答 1

2

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

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

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

编辑:

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

于 2009-10-05T14:39:35.240 回答