博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
直接线性变换(DLT) 、P3P问题;RANSAC;相机标定;对极约束、本质矩阵(Essential Matrix)
阅读量:4227 次
发布时间:2019-05-26

本文共 3949 字,大约阅读时间需要 13 分钟。

直接线性变换(Direct Linear Transform,DLT)

s [ u v 1 ] = [ r 11 r 12 r 13 t x r 21 r 22 r 23 t y r 31 r 32 r 33 t z ] [ X w Y w Z w 1 ] s\begin{bmatrix} u \\ v \\ 1 \end{bmatrix} =\begin{bmatrix} r_{11} & r_{12} & r_{13} & t_x \\ r_{21} & r_{22} & r_{23} & t_y \\ r_{31} & r_{32} & r_{33} & t_z \end{bmatrix} \begin{bmatrix} X_{w} \\ Y_{w} \\ Z_{w} \\ 1 \end{bmatrix} suv1=r11r21r31r12r22r32r13r23r33txtytzXwYwZw1

由于 RT 一共有12维,因此,最少通过6对匹配点即可实现矩阵 RT 的线性求解,这种方法称为直接线性变换(Direct Linear Transform,DLT)。当匹配点大于6对时,也可以使用SVD等方法对超定方程求最小二乘解。

但由于 R 是一个旋转矩阵,其内部存在约束 R T = R − 1 , R R T = I , d e t ( R ) = 1 R^T=R^{-1},RR^T=I,det(R)=1 RT=R1,RRT=I,det(R)=1,实际只需要三个变量就能表示。参考罗德里格斯公式(Rodrigues’s Formula)

旋转矩阵有一些特别的性质。 事实上, 它是一个行列式为1的正交矩阵 R T = R − 1 R^T=R^{-1} RT=R1。 反之,行列式为1的正交矩阵也是一个旋转矩阵。 所以, 可以把旋转矩阵的集合定义如下:

S O ( n ) = { R ∈ R n × n ∣ R R T = I , d e t ( R ) = 1 } SO(n)=\{R\in \mathbb{R}^{n \times n}|RR^T=I,det(R)=1\} SO(n)={

RRn×nRRT=I,det(R)=1}

当只有3对点时,可以考虑如下约束,进行非线性求解

[ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] T = I \left[\begin{matrix}r_{11} & r_{12} & r_{13}\\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{matrix}\right]\left[\begin{matrix}r_{11} & r_{12} & r_{13}\\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{matrix}\right]^T=I r11r21r31r12r22r32r13r23r33r11r21r31r12r22r32r13r23r33T=I

整理得:

