第1章:数学基础回顾

各位同学好,我是你们的老朋友。今天咱们开始《目标关联算法实战应用》的第一课。

说实话,很多人一上来就啃卡尔曼滤波、马氏距离,结果越学越懵。为什么?因为数学底子没打牢。我当年刚入行时也踩过这个坑——项目做到一半,发现连协方差矩阵都理解错了,那叫一个尴尬。

所以这一章,咱们把基础夯实。别急,我会用最接地气的方式讲清楚。

1.1 向量与矩阵运算

先问个问题:目标关联里,我们为什么要用向量和矩阵?

说白了,一个目标的状态(位置、速度、加速度)就是一个向量。多个目标的状态堆在一起,就是矩阵。你想想看,如果不用矩阵,你要手动算几十个目标的距离?那不得累死。

向量点积:两个向量的对应元素相乘再求和。公式很简单:

a · b = a₁b₁ + a₂b₂ + ... + aₙbₙ

我在项目中常用点积算相似度。比如两个特征向量,点积越大,说明越像。

矩阵乘法:这个稍微绕一点。记住一句话:左行乘右列。

C = A × B
C[i][j] = Σ A[i][k] × B[k][j]
小技巧:我习惯把矩阵乘法想象成「行向量与列向量的点积」。这样好记,也不容易算错。

转置与逆矩阵:转置就是把行和列互换。逆矩阵嘛,相当于矩阵的「倒数」。注意了,不是所有矩阵都有逆——行列式为0的矩阵,就是奇异矩阵,没有逆。

避坑指南:我曾经在计算马氏距离时,忘了检查协方差矩阵是否可逆。结果程序直接崩了。后来我养成了习惯:算逆之前,先算行列式。

1.2 欧氏距离与马氏距离

距离度量,是目标关联的核心。你总得知道两个目标「有多像」吧?

欧氏距离:最直观的距离。就是你在初中就学过的两点间距离公式。

d(x, y) = √[(x₁ - y₁)² + (x₂ - y₂)² + ... + (xₙ - yₙ)²]

欧氏距离有个大问题:它假设所有维度同等重要。但在实际中,不同维度的尺度可能差很多。比如位置是米级,速度是米/秒级,加速度是米/秒²级。直接算欧氏距离,位置会主导结果。

马氏距离:这个就聪明多了。它考虑了数据的分布和相关性。

d(x, y) = √[(x - y)ᵀ · Σ⁻¹ · (x - y)]

其中Σ是协方差矩阵。说白了,马氏距离就是「标准化后的欧氏距离」。它把不同维度的尺度统一了,还考虑了维度之间的相关性。

实战经验:我在做多目标跟踪时,欧氏距离经常把相近的目标搞混。换成马氏距离后,准确率提升了15%以上。尤其是目标密集的场景,马氏距离的优势特别明显。

举个例子:假设有两个目标,位置分别是(1,2)和(3,4),速度分别是(5,6)和(7,8)。用欧氏距离算,位置差和速度差是「平等」的。但用马氏距离,如果速度的方差比位置大,马氏距离会自动给速度维度「降权」。

1.3 卡尔曼滤波基础

卡尔曼滤波,说白了就是「用上一刻的状态,预测下一刻的状态,再用观测值修正」。我刚开始学的时候,觉得公式一堆,头大。后来发现,核心就五个公式。

预测阶段:

x̂ₖ|ₖ₋₁ = F · x̂ₖ₋₁|ₖ₋₁ + B · uₖ
Pₖ|ₖ₋₁ = F · Pₖ₋₁|ₖ₋₁ · Fᵀ + Q

更新阶段:

Kₖ = Pₖ|ₖ₋₁ · Hᵀ · (H · Pₖ|ₖ₋₁ · Hᵀ + R)⁻¹
x̂ₖ|ₖ = x̂ₖ|ₖ₋₁ + Kₖ · (zₖ - H · x̂ₖ|ₖ₋₁)
Pₖ|ₖ = (I - Kₖ · H) · Pₖ|ₖ₋₁

别怕,咱们拆开看:

  • F:状态转移矩阵。描述目标怎么运动(匀速?匀加速?)
  • Q:过程噪声。你预测得越不准,Q就越大。
  • R:观测噪声。传感器越不准,R就越大。
  • K:卡尔曼增益。它决定了「你更相信预测,还是更相信观测」。
我的习惯:调参时,先固定Q,调R。R调好了,再微调Q。这样不容易乱。我曾经一次调五个参数,结果越调越差。

举个实际例子:你在跟踪一辆车。上一秒它在(10,20),速度(5,0)。你预测下一秒它在(15,20)。但传感器说它在(14,21)。卡尔曼滤波会综合预测和观测,给出一个「折中」的位置。如果传感器很准(R小),就更相信观测;如果模型很准(Q小),就更相信预测。

1.4 概率论基础:贝叶斯公式

贝叶斯公式,是目标关联的「灵魂」。没有它,卡尔曼滤波、数据关联都玩不转。

P(A|B) = P(B|A) · P(A) / P(B)

翻译成人话:

  • P(A):先验概率。在没看到数据之前,你觉得A有多可能?
  • P(B|A):似然。如果A是真的,那么看到B的概率有多大?
  • P(A|B):后验概率。看到B之后,你对A的信念更新了多少?

我举个例子你就明白了。假设你在做目标检测:

  • A = 「这个目标是行人」
  • B = 「传感器检测到目标有两条腿」

先验P(A):在没看传感器数据前,你觉得是行人的概率是0.3(因为也可能是车、自行车)。

似然P(B|A):如果真是行人,看到两条腿的概率是0.95。

P(B):看到两条腿的总概率,包括行人和非行人。假设非行人也有0.1的概率被误检为两条腿。

那么后验概率:

P(A|B) = 0.95 × 0.3 / (0.95 × 0.3 + 0.1 × 0.7) ≈ 0.80

看到了吗?看到两条腿后,你从「30%相信是行人」更新到了「80%相信」。这就是贝叶斯更新的威力。

实战应用:在目标关联中,我们经常用贝叶斯公式计算「两个目标属于同一轨迹」的概率。先验是历史匹配概率,似然是当前观测的相似度,后验就是更新后的关联概率。

嗯,这里要注意:贝叶斯公式要求P(B)不为0。如果P(B)=0,说明这个观测不可能发生,那就不用算了。

本章小结

这一章我们讲了四个基础:

  1. 向量与矩阵:目标状态和运算的载体
  2. 欧氏距离与马氏距离:衡量目标相似度的工具
  3. 卡尔曼滤波:状态预测与更新的框架
  4. 贝叶斯公式:信念更新的数学基础

这四个东西,就像盖房子的砖瓦。后面每一章都会用到。我建议你花点时间,把矩阵乘法和贝叶斯公式手算几遍。别偷懒,手算一遍顶看十遍。

最后送大家一句话:数学不是用来背的,是用来「用」的。你在项目中用一次,就永远忘不掉了。

目标关联算法数学基础体系 数学基础 向量与矩阵运算 点积、乘法、转置、逆 距离度量 欧氏距离 vs 马氏距离 卡尔曼滤波 预测 + 更新 = 最优估计 贝叶斯公式 先验 → 似然 → 后验 状态表示 数据关联 状态预测 概率更新
可可精品资料库