
第二课 2D单应求解
1. 问题描述与提出
2D单应就是给定
中的两组点集
和
,计算把每一点
映射到
的射影变换,实际一般情况下,点
和
是两幅图像(或一张图像)上的点。
在上一篇
2D射影几何与变换中我们提出了2D的射影矩阵
是
的矩阵,除去一个比例因子,所以有8个自由度,严格意义上来说需要4个不完全共线的点求解,这四个点求解出来的是精确解,称为最小配置解。
但是因为点的测量是带有噪声的(不可能选取到完全对应的无偏差的对应点),所以一般情况下我们需要选取四组对应点或线面求取精确解,或者通过选取大于四组对应点或线,通过最小化代价函数来求解最优解。
2. 直接线性变换(DLT)算法求解精确解
的一种简单线性方程是
,考虑到这是齐次矢量方程,我们利用
来推出射影变换的简单线性解。
Explain:
其中矩阵
的第![]()
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 行为![]()
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 ,![]()
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 ![]()
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 ,上述方程可视为![]()
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 的形式,其中![]()
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 是![]()
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 的矩阵,![]()
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 是由矩阵![]()
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 组成的![]()
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 维矢量。![]()
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 中是只有 2 个 线性独立的方程,所以 4 组对应点我们可以得到8组独立方程求解![]()
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 ![]()
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 的 1维零空间。
Extend:
- 零空间就是齐次线性方程组 的全部解,维数是
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 ,pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 是未知元的个数,pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 是pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 的秩。pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 - 中的第三行可由第一行和第二行线性加成,但是若选取的对应点中存在理想点即
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 ,pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 中的第一行和第二行将退化为单个方程。pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 - 同样可以用线或其他实体来求解,2D射影(8dof)变换需求4组点或4组线(每组点或线提供2个约束),3D射影变换(15dof)需要5组点或5组平面(每组点或线提供3个约束)。
3. 代价函数求取最优解
如果给定的对应点或者线大于4组,我们便需要利用最小化代价函数求超定解。
- 代数距离:代价函数就是求解最小化范数 。
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 - 几何距离:代价函数就是求解 与
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 和pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 与pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 的综合误差。pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 - 重投影误差:代价函数就是求解 与
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 和pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 与pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 的综合误差。pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解
Explain:和![]()
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 是估计的点,其中![]()
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 完全对应。![]()
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解
4 迭代方法
- 求解线性问题时,采用最小二乘法(求导即可)。
- 求解非线性问题时,采用非线性最小二乘(牛顿法或者LM法,由雅可比矩阵组成的一阶或二阶梯度求解增量),这种方法把非线性问题转化为了求增量时候只需要求解线性问题。
5 随机一致性(RANSAC)算法
在实际的情况中,存在一些误差点,最小二乘方法会干扰单应的生成。我们介绍RANSAC算法,它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。它是一种不确定的算法——它有一定的概率得出一个合理的结果;为了提高概率必须提高迭代次数。
RANSAC比最小二乘的优势在于,它能去除一些噪声的干扰, 如果假定模型与实际的情形一致, 那么一般由观测数据计算的RANSAC模型, 更能接近实际情况, 去除观测或过程噪声干扰。
Example:
对于
![]()
pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解 ,
RANSAC的线性拟合算法步骤大致如下:
while 最大尝试次数
从观测点集中随机取两点,计算出直线的参数k, t(或者k用向量表示),得出一个候选的直线模型。
计算候选直线与整个点集的匹配程度,可以采用统计在直线上(或到直线的距离小于一个阈值)的点的个数。
保留匹配程度最好的直线的参数。
如果本次尝试匹配点的个数占整个点集大部分,超出预期(阈值),提前结束尝试。
endwhile
RANSAC的误差一般用在拟合直线的一个范围内,在此范围内点的个数占整个点集比例来衡量。
参考资料: https:// blog.csdn.net/viewcode/ article/details/7828178