【MVG_in_CV】从图像恢复度量性质
1,先验知识
1.1,虚圆点
在相似变换HS下,无穷远线l∞是不变量,而I∞上的理想点(x1,x2,0)T,经过HS变换后,虽然仍在l∞上,但是却发生了移动。
【图】相似变换矩阵HS
但是,有两个称之为虚圆点的理想点I=(1,i,0)T、J=(1,-i,0)T,在相似变换HS下是不变量,即
I '= HS I = I
J ’ = HS J = J
事实上,可以证明有如下结论:
在射影变换H下:虚圆点I和I为不动点 <=> H为相似变换
1.2对偶二次曲线的射影变换
1.2.1,形式:
在点变换x’ = Hx下,对偶二次曲线C的变换为C* ’ = HC*HT
1.2.2,不变性
在某种变换下,二次曲线的系数矩阵如果或不变(相差一个常数),则称该二次曲线在次变换下不变
1.3,虚圆点的对偶二次曲线
1.3.1,退化的对偶二次曲线
秩2的退化的线二次曲线包含两个点x,y,其系数矩阵有如下形式:
二次曲线的系数矩阵是3×3的齐次对称矩阵,有5个自由度,而退化的二次曲线,系数矩阵不满秩,因此其行列式为0,进而又去掉一个自由度,一共4个自由度
1.3.2,虚圆点的对偶二次曲线形式
如前所述,虚圆点的对偶二次曲线的系数矩阵有如下形式:
1.3.3,虚圆点的对偶二次曲线性质
在任何设射影变换下,C*∞有如下性质:
1.3.4,一个重要结论
在射影变换H下:虚圆点的对偶二次曲线C*∞是不变量 <=> H是相似变换
即:
C*∞ ’ = HC*∞HT = C*∞ <=> H是相似变换
1.4,射影变换下平面上的夹角
1.4.1,欧氏变换下平面上的夹角
欧氏变换及相似变换下,平面上两直线 l=(l1,l2,l3),m=(m1,m2,m3)的夹角θ,可以由两者的法线计算,直线 l 和 m 的 法线分别与(l1,l2)和(m1,m2)平行,于是有:
式(1.4.1_1)
但是在仿射和射影变换中,两直线的夹角不是不变量。因此仍使用上述公式的话,计算得到的夹角θ与真实场景中的不同。
1.4.2,射影变换下平面上的夹角
但是我们发现,借助虚圆点的对偶二次曲线系数矩阵C*∞可以定义一个统一的夹角计算公式:
式(1.4.2_2)
由于C*∞对相似变换是不变量(自然对欧氏变换也是),C*∞在相似和欧氏变换下的形式为:
从而在相似和欧氏变换中,式(1.4.2_2)与式(1.4.1_1)完全相同。
可以证明式,式(1.4.2_2)在 射影变换 下是不变量,即通过式式(1.4.2_2)可以在射影变换下求解变换后的直线 l 和 m 所对应的真实场景下的两条直线的夹角θ,注意此时式中的C*∞,是经过射影变换后的C*∞ ’ = HC*∞HT
2,度量矫正
2.1,度量矫正的问题描述
已知:一个射影变换H可以分解为相似变换Hs,仿射变换HA,射影变换HP的组合的形式。
H产生的作用是这样的:
注:
π1中的C*∞为,虚圆点的对偶二次曲线
π2中的C*∞ 为,π1中的C*∞经过相似变换HS后的像,由前述可知,相似变换不改变C*∞,即C*∞=HSC*∞HST
π3中的C*∞3 为,π2中的C*∞经过仿射变换HA后的像,即C*∞3=HAC*∞HAT
π4中的C*∞4 为,π3中的C*∞3经过射影变换Hp后的像,即C*∞4=HPC*∞3HPT
以后将要出现的情况,以此类推,不再赘述。
所谓度量矫正,就是找到某个变换将H?射影变换后的射影图片π4矫正为π1经过某个相似变换HS_1后的图片π2_1(与图中的π2不一定相同)。这个HS_1是什么我们并不关心,因为我们只是想得到图像π2_1
2.2,从仿射变换中进行度量矫正
2.2.1,问题描述
先来看一种简单的情况,假设我们已经通过某个变换将π4矫正为了π1经过某个仿射变换后的图片π3_1。
上面从π0到π3_1的过程与我们的想做的事无关,并且射影变换是可以合并的,为了方便表示不妨简化为:
注:此时H是一个由相似和仿射组成的仿射变换
H=HAHS
那么我们的度量矫正工作就变成了:找到某个变换H?将仿射变换后的射影图片π3_1矫正为π1经过某个相似变换HS_1后的图片π2_1(与图中的π2不一定相同)。同样,这个HS_1是什么我们并不关心。
即:
2.2.2,矫正方法
在前面的叙述中,我们已经知道的知识有:
C*∞3=HAC*∞HAT
于是,可以得到
如果我们能够找到π3_1中的两条直线 l’=(l1’,l2’,l3’),m’=(m1’,m2’,m3’),它们分别是π1(或者π2)中的两条互相垂直的直线 l 和 m 的像,那么由式(1.4.2_2)(重写在下面)
式(1.4.2_2)
可以得到:
l’TC*∞3m’ = 0
其中KKT是2×2的对称矩阵,有三个独立元素,由于全局尺度因子无关紧要,因此只有2个自由度。
由上面的讨论可以看到,一组l’,m’可以提供一个约束,因此,找到两组,就可以求解处KKT,即得到C*∞3
对KKT进行Cholesky分解,可以就求解出K,即得到HA。
此时,有两种方法求解出H?
1,H?=HA-1
2,对C*∞3进行SVD分解:
其中的U,即是HA,因此有H?=HA-1
2.3,从射影变换中进行度量矫正
回到我们在2.1中对度量矫正的描述,即就是找到某个变换将H?射影变换后的射影图片π4矫正为π1经过某个相似变换HS_1后的图片π2_1(与图中的π2不一定相同)。这个HS_1是什么我们并不关心,因为我们只是想得到图像π2_1
求解H?的过程和2.2中几乎完全相同。
不同之处在于:
这里的H是射影变换:
因此,
C*∞4=HPHAC*∞(HAHP)T
= HPHAC*∞HATHPT
由于C*∞4为对偶二次曲线的系数矩阵,所以其为3×3的齐次对称矩阵,,有5个自由度。
和2.2中一样,如果我们能够找到π3_1中的两条直线 l’=(l1’,l2’,l3’),m’=(m1’,m2’,m3’),它们分别是π1(或者π2)中的两条互相垂直的直线 l 和 m 的像,那么由式(1.4.2_2)可以得到:
l’TC*∞4m’ = 0
每对直线l’和m’可以提供一个约束,从而找到5组这样的直线对就可以求解出C*∞4,
同样,对C*∞4进行SVD分解:
其中的U,即是HPHA,因此有H?= U-1
3, 总结
进行度量矫正,首先要在变换后的图像中找到n组直线对<l’=(l1’,l2’,l3’)T,m’=(m1’,m2’,m3’)T>,然后求解一个m×m齐次对称矩阵C*∞,在对该矩阵进行SVD分解:
得到的U的逆就是需要的矫正变换矩阵
矫正仿射图片时,n=2,m=2
矫正射影图片时,n=5,m=3