单应矩阵的两种形式(两帧运动模型与棋盘格模型)
一、引言
最近做视觉的充电桩自动对接项目,先搭建基于棋盘格的demo出来。由于棋盘格的角点都是平面的,理所当然的应当用单应矩阵去计算位姿。由于单应矩阵这块不是很熟,所以拿出了高翔的视觉十四讲准备对着这个编写。高翔大佬的书上对这块介绍不多,计算完单应矩阵后就没有详细讲如何分解并选择为R和t,所以打算上网搜搜(偷懒.jpg)。百度相关的介绍不多,并且都是与分解R和t不相关的。只好去谷歌搜一下。
但是,在opencv
的例程中,我看到了一些不一样的解释和方法,这种方法针对棋盘格标定,泛用性不是那么强,但是很有意思,在关于棋盘格定位的特定任务下简单快捷,因此想和大家分享一下。
二、两帧运动模型的单应矩阵
这个模型推导详见高翔的书上,这里就不在献丑了。从原理上来说,这种方法和求解基础矩阵毫无二致,这里基础矩阵被定义为:
p t 1 = H t 1 t 2 p t 2 w h e r e : H t 1 t 2 = K ( c R t 1 t 2 − t n T d ) K − 1 p_{t1} = H^{t2}_{t1}\ p_{t2}\\ where :\ \ H^{t2}_{t1} = K(^cR^{t2}_{t1}-\frac{tn^T}{d})K^{-1} pt1=Ht1t2 pt2where: Ht1t2=K(cRt1t2−dtnT)K−1
这里的 p t p_t p