附加理论
视觉目标
FRC 游戏设计师经常在场地上的战略位置放置反光的"视觉目标"。这些视觉目标通常由逆反射胶带制成。主要的得分元素通常都有可用于自动瞄准的视觉目标。下面你可以看到 2016 年和 2017 年 FRC 游戏中一些视觉目标的两个例子。
这些逆反射视觉目标具有一个非常有用的特性:当光照射到它们时,它会直接反射回光源。这就是为什么 Limelight 在其摄像头镜头周围有明亮的绿色 LED。通过在发射明亮的绿光朝向目标的同时将摄像头曝光设置得非常低,我们可以获得一个大部分是黑色的图像,其中视觉目标呈明亮的绿色。这使得获取目标变得相对容易。
这里你可以看到理想图像的一个例子。注意由于低曝光设置,图像中几乎所有的细节都消失了,但逆反射胶带却非常突出。
阈值处理
阈值处理是大多数 FRC 视觉跟踪算法的下一个关键组成部分。它是指对图像进行处理,丢弃不在特定颜 色范围内的任何像素。阈值处理的结果通常是一个一维图像,其中像素要么"开"要么"关"。阈值处理在使用上述策略(低曝光,非常暗的图像与明亮照明的视觉目标)捕获的图像上效果很好。
Limelight 在 HSV(色调-饱和度-亮度)颜色空间中进行阈值处理。你可能习惯于在 RGB(红-绿-蓝)颜色空间中思考颜色。HSV 只是另一种表示颜色的方式,类似于笛卡尔坐标或极坐标可以用来描述位置。我们使用 HSV 颜色空间的原因是,可以使用色调来非常紧密地选择 Limelight 的 LED 输出的绿色。
调整阈值设置以尽可能多地从图像中消除内容是至关重要的。如果你在移动到下一阶段之前优化视觉管道的每个阶段,你将获得最佳结果。下图描述了不正确和正确阈值处理之间的区别:
有时,竞技场中的天花板灯或窗户等物体可能难以通过阈值处理从图像中移除,这就引出了下一个阶段。
轮廓过滤
阈值处理后,Limelight 的视觉管道会为图像生成一组轮廓。轮廓是围绕连续像素集的曲线。有时天花板灯、竞技场记分牌、窗户和其他东西可能会通过阈值处理步骤。这就是轮廓过滤变得有用的地方。目标是消除我们知道不是我们感兴趣的目标的任何轮廓。
第一个也是最简单的轮廓过滤是忽略任何小于我们从得分距 离看到的视觉目标的轮廓。任何小于该尺寸的东西显然是更远的东西,应该被忽略。这被称为面积过滤。
FRC 视觉目标通常具有一些可以用来帮助我们过滤轮廓的几何特性。例如,如果视觉目标具有宽的纵横比,我们可以过滤掉任何不宽的轮廓:
然而,请记住,你的摄像头可能从一个奇怪的角度看目标。这可能会极大地影响其轮廓的纵横比。请务必从各种角度测试你的设置,以确保你不会过于积极地过滤并最终忽略视觉目标!
这个下一个图像目标非常有趣。它是 FRC 中设计最好的视觉目标之一(在我们看来)。Limelight 自动计算一个称为轮廓充实度的值。充实度是轮廓的像素面积与其凸面积之比。这种特殊形状的充实度非常低,你几乎从不会看到任何天花板灯、窗户等具有如此低的充实度。因此,如果你的视觉目标看起来像这个,你可以非常有效地过滤掉不需要的轮廓。
Limelight 有许多用于过滤轮廓的选项。你可以将这些选项与你所知道的特定视觉目标的几何特性结合使用。
目前,如果多个轮廓通过你的过滤选项,会选择最大的轮廓。此外,管道倾向于使用滞后来"锁定"轮廓。这是一个有助于防止在相似目标之间闪烁的功能。