{ r 11 2 + r 12 2 + r 13 2 = 1 r 11 r 21 + r 12 r 22 + r 13 r 23 = 0 r 11 r 31 + r 12 r 32 + r 13 r 33 = 0 r 21 2 + r 22 2 + r 23 2 = 1 r 21 r 31 + r 22 r 32 + r 23 r 33 = 0 r 31 2 + r 32 2 + r 33 2 = 1 \left\{\begin{matrix}r_{11}^2+r_{12}^2+r_{13}^2=1\\r_{11}r_{21}+r_{12}r_{22}+r_{13}r_{23}=0\\r_{11}r_{31}+r_{12}r_{32}+r_{13}r_{33}=0\\r_{21}^2+r_{22}^2+r_{23}^2=1\\r_{21}r_{31}+r_{22}r_{32}+r_{23}r_{33}=0\\r_{31}^2+r_{32}^2+r_{33}^2=1\end{matrix}\right. r112+r122+r132=1r11r21+r12r22+r13r23=0r11r31+r12r32+r13r33=0r212+r222+r232=1r21r31+r22r32+r23r33=0r312+r322+r332=1

共6个方程,再加上3对点的6个方程,从而可以利用 LM 算法求解。

三点透视问题(Perspective-Three-Point Problem,P3P)

可以利用三角几何关系列方程求解,与非线性求解等价。

在求解P3P问题时,将三个三元二次方程,转换为两个二元二次方程,最终化为一个一元四次方程,从而求出了该问题的闭式解。

RANSAC(RANdom SAmple Consensus)

RANSAC的特点主要是可以从包含大量误差的数据中拟合出较为准确的模型。

该算法不同于最小二乘法,并没有将全部数据进行计算,而是类似于剔除粗大误差将计算为有效的点用来估计模型,从而使得估计更加准确。可以将其与Kmeans算法相结合用于数据模型的估计。

位置确定问题(Location Determination Problem, LDP)中的应用:即已知一组空间点的坐标,且给定了一张图像,并知道图像中点与空间点的对应关系,求图像的透视中心点在空间中的位置与姿态。

相机标定(Camera Calibration)

如果显示器模拟图像空间姿态变换用以标定相机,那么就说明已经知道了这个单应矩阵,因此该方法用于标定相机理论不可行。

对极约束

x 2 T t ∧ R x 1 = 0 x_2^Tt^\wedge Rx_1=0 x2TtRx1=0

p 2 T K − T t ∧ R K − 1 p 1 = 0 p_2^TK^{-T}t^\wedge RK^{-1}p_1=0 p2TKTtRK1p1=0

这两个式子都称为对极约束,它以形式简洁著名。它的几何意义是O1,P,O2三者共面。对极约束中同时包含了平移和旋转。我们把中间部分记作两个矩阵:基础矩阵(Fundamental Matrix)F和本质矩阵(Essential Matrix)E,于是可以进一步简化对极约束:

E = t ∧ R , F = K − T E K − 1 , x 2 T E x 1 = p 2 T F p 1 = 0 E=t^\wedge R, F=K^{-T}EK^{-1}, x_2^TEx_1=p_2^TFp_1=0 E=tR,F=KTEK1,x2TEx1=p2TFp1=0

由于E和F只相差了相机内参,而内参在SLAM中通常是已知的,所以实践当中往往使用形式更简单的E。

本质矩阵(Essential Matrix)

由于平移和旋转各有3个自由度,故 t ∧ R t^\wedge R tR 共有6个自由度。但由于尺度等价性,故 E 实际上有5个自由度。

E具有5个自由度的事实,表明我们最少可以用5对点来求解E。但是,E的内在性

质是一种非线性性质,在求解线性方程时会带来麻烦,因此,也可以只考虑它的尺度
等价性,使用8对点来估计E——这就是经典的八点法(Eight-point-algorithm)[38,39]
。八点法只利用了E的线性性质,因此可以在线性代数框架下求解。

[ u 1 v 1 1 ] [ e 1 e 2 e 3 e 4 e 5 e 6 e 7 e 8 e 9 ] [ u 2 v 2 1 ] = 0 \left[\begin{matrix}u_1&v_1&1\\\end{matrix}\right] \left[\begin{matrix}e_1&e_2&e_3\\e_4&e_5&e_6\\e_7&e_8&e_9\\\end{matrix}\right] \left[\begin{matrix}u_2\\v_2\\1\\\end{matrix}\right]=0 [u1v11]e1e4e7e2e5e8e3e6e9u2v21=0

OpenCV 中还有 7-point algorithm

参考文献

视觉SLAM十四讲:从理论到实践

视觉测量原理与方法
OpenCV官方文档
[Fischler81]Random Sample Consensus A Paradigm for Model Fitting with Applications to Image Analysis and Automated Cartography
k-means++: The Advantages of Careful Seeding
Complete Solution Classification for the Perspective-Three-Point Problem
A Flexible New Technique for Camera Calibration
1997-PAMI-Richard I. Hartley-In Defense of the Eight-Point Algorithm

转载地址:http://kucqi.baihongyu.com/

你可能感兴趣的文章
VC用法汇总
查看>>
CString常用方法小结
查看>>
标准MFC WinSock ActiveX控件开发实例
查看>>
DLL+ ActiveX控件+WEB页面调用例子
查看>>
VC中一些控件的小技巧
查看>>
一个好友的收藏。小洪(洪承煜),不打招呼就转载一下罗,呵呵
查看>>
面试必问的16个经典问题的回答思路
查看>>
丹阳买眼镜攻略1
查看>>
ubuntu安装与删除软件的命令
查看>>
单片机指令大全(精简)
查看>>
MCS-51单片机的指令时序
查看>>
51单片机总线时序
查看>>
USB学习
查看>>
C语言的lex和yacc工具说明
查看>>
C语言编译全过程
查看>>
数字集成资料
查看>>
使用U盘安装Ubuntu 9.10
查看>>
SmartARM2200启动文件分析
查看>>
关于ARM的三种中断调试方法介绍
查看>>
armlink使用方法详解
查看>>