本项目实现了一个基于特征点光流与颜色直方图结合的多策略无人机目标跟踪系统,适用于处理无人机飞行视频中的目标追踪任务,具有鲁棒性强、追踪恢复能力好等特点。
该系统以三角翼无人机飞行测试素材为输入,通过用户手动选择目标区域(ROI),结合稠密特征点光流(Lucas-Kanade Optical Flow)与颜色反向投影直方图(Back Projection Histogram)相融合的方式,实现对目标的实时稳定跟踪。同时引入搜索区域动态扩展、丢失重捕获机制和遮挡恢复策略,增强对复杂场景下的适应能力。
-
初始化阶段
- 手动选择目标初始ROI区域;
- 提取初始区域的HSV颜色直方图;
- 提取初始区域的角点作为光流跟踪的特征点。
-
逐帧处理
- 将当前帧转换为灰度图和HSV图;
- 使用反向投影生成掩膜,限制光流计算范围;
- 利用金字塔Lucas-Kanade算法进行特征点跟踪;
- 基于点集均值和最大边界距离剔除离群点;
- 动态更新ROI窗口并绘制目标位置及中心坐标。
-
丢失恢复机制
- 若特征点跟踪失败或数量过少,自动扩大搜索区域;
- 应用MeanShift算法在颜色空间中重新定位目标;
- 重新提取当前ROI区域内的新特征点用于后续追踪。
-
多策略融合机制
- 前10帧同时使用颜色跟踪(MeanShift)与光流跟踪并行保障初始化阶段稳定性;
- 当光流失败时,回退至颜色跟踪策略并尝试恢复特征点。
- OpenCV 4.x:图像处理与视频解码;
- Lucas-Kanade 光流追踪:稠密角点光流(PyrLK)实现目标帧间跟踪;
- HSV直方图反向投影:基于颜色概率图的区域筛选;
- MeanShift 算法:辅助定位用于丢失重捕;
- 动态ROI调整与搜索范围扩展:增强对快速移动和丢失目标的处理能力;
- 遮挡鲁棒性策略:通过边界过滤与重初始化缓解目标遮挡问题。
特性 | 描述 |
---|---|
🎯 多策略融合 | 光流+颜色反向投影+MeanShift联合策略提升稳健性 |
🧠 智能鲁棒性 | 自动检测丢失,动态扩展搜索区域,自恢复目标 |
🕵️ 高精度跟踪 | 至多300个稠密特征点,提升跟踪精度 |
💡 离群点剔除 | 基于质心距离筛除无效点,提高ROI稳定性 |
🧩 可视化支持 | 实时显示目标位置与中心坐标,便于观察 |
- Python >= 3.8
- OpenCV >= 4.5
- Numpy >= 1.19
安装依赖:
pip install opencv-python numpy
- 修改
video_path
为本地无人机视频路径(也可以指定摄像头作为数据源); - 运行脚本后手动框选目标区域;
- 系统将自动进行目标跟踪并在窗口中展示跟踪过程;
- 按下
ESC
键退出。
.
├── drone_tracking.py # 主程序代码
├── README.md # 项目说明文档(即本文件)
初始ROI选取 | 光流追踪 | 小目标追踪 | 小目标追踪 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
🎥你可以在 这里 观看完整的视频演示
- 支持自动目标检测初始化(如YOLO、SAM);
- 引入Kalman滤波或卡尔曼预测增强运动模型;
- 小目标优化识别;
- 封装成模块并支持多目标跟踪扩展。
本项目感谢The shan的大力支持,目前还在优化迭代,code coming soon.