提示和技巧#
演示模式#
演示模式允许您在没有主处理器的情况下演示 CMUcam4。在演示模式下,CMUcam4 执行 "TW"(跟踪窗口)命令,然后驱动两个标准的爱好者舵机朝向被跟踪的物体,同时在标准电视上显示被跟踪的物体。CMUcam4 一旦进入演示模式,在复位之前将不会退出演示模式。请按照以下步骤进入演示模式:
按住 CMUcam4 上的 复位按钮
按住 CMUcam4 上的 用户按钮
松开 复位按钮(不要松开 用户按钮)
等到红色辅助 LED 亮起(2 秒钟)
等到红色辅助 LED 开始以 10 Hz 闪烁,然后松开 用户按钮
如果 CMUcam4 已连接到电视,电视应会打开(您应会看到电视上显示一个启动画面)
CMUcam4 现在将在接下来的 5 秒钟 内调整以适应光照条件
在接下来的 5 秒钟 内,不要将您想要跟踪的物体放在 CMUcam4 前面
等到红色辅助 LED 停止以 10 Hz 闪烁
CMUcam4 现在已完成对光照条件的调整
水平和垂直舵机引脚应以 50 Hz 输出 1500 μs 脉冲
将您想要跟踪的物体放在 CMUcam4 前面,然后按下 用户按钮
如果红色辅助 LED 开始以 10 Hz 闪烁,请检查 OV9665 相机模块连接
OV9665 相机模块可能已损坏,很可能需要更换
如果 CMUcam4 已连接到电视,您现在应该会看到被跟踪的物体(或类似物)显示在电视上
水平和垂直舵机(如果已连接)也将尝试驱动相机朝向被跟踪的物体
请在不同的环境中用不同的物体尝试此步骤,以了解哪种效果最好
CMUcam4 现在正在演示模式下运行
按 复位按钮 退出演示模式。
对于水平舵机的非反向操作,小于 1500 µs 的脉冲长度必须使相机模块的 X 位置向右移动(从相机模块的视角),大于 1500 µs 的脉冲长度必须使相机模块的 X 位置向左移动(从相机模块的视角)。
对于垂直舵机的非反向操作,小于 1500 µs 的脉冲长度必须使相机模块的 Y 位置向下移动(从相机模块的视角),大于 1500 µs 的脉冲长度必须使相机模块的 Y 位置向上移动(从相机模块的视角)。
停机模式#
停机模式允许您在仍连接到 Arduino 的情况下停止 CMUcam4。在停机模式下,CMUcam4 消耗的功率非常小,并且不会通过阻塞 Arduino 的串行端口来阻止对 Arduino 进行编程。仅当 CMUcam4 干扰 Arduino 编程过程时才需要停机模式。如果不干扰,则不需要停机模式——通常情况就是如此。CMUcam4 一旦进入停机模式,在复位之前将不会退出停机模式。请按照以下步骤进入停机模式:
按住 CMUcam4 上的 复位按钮
按住 CMUcam4 上的 用户按钮
松开 复位按钮(不要松开 用户按钮)
等到红色辅助 LED 亮起(2 秒钟)
松开 用户按钮
CMUcam4 现在被无限期停机
按 复位按钮 退出停机模式。
关于更好跟踪的说明#
使用自动增益和白平衡实现更好的跟踪#
自动增益是一种内部控制,用于调整图像的亮度水平以最适合环境。它试图对图像中的明暗进行归一化,使其近似于手动调整图像的整体亮度。当相机自动调整其亮度水平时,此过程会在许多帧上迭代进行。例如,如果打开了一盏灯而环境变亮,相机将尝试调整亮度以使整体图像变暗。
另一方面,白平衡试图校正相机的颜色增益。图像中的环境光可能不是纯白色。在这种情况下,相机会以不同的方式看待颜色。相机以对每个颜色通道给予多少增益的初始猜测开始。如果处于活动状态,白平衡将逐帧调整这些增益,以使图像中的平均颜色接近灰色。根据经验,这种"灰度世界"方法被发现效果相对较好。灰度世界白平衡的问题在于,如果单一颜色填满了相机的视野,白平衡将缓慢地设置增益,使该颜色看起来是灰色而不是其真实颜色。然后当移除单一颜色时,图像将具有不理想的颜色增益,直到它重新建立其灰色平均值。
在跟踪颜色时,就像在演示模式下一样,您可能希望让自动增益和白平衡运行一小段时间,然后将它们关闭。在开启大约 5 秒钟的时间里,相机可以将其亮度增益和颜色增益设置为它认为合适的值。然后将它们关闭将阻止相机由于物体靠近镜头、阴影等原因而不必要地更改其设置。如果没有禁用自动增益和白平衡,并且相机更改了 RGB 或 YCbCr 值的设置,那么新测量的值可能会落在最初选择的颜色跟踪阈值之外。
相机模块需要启用自动增益才能使用白平衡。
YUV (YCbCr) 颜色空间#
YCbCr 是一种与更为人熟知的 RGB 空间不同的颜色空间定义。在 YCbCr 中,光照数据存储在一个单独的通道中。由于这一特性,在 YCbCr 模式下,相机可能对光照变化更具抵抗力。由于它是一种不同的颜色空间,YCbCr 中的图像在被帧转储程序直接映射时看起来不像标准的 RGB 图像。RGB 通道映射到 CrYCb。因此,在 YCbCr 模式下,作为红色参数返回的值实际上是 Cr,绿色参数是 Y,蓝色参数是 Cb。因此,如果您想跟踪一个红色物体,您需要查看转储的帧,以了解该物体的颜色在 YCbCr 中映射为什么。然后应该可以找到 Cb 和 Cr 边界,同时给出一个非常宽松的 Y 边界,表明光照不是很重要。使用 YCbCr 时,请确保您考虑到,就所有 CMUcam4 I/O 而言,红色映射到 Cr,绿色映射到 Y,蓝色映射到 Cb。
请注意,RGB 通道映射后得到的是 CrYCb,而不是 YCbCr。
关于相机模块#
从上电开始,相机可能需要长达 5 秒的时间来自动适应光线。环境的剧烈变化,例如灯的开关,可能会导致类似的重新调整时间。在户外使用相机时,由于太阳强烈的红外辐射,即使在相对多云的日子里,也可能需要使用红外滤光片或中性密度相机滤光片来降低环境光水平。
相机板提供的功能旨在为用户提供一个彩色视觉功能工具箱。实际应用可能千差万别,并留给用户的想象力。更改可视窗口、抓取颜色和光照统计信息以及跟踪颜色的能力可以由主处理器交织在一起,以创建更高级别的功能。