多目标多摄像机跟踪

本文介绍了多目标多摄像机跟踪(MTMCT)技术,包括局部轨迹生成和跨摄像头匹配方法。同时,详细探讨了单应性矩阵的概念及其在图像拼接、校正、视角变换和增强现实中的应用。通过四点对法求解单应矩阵,并提及了深度学习方法如HomographyNet在估计单应性变换中的作用。
摘要由CSDN通过智能技术生成

1. 简介

  • MTMCT:Multi-Target Multi-Camera Tracking (摄像头多目标跟踪)

1.1 MTMCT匹配方法

  • 轨迹到轨迹(Tracklet-to-Tracklet)匹配
    • 第一步:局部轨迹生成阶段,该阶段在单个摄像头内跟踪每个检测到的目标,并为其生成局部轨迹
    • 第二步:跨摄像头轨迹匹配阶段,该阶段在所有摄像头中匹配局部轨迹来为整个跨摄像头网络中的每个目标生成其完整的轨迹,即使用轨迹到轨迹(Tracklet-to-Tracklet)匹配
  • 局部轨迹与目标间的匹配(Tracklet-to-Target )
    在这里插入图片描述
    • 框架的输入是来自M个摄像头的M个视频剪辑
      • (a):局部轨迹生成模块
      • (b):轨迹相似度测量模块
      • ©:跨摄像头轨迹匹配模块
      • (d):全局轨迹生成模块

1.2 MTMCT数据集

  • 具有重叠FOV的相机拍摄:PETS09S2L1,CAMPUS,EPFL
  • 不具有重叠FOV的相机拍摄:MCT

1.3 基本变换

