天天看点

pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解

pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解

第二课 2D单应求解

1. 问题描述与提出

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射影几何与变换

中我们提出了2D的射影矩阵

pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解

pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解

的矩阵,除去一个比例因子,所以有8个自由度,严格意义上来说需要4个不完全共线的点求解,这四个点求解出来的是精确解,称为最小配置解。

但是因为点的测量是带有噪声的(不可能选取到完全对应的无偏差的对应点),所以一般情况下我们需要选取四组对应点或线面求取精确解,或者通过选取大于四组对应点或线,通过最小化代价函数来求解最优解。

2. 直接线性变换(DLT)算法求解精确解

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单应求解
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单应求解

的 1维零空间。

Extend:

  1. 零空间就是齐次线性方程组
    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. pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解
    中的第三行可由第一行和第二行线性加成,但是若选取的对应点中存在理想点即
    pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解
    pcl把3dmesh 映射成2维_【百川小课堂】第2课—2D单应求解
    中的第一行和第二行将退化为单个方程。
  3. 同样可以用线或其他实体来求解,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单应求解
完全对应。
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