毕业设计进展—3

   经过几天的鏖战,摄像机参数估计的程序基本完工,hoho,连注释一共还不到千行。
   内参估计的结果是没有什么问题的,和3dmax的虚拟摄像机焦距的误差在允许范围之内。外参估计的结果还有些不足,旋转矩阵计算出来居然不是单位正交阵..初步估计是算法还有些小bug,应该不难解决。准备今明两天完善下参数估计的后续工作,再用opengl做一个简单的重建程序,验证一下效果。
   总结下这两天写程序遇到的一些问题:

   1. 根据F*e=0计算外极点坐标时,由于数值误差,前一步计算出的基础矩阵很可能是满秩的,也就是说其行列式det(F) != 0。这样的话该线性齐次方程组就无解,在matlab中也就不能用null命令来求解,因此只能求e的一个近似解。
   最先想到的解决方案是归一化F的元素,也就是说让 F = F / maxElement(F),然后将F中小于某个阈值的元素设定为0,以此拼凑出一个不满秩的近似的F。然而这样的问题在于此阈值很难确定。刚开始设定的是0.000001,针对一组数据的计算误差尚可接受,但是换一组数据就不行了。

   后来又考虑到解F*e=0这样一个齐次线性方程,求出的只是一个基础解系,也就是说不是唯一解。考虑到外极点e(x,y,z)是像平面和光轴的交点,那么e必然在像平面上。由于像平面和摄像机的z轴是垂直的,那么外极点e的z坐标就应该和像平面上任意一点的z坐标相等。而像平面上的点的z坐标即为齐次坐标,在根据u’Fu=0计算基础矩阵时,一般都将齐次坐标设定为了1,那么外极点e的z坐标自然也应该等于1。ok,现在外极点e可以写成e=(x,y,1)了。现在F*e=0可以写成如下形式:
               clip_image002
很容易将上式转换成如下形式:
                clip_image002[4]
这样,就将问题转化成了求非齐次线性方程组的解问题了。此时运用matlab的左除命令,可以很容易的求出满足上述等式的最小二乘法意义上的解。可得e=(x,y,1)。似乎问题看起来来解决了,但是,经后续的程序验证,最小二乘法意义上的近似解并不符合要求,我无奈的放弃了此种方案。
   最后
,我考虑到从几何意义上求解近似解。F*e=0可以分解成如下三个线性方程:
                clip_image002[6]
此方程组表达的含义其实就是求三条xy平面内直线的交点。由于必然无交点(倘若相交于一点,那F肯定就不是满秩的了,上述所有的讨论建立在F是满秩矩阵的情况求e得近似解),所以其实是求到3条直线距离之和最小的点。这就很容易了。根据点到直线距离的公式建立函数f(x,y)=d1+d2+d3,对该函数求x和y的偏导数fx和fy,当fx==0且fy==0时候的x,y值,即为所求的点。

   2.由于计算内部参数所用的算法基于这样一个前提:外极点e的y坐标必须为0。但是由于求出的e大多数情况下y坐标不等于0,这就需要旋转像摄像机来使得外极点的y坐标为0,因此需要求得此旋转矩阵。最初我考虑的是把光心和外极点的连线看做一个向量,只要将该向量绕任意一条不平行于y轴的直线旋转一定的角度,就可以使得e的y坐标为0。从欧氏几何上来说,确实如此,但是这样很可能会破坏两个摄像机坐标系的外极几何关系,导致后续的计算不正确。在保证外极几何关系不被破坏的情况下,只能绕摄像机的z轴旋转,因为这样不改变摄像机的朝向,两个摄像机光心和3维物体点所建立的外极平面才得以不改变。因此绕z轴旋转的矩阵应该为如下形式:
                clip_image002[8]
   3.暂时就这样了。

  

   题外话:

   中午再次翻仓捣柜之后,终于在右下方的抽屉里的若干票据掩盖之下的几张过期移动充值卡的夹缝中找到了失散半个多月的11张纯净水票。。。那个失而复得的高兴啊!HOHO…本寝室断水20天后再度恢复供应,6楼的各位朋友又可以来蹭水喝了,哈哈…

 

   UPDATE:
   @21:20  下午不一会儿便解决了外参计算的bug,程序也完善的差不多了。晚上本着OO的思想对程序进行了一番封装,定义了一个CamerePair的类。现在整个程序看起来条理多了,嘿嘿…洗澡去也…

Creative Commons License
This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-No Derivative Works 2.5 China Mainland License.
标签:,
此条目发表在 学无止境 分类目录,贴了 , 标签。将固定链接加入收藏夹。

毕业设计进展—3》有 1 条评论

  1. YL 说:

    在阻力中前进,享受克服困难后的成就感!
    失而复得的感觉好哇?!呵呵

    回复

发表评论

电子邮件地址不会被公开。 必填项已被标记为 *

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>