1. 问题描述
2D单应就是给定 P2 中的两组点集 x1 和 x'1,计算把每一点x1映射到x‘1的射影变换,实际一般情况下,x1 和 x'1是两幅图像(或一张图像)上的点。
在上一篇博客中,我们提出了2D的射影矩阵H是3x3的矩阵,出去一个比例因子,所以有八个自由度,严格意义上来说需要四个不完全共线的点求解,这四个点求解出来的是精确解,成为最小配置。(想想为啥)
但是因为点的测量是带有噪声的(不可能选取到完全对应的无偏差的对应点),所以一般情况下我们需要选取四组对应点或线面求取精确解,或者通过选取大于四组对应点或线,通过最小化代价函数来求解最优解。
2. 直接线性变换(DLT)算法求解精确解
H是一种简单线性方程 Hx1 = x'1,考虑到这是齐次矢量方程,我们利用Hx1 x x'1 = 0 来推导射影变换的简单线性解。
Explain:
其中矩阵H的第i行为 hiT, x'i = (x'i,y'i,z'i)T,上述方程可视为Ah = 0的形式,其中A是3x9的矩阵,h是由矩阵H组成的9维矢量。A中是只有两个线性独立的方程,所以四组对应点我们可以得到八组独立方程求解H的1维零空间。
Extend:
1. 零空间就是齐次线性方程组Ab=0的全部解,维数是n-r(A),n是未知元的个数,r是A的秩。
2. A中的第三行可以由第一第二行线性加成,但是若选取的对应点中存在理想点即w'i = 0,A中的第一行和第二行将退化为单个方程。
3.同样可以用线或者其他实体来求解,2D射影(8dof)变换需4组点或4组线(每组点或线提供两个约束),3D射影变换(15dof)需要5组点或五组平面(每组点或线提供3个约束)。
3. 代价函数求最优解
如果给定的对应点或者线大于4组,我们便需要利用最小化代价函数求超定解。