计算机视觉中,经常会用到重投影误差(Reprojection error)。比如在计算平面单应矩阵和投影矩阵的时候,往往会使用重投影误差来构造代价函数,然后最小化这个代价函数,以优化单应矩阵或者投影矩阵。之所以使用重投影误差,是因为它不光考虑了单应矩阵的计算误差,也考虑了图像点的测量误差,所以其精度会更高。 


 最小化重投影误差问题(Bundle Adjustment问题)---可以将位姿和三维特征点P同时优化

在SLAM中优化求解相机运动位姿时(3D-2D),会用到重投影误差:是像素坐标(观测到的投影位置)与3D点按照当前估计的位姿进行投影得到的位置相比较得到的误差。

如下图所示,我们通过特征匹配知道,观测值和  是同一个空间点的投影,的投影与观测值之间有一定的距离,也就是重投影误差。于是我们调整相机的位姿,使这个距离变小,由于这个调整需要考虑很多个点,所以最后每个点的误差通常不会精确到0。


 
 
 
考虑到n个三维空间点P和他们的投影,我们希望计算R,t,用李代数表示为。假设某空间点,其投影的像素坐标为

像素位置与空间点位置的关系如下:

写成矩阵形式就是:

 由于相机位姿未知以及观测点的噪声,该等式存在一个误差。我们将误差求和,构建最小二乘问题,然后寻找做好的相机位姿,使它最小化:
用高斯牛顿法/列文伯格-马夸尔特方法求解。

 

补充:

平面的单应性:从一个平面到另一个平面的投影映射 。
用单应性描述平面物体的观测:从物体平面到图像平面的映射,同时表征了这两个平面的相对位置(外参)和相机投影矩阵(内参)。   


以平面单应矩阵的计算为例,假设两幅图像中的对应点满足: 

这里写图片描述 
其中,H是平面单应矩阵,x和x’是图像中的对应点,则重投影误差的形式如下: 
这里写图片描述 
subject to: 
这里写图片描述 
其中,x^是x的估计值,H^是H的估计。最小化重投影误差就是优化H^和x^。从重投影误差公式可以看出,模型认为测量点并非绝对精确,而是存在一定的测量误差,因此需要重新估计图像点的坐标,而估计得到的新的图像点之间完美的满足单应关系。下图就是重投影误差的几何表述,d和d’的和即为重投影误差: 
这里写图片描述 
上面都是在假设图像点有测量误差的情况下讨论的,如果x和x’都是图像上的点,那么确实是满足上面的模型的。但是有一种特殊情形,那就是摄像机定位时通常都会遇见的,x不是图像点,而是平面标志点在世界坐标系下的坐标,只有x’是图像点。在这种情况下,由于标志点(例如:棋盘图上的角点)通常都是很标准的,都是严格按尺寸制定的,所以我们可以认为x是绝对准确的,那么此时只有x’存在测量误差。如下图: 
这里写图片描述 
此时,x的估计x^就是它本身,即x=x^,所以有: 
这里写图片描述 
那么重投影误差在强约束条件x=x^下就退化为: 
这里写图片描述 
上式即为单边变换误差(Transfer error)。 
也就是说,如果给重投影误差加上约束条件x=x^,重投影误差就退化为单边变换误差,并且极大地简化了优化算法。同时,从上面的推导也可以得出结论:在使用已知标志点给摄像机定位时,重投影误差并非最好的选择,因为重投影误差模型会认为标志点存在误差,从而重新估计标志点的坐标,引入多余的误差;而此时,事实上,重投影误差已经退化为单边几何变换误差,所以在这种情况下,单边几何变换误差才是最好的代价函数。

 

重投影误差与对称转移误差

                                                                                                                                                                                                        
posted on 2017-07-26 21:40  Jessica&jie  阅读(34480)  评论(1编辑  收藏  举报