MVG读书笔记——射影变换的校正(二)

来源:互联网 发布:fifo算法c语言实现 编辑:程序博客网 时间:2024/06/05 22:47

虚圆点(circular points)

上一节讲到仿射变换中无穷远处的直线是固定的。而其上的点是不固定的。这很容易理解,对一条直线沿着它的切线方向平移,直线方程不变,但是上面的点的坐标却发生了变化。

然而,通过计算可以发现对于相似变换,无穷远处有两个共轭的理想点是固定的,即

I=1i0,J=1i0

我们把这两个点称为虚圆点。对于相似变换H,以点I为例,有
I=HI=sscosθsssinθ0sssinθsscosθ0tx ty11i0=seIθ1i0=I

即相似变换不改变虚圆点坐标。

事实上,对于一个射影变换,如果它不使虚圆点发生改变,则它一定是一个相似变换。

虚圆点与圆

对任意一个圆x21+x22+dx1x3+ex2x3+fx23=0,它与l的交点满足x21+x22=0
考虑到齐次坐标(0,0,0)没有意义。方程在代数上的解为I = [1,i,0]T,J=[1,i,0]T

即任意圆与无穷远处直线交于虚圆点。这也是它为什么得名。

虚圆点的对偶二次曲线

曲线C=IJT+JIT是虚圆点的对偶二次曲线。
带入I、J的坐标得到

C=100010000

显然,对偶二次曲线C在相似变换下也是固定的,即
C=HsCHTs=C

射影平面中的角度

定义了虚圆点的对偶二次曲线,我们就可以定义射影平面中的角度。

在欧氏几何中,直线l=(l1,l2,l3)Tm=(m1,m2,m3)T之间的角度为

cosθ=l1m1+l2m2(l21+l22)(m21+m22)

显然,仿射变换后由此定义计算得到的l’,m’夹角可能发生变化。为在射影变换后依然能够计算出l与m之间的角度,我们可以使用相似的定义
cosθ=lTCm(lTCl)(mTCm)

验证在射影变换下由此定义计算出的角度不变很容易,只需利用直线、对偶二次曲线、点在H变换前后坐标的对应关系就好。举例来说,对分子项有
lTCm=lTH1HCHTHTm=lTCm

所以对于投影平面,如果我们能找到C,那么就可以通过上式计算两点间的欧氏角度。

一个自然的推论是,当且仅当lTCm=0时l与m垂直。

射影平面中的线段比

如图为欧氏平面中的一个三角形,由高中几何知识可以知道d(b:c):d(a,c)=sinα:sinβ
rotia
确定了C,可以确定α、β ,从而得到线段间的比值。

标定

综上,确定了射影平面中的C,我们就可以确定图像的度量信息,从而消除射影变换的形变。事实上,这也是相机标定所做的事情,具体的实现方法在后面介绍。