在这里插入图片描述

  • 刚体变换:平移+旋转,只改变物体位置,不改变物体形状。旋转矩阵是正交矩阵( R R T = R T R = I RR^T = R^TR=I RRT=RTR=I
  • 仿射变换:改变物体位置和形状,但是保持“平直性”(原来平行的边依然平行)” ( A 2 × 2 A_{2 \times 2} A2×2可以是任意2x2矩阵,与R一定是正交矩阵不同)
    [ x ′ y ′ 1 ] = [ A 2 × 2 T 2 × 1 0 T 1 ] [ x y 1 ] \begin{bmatrix} x' \\ y' \\ 1 \\ \end{bmatrix} = \begin{bmatrix} A_{2 \times 2} & T_{2 \times 1} \\ 0^T & 1 \\ \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \\ \end{bmatrix} xy1=[A2×20TT2×11]xy1
  • 投影变换(单应性变换) :彻底改变物体位置和形状
    [ x ′ y ′ 1 ] = [ A 2 × 2 T 2 × 1 V T s ] [ x y 1 ] = H 3 × 3 [ x y 1 ] \begin{bmatrix} x' \\ y' \\ 1 \\ \end{bmatrix} = \begin{bmatrix} A_{2 \times 2} & T_{2 \times 1} \\ V^T & s \\ \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \\ \end{bmatrix} = H_{3 \times 3} \begin{bmatrix} x \\ y \\ 1 \\ \end{bmatrix} xy1=[A2×2VTT2×1s]xy1=H3×3xy1
    H 3 × 3 = [ A 2 × 2 T 2 × 1 V T s ] = [ a 11 a 12 t x a 21 a 22 t y v 1 v 2 s ] H_{3 \times 3} = \begin{bmatrix} A_{2 \times 2} & T_{2 \times 1} \\ V^T & s \\ \end{bmatrix}= \begin{bmatrix} a_{11} & a_{12} & t_x \\ a_{21} & a_{22} & t_y \\ v_1 & v_2 & s \\ \end{bmatrix} H3×3=[A2×2VTT2×1s]=a11a21v1a12a22v2txtys
  • A 2 × 2 A_{2 \times 2} A2×2:代表仿射变换参数
  • T 2 × 1 T_{2 \times 1} T2×1:代表平移变换参数
  • V T = [ v 1 , v 2 ] V^T = [v_1, v_2] VT=[v1,v2]:表示一种“变换后边缘交点“关系
  • s s s:表示一个与 V T V^T VT相关的缩放因子
    在这里插入图片描述

2. 单应性矩阵(Homography Matrix)

2.1 基本概念

  • Homography:“Homo”前缀就是same的意思,表示“同”,homography就是用同一个源产生的graphy,中文译过来大概就是“单应”。即用 [无镜头畸变] 的相机从不同位置拍摄 [同一平面物体] 的图像之间存在单应性,可以用 [投影变换] 表示
    在这里插入图片描述
    [ x l y l 1 ] = H 3 × 3 [ x r y r 1 ] \begin{bmatrix} x_l \\ y_l \\ 1 \\ \end{bmatrix} = H_{3 \times 3} \begin{bmatrix} x_r \\ y_r \\ 1 \\ \end{bmatrix} xlyl1=H3×3xryr1

    • ( x l , y l ) (x_l, y_l) (xl,yl):是Left view图片上的点
    • ( x r , y r ) (x_r, y_r) (xr,yr):是Right view图片上的点
  • 单应性原理被广泛应用于图像配准,全景拼接,机器人定位SLAM,AR增强现实等领域

  • 单应性矩阵功能(3x3矩阵):从一个像平面上的点映射得到另一个像平面上的对应点

  • 单应性矩阵求解:由于有8个未知数,所以需要4个点对就可以进行求解了

2.2 应用实例

2.2.1图像拼接

  • 通过图像特征点匹配+RANSAC可以获得图像之间的单应性矩阵,然后把其中一个图像通过这个矩阵投影到另一个图像上就完成了基本的拼接
  • 如下图所示,通过单应矩阵H可以将image1和image2都变换到同一个平面
    在这里插入图片描述
  • 单应矩阵用于图像拼接的例子如下所示:
    在这里插入图片描述

2.2.2 图像校正

  • 用单应矩阵进行图像矫正的例子如下图所示,最少需要四个对应点对就可以实现
    在这里插入图片描述

2.2.3 视角变换

  • 单应矩阵用于视角变换的例子如下图所示,可以方便地将左边普通视图转换为右图的鸟瞰图
    在这里插入图片描述

2.2.4 增强现实(AR)

  • 平面二维标记图案(marker)经常用来做AR展示。根据marker不同视角下的图像可以方便的得到虚拟物体的位置姿态并进行显示,如下图所示
    在这里插入图片描述

2.3 估计单应矩阵

2.3.1 四点对法

  • 我们假设两张图像中的对应点对齐次坐标为(x’,y’,1)和(x,y,1),单应矩阵H定义为:
    H = [ h 11 h 12 h 13 h 21 h 22 h 23 h 31 h 32 h 33 ] H = \begin{bmatrix} h_{11} & h_{12} & h_{13} \\ h_{21} & h_{22} & h_{23} \\ h_{31} & h_{32} & h_{33} \\ \end{bmatrix} H=h11h21h31h12h22h32h13h23h33

  • 则有:
    [ x ′ y ′ 1 ] = [ h 11 h 12 h 13 h 21 h 22 h 23 h 31 h 32 h 33 ] [ x y 1 ] \begin{bmatrix} x' \\ y' \\ 1 \\ \end{bmatrix} = \begin{bmatrix} h_{11} & h_{12} & h_{13} \\ h_{21} & h_{22} & h_{23} \\ h_{31} & h_{32} & h_{33} \\ \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \\ \end{bmatrix} xy1=h11h21h31h12h22h32h13h23h33xy1

  • 展开即可得:
    x ′ = h 11 x + h 12 y + h 13 h 31 x + h 32 y + h 33 y ′ = h 21 x + h 22 y + h 23 h 31 x + h 32 y + h 33 x' = \frac {h_{11} x + h_{12}y + h_{13}}{h_{31} x + h_{32}y + h_{33}} \\ y' = \frac {h_{21} x + h_{22}y + h_{23}}{h_{31} x + h_{32}y + h_{33}} x=h31x+h32y+h33h11x+h12y+h13y=h31x+h32y+h33h21x+h22y+h23

  • 如何根据标定图得到单应矩阵?
    在这里插入图片描述

    • 打印一张棋盘格标定图纸,将其贴在平面物体的表面。
    • 拍摄一组不同方向棋盘格的图片,可以通过移动相机来实现,也可以移动标定图片来实现
    • 对于每张拍摄的棋盘图片,检测图片中所有棋盘格的特征点(角点,也就是下图中黑白棋盘交叉点,中间品红色的圆圈内就是一个角点)。我们定义打印的棋盘图纸位于世界坐标系Zw=0的平面上,世界坐标系的原点位于棋盘图纸的固定一角(比如下图中黄色点)。像素坐标系原点位于图片左上角
    • 因为棋盘标定图纸中所有角点的空间坐标是已知的,这些角点对应在拍摄的标定图片中的角点的像素坐标也是已知的,如果我们得到这样的N>=4个匹配点对(越多计算结果越鲁棒),就可以根据LM等优化方法得到其单应矩阵H。
    • OpenCV实现:只要输入匹配点对,指定具体计算方法即可输出结果单应矩阵
Mat findHomography(InputArray srcPoints, InputArray dstPoints, int method=0, double ransacReprojThreshold=3, OutputArray mask=noArray() )
- 示例代码:
import cv2
import numpy as np

im1 = cv2.imread('left.jpg')
im2 = cv2.imread('right.jpg')

src_points = np.array([[581, 297], [1053, 173], [1041, 895], [558, 827]])
dst_points = np.array([[571, 257], [963, 333], [965, 801], [557, 827]])

H, _ = cv2.findHomography(src_points, dst_points)

h, w = im2.shape[:2]

im2_warp = cv2.warpPerspective(im2, H, (w, h))

2.3.2 HomographyNet(深度学习end2end估计单应性变换矩阵)

  • 参考论文《Deep Image Homography Estimation》
  • HomographyNet是发表在CVPR 2016的一种用深度学习计算单应性变换的网络,即输入两张图,直接输出单应性矩阵 H H H
    在这里插入图片描述
在Python中实现多目标跟踪可以使用YOLO和SORT算法。首先,需要建立跟踪器并读取视频的第一帧,然后选择要跟踪目标并初始化跟踪器。接下来,随着视频的更新,不断更新跟踪器。具体实现的Python代码示例如下: (1) 打开视频或摄像机,获取第一帧 (2) 在第一帧中选择目标ROI (3) 初始化多目标跟踪器 (4) 按帧更新跟踪器 这些步骤可以使用OpenCV等库来实现。如果你想获取完整的代码文件和资源,请参考提供的博客和视频。你可以通过PyCharm运行主程序runMain.py,也可以直接运行camera_detection_tracking.py和video_detection_tracking.py这两个脚本文件来使用摄像头或视频进行检测和跟踪。为确保程序顺利运行,建议配置的Python依赖包版本如下: - opencv-contrib-python 4.5.1.48 - PyQt5 5.15.2 - scikit-learn 0.22 - numba 0.53.0 - imutils 0.5.4 - filterpy 1.4.5 - tqdm 4.56.0 这些依赖包可以通过pip来安装。以上就是实现多目标跟踪的Python代码的相关信息。如果你需要更多的详细信息和完整的代码,请参考提供的博文和下载链接。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python图像处理——基于OpenCV的目标跟踪实现](https://blog.csdn.net/qq_43360420/article/details/125773057)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [实时车辆行人多目标检测与跟踪系统-上篇(UI界面清新版,Python代码)](https://blog.csdn.net/qq_32892383/article/details/115278856)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值