09 光流法实践

文章目录

    • [09 光流法实践](#09 光流法实践)
      • [9.1 光流法](#9.1 光流法)
      • [9.2 直接法](#9.2 直接法)
      • [9.3 总结](#9.3 总结)

09 光流法实践

光流法需要提取关键点,而不需要计算描述子;直接法直接利用像素信息,无需特征点。

9.1 光流法

光流法基于 灰度不变假设 ,即第一帧中的关键点的灰度与其在第二帧中的像素灰度相同。假设该关键点在第一帧 ( x , y ) (x, y) (x,y) 处,表示为 I ( x , y ) I(x, y) I(x,y)(这个值是已知的),我们希望找出 ( Δ x , Δ y ) (\Delta x, \Delta y) (Δx,Δy),从而求出该关键点在第二帧中的像素坐标 I ( x + Δ x , y + Δ y ) I(x+\Delta x, y+\Delta y) I(x+Δx,y+Δy)。(这样根据灰度就直接找到了关键点的位置,省去了匹配的过程,速度更快。)

  • 单层光流

采用优化的方法:

min ⁡ Δ x , Δ y ∥ I ( x , y ) − I ( x + Δ x , y + Δ y ∥ 2 2 \min_{\Delta x, \Delta y}\|\boldsymbol{I}(x, y)-\boldsymbol{I(x+\Delta x, y+\Delta y}\|_2^2 Δx,Δymin∥I(x,y)−I(x+Δx,y+Δy∥22

找出使像素灰度误差最小的位置坐标,即为关键点的位置。雅可比矩阵为第二张图像在 ( Δ x , Δ y ) (\Delta x, \Delta y) (Δx,Δy) 处的梯度。

步骤:

(1)第一帧提取关键点(不需要描述子);

(2)后一帧在前一帧的基础上跟踪,得到关键点的位置坐标;

(3)根据关键点匹配关系,对极几何恢复位姿

  • 多层光流

当相机运动较快,两张图像差异较大时,单层光流容易陷入局部最优,这时提出图像金字塔。

我们以原始图像为金字塔的底,以一定的倍率(如0.5)进行缩小(相当于与物体距离越来越远),假设原始图像特征点运动了 20 个像素,那么在缩小的图像里可能只运动了 5 个像素,搜索范围更小,优化结果可能就更好。

计算金字塔时从下往上,跟踪光流时从上往下,即由 粗至精

具体步骤:

(1)构建图像金字塔(一层层缩放,最小的在顶层,原始图像在底层);

(2)从顶层开始,在第一帧中提取描述子,在第二帧得到对应点坐标;

(3)将跟踪成功的关键点坐标乘以缩放系数,得到下一层中的像素坐标,继续追踪;

(4)循环以上步骤,最终得到原始图像的关键点对,进而恢复位姿。

9.2 直接法

假设有一空间点 P \boldsymbol{P} P,他在图一中的位置 p 1 \boldsymbol{p}_1 p1 是已知的,我们的目的是找到他在图二中的特征点 p 2 \boldsymbol{p}_2 p2。基于灰度不变假设, p 2 \boldsymbol{p}_2 p2 和 p 1 \boldsymbol{p}_1 p1 的灰度值是一致的,也就是说我们希望在图二中找到和 p 1 \boldsymbol{p}_1 p1 灰度值相同的像素点。 定义误差函数:

e = I 1 ( p 1 ) − I 2 ( p 2 ) e=\boldsymbol{I}_1(\boldsymbol{p}_1)-\boldsymbol{I}_2(\boldsymbol{p}_2) e=I1(p1)−I2(p2)

其中,

p 1 = [ u v 1 ] 1 = 1 Z 1 K P \boldsymbol{p}_1=\left[\begin{array}{l} u \\ v \\ 1 \end{array}\right]_1=\frac{1}{Z_1}\boldsymbol{KP} p1= uv1 1=Z11KP
p 2 = [ u v 1 ] 2 = 1 Z 2 K ( R P + t ) = 1 Z 2 K ( T P ) 1 : 3 (7-8) \boldsymbol{p}_2=\left[\begin{array}{l} u \\ v \\ 1 \end{array}\right]2=\frac{1}{Z_2}\boldsymbol{K}(\boldsymbol{RP+t})=\frac{1}{Z_2}\boldsymbol{K}(\boldsymbol{TP}){1:3} \tag{7-8} p2= uv1 2=Z21K(RP+t)=Z21K(TP)1:3(7-8)

p 1 \boldsymbol{p}_1 p1 , P \boldsymbol{P} P 是已知的,那么要想光度误差最小,只需要不断优化迭代位姿 T \boldsymbol{T} T 即可。

那么, P \boldsymbol{P} P 是哪里来的呢?

一是 RGB-D 相机可以直接得到三维点坐标,二是双目相机根据视差计算像素深度,三是单目相机恢复三维点坐标。

9.3 总结

相比于特征点法,直接法完全依靠优化来求解相机位姿。

(1)直接法优点

  • 可以省去计算特征点、描述子的时间;

  • 只需要像素梯度即可,不需要特征点,因此可以在缺失特征点的场合下使用;

  • 可构件半稠密乃至稠密地图,这是特征点法做不到的。

(2)直接法缺点

  • 非凸性:优化时容易进入极小,只有在运动很小的时候直接法才能成功,引入金字塔在一定程度上可减小非凸性影响。

  • 单个像素没有区分度:选点少时效果较差,一般用 500 个点以上;

  • 灰度不变假设是很强的假设,相机会自动调整曝光参数、或者光照变化,都会使得图像整体亮度发生变化。

相关推荐
董董灿是个攻城狮9 小时前
AI视觉连载8:传统 CV 之边缘检测
算法
AI软著研究员16 小时前
程序员必看:软著不是“面子工程”,是代码的“法律保险”
算法
FunnySaltyFish17 小时前
什么?Compose 把 GapBuffer 换成了 LinkBuffer?
算法·kotlin·android jetpack
颜酱18 小时前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
地平线开发者1 天前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮1 天前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者1 天前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考1 天前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx2 天前
CART决策树基本原理
算法·机器学习
Wect2 天前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript