使用云台相机进行实时对象跟踪(肤色追踪实验)
IPC摄像头将跟踪对象保持在视频的中心。
硬件
FPGA Zybo
AXIS V5915 50HZ PTZ
介绍
对象跟踪是在视频序列的每个连续帧中寻找感兴趣的区域,在许多应用中都很有用,例如汽车行业、自动视频监控系统和手势识别。
该项目展示了使用 Zybo Z7-20 SoC 的 FPGA 加速跟踪算法。该系统还包含 AXIS V5915 PTZ 摄像机,通过与摄像机服务器的 TCP 连接而进行控制达到我们的目的。
肤色追踪
肤色识别是在YCbCr色彩空间中完成的,可以通过RGB像素乘以3x3转换矩阵来实现:
转换后,可以创建肤色分类掩码,255 值表示像素被认为是皮肤。
Ta、Tb、Tc、Td 值是通过实验确定的。
分类后,可以计算皮肤区域的中心坐标:
具体位置计算:
Im(i, j) 是 (i, j) 像素坐标的掩码值。
控制相机的位置
相机的服务器在 TCP 端口 80 上接受 HTTP 请求,其结构如下所示:
例如,如果我们想将相机绕垂直轴向右旋转 10 度,则应发送以下请求:
其他参数如下表所示:
系统架构设计
使用异构 Zynq-7000 SoC,可以将项目划分为两个子系统:在可编程逻辑中实现的肤色跟踪算法,负责计算跟踪对象位置并将其写入 AXI4 Lite 接口,以及负责从 AXI4 获取对象坐标的相机控制系统接口并通过 TCP 循环控制相机的速度。总图如图 1 所示。
PS端设计
使用了 Xilinx SDK自带的 TCP Client 示例项目的进行修改。主程序循环如图所示(详细见源码)。
PL端设计
顶块设计如图所示。
演示
源码
❝https://gitee.com/openfpga/ddctracking/tree/master