美文网首页
第一章 2D射影几何和变换(下)

第一章 2D射影几何和变换(下)

作者: hmta_dhs | 来源:发表于2024-01-31 10:49 被阅读0次

    系列索引:MVG计算机视觉中的多视图几何
    上一篇:第一章 2D射影几何和变换(上)


    1.5 从图像恢复仿射和度量性质


    由图像恢复仿射和度量性质可以说是2D射影几何的主要目的之一。通俗来说,就是将图像进行变换,使得图像像素级别的平行(仿射)性质和单位长度(度量)性质和实际三维世界(的平面)对应。


    射影变换8dof=仿射变换6dof+无穷直线的像2dof=相似变换4dof+2个虚圆点+无穷直线的像2dof
    H=H_SH_AH_P=\begin{bmatrix} sR & \mathbf{t}/v \\ \mathbf{0}^T & 1 \end{bmatrix}\begin{bmatrix} K & \mathbf{0} \\ \mathbf{0}^T & 1 \end{bmatrix}\begin{bmatrix} I & \mathbf{0} \\ \mathbf{v}^T & v \end{bmatrix}=\begin{bmatrix} A & \mathbf{t} \\ \mathbf{v}^T & v \end{bmatrix}
    无穷远线
    在射影变换中,理想点可以映射为有限点,因而无穷远直线\mathbf{l}_{\infty}被映射为有限直线。但是在仿射变换下,\mathbf{l}_{\infty}依然被映射为无穷直线:
    \mathbf{l}_{\infty}^{'}=H_{A}^{-T}\mathbf{l}_{\infty}=\begin{bmatrix} A^{-T} & \mathbf{0} \\ -\mathbf{t}^{T}A^{-T} & 1 \end{bmatrix} \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix}=\begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix}=\mathbf{l}_{\infty}

    结论:在射影变换H下,无穷远直线\mathbf{l}_{\infty}为不动直线的充要条件是H是仿射变换
    注意:在仿射变换下,\mathbf{l}_{\infty}并不是点点不动。
    由图像恢复仿射性质:摄影到仿射,目的是恢复平行性质
    已知\mathbf{l}_{\infty}的像,可以将射影变换恢复到仿射变换。

    仿射矫正:单应→仿射,目的是使图片和平面有相同的平行性质

    如果无穷远直线的像是\mathbf{l}=(l_1,l_2,l_3)^T,假定l_3 \neq 0,那么把\mathbf{l}映射回\mathbf{l}_{\infty}=(0,0,1)^T的一个合适的射影变换是
    H=H_A \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ l_1 & l_2 & l_3 \end{bmatrix} \\ H^{-T}(l_1,l_2,l_3)^T=(0,0,1)^T=\mathbf{l}_{\infty}

    仿射矫正计算方法
    已知:一条直线上三个点\mathbf{a}\mathbf{b}\mathbf{c}的像\mathbf{a}'\mathbf{b}'\mathbf{c}'以及两个线段在真实世界的长度比d(\mathbf{a},\mathbf{b}):d(\mathbf{b},\mathbf{c})=a:b
    求解:该直线无穷远点的像
    计算过程:

    1. 在图象中计算距离比d(\mathbf{a'},\mathbf{b'}):d(\mathbf{b'},\mathbf{c'})=a':b'
    2. 分别在直线<\mathbf{a},\mathbf{b},\mathbf{c}><\mathbf{a}',\mathbf{b}',\mathbf{c}'>上建立坐标系,把这些点表示为齐次2维矢量(0,1)^T(a,1)^T(a+b,1)^T以及(0,1)^T(a',1)^T(a'+b',1)^T
    3. 计算从\mathbf{a} \rightarrow \mathbf{a}'\mathbf{b} \rightarrow \mathbf{b}'\mathbf{c} \rightarrow \mathbf{c}'的1D射影变换H_{2\times2}
    4. 计算变换H_{2\times2}下无穷远点(1,0)^T的像,即为结果。

    虚圆点及其对应的对偶二次曲线
    虚圆点(绝对点):\mathbf{l}_{\infty}在相似变换下的不动点
    \mathbf{I}=\begin{bmatrix} 1 \\ i \\ 0 \end{bmatrix}

    \mathbf{J}=\begin{bmatrix} 1 \\ -i \\ 0 \end{bmatrix}

    虚圆点在保向相似变换下不变
    \mathbf{I'}=H_S\mathbf{I}=\begin{bmatrix} s\cos{\theta} & -s\sin{\theta} & t_x \\ s\sin{\theta} & s\cos{\theta} & t_y \\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} 1 \\ i \\ 0 \end{bmatrix}=se^{-i\theta}\begin{bmatrix} 1 \\ i \\ 0 \end{bmatrix}=\mathbf{I}

    在射影变换H下,虚圆点IJ为不动点的充要条件是H是相似变换

    “虚圆点”的命名起源于每一圆周交\mathbf{l}_{\infty}于虚圆点。当二次曲线为圆时,有a=cb=0,取a=1,有
    x_1^2+x_2^2+dx_1x_3+ex_1x_3+fx_3^2=0
    该二次曲线交\mathbf{l}_{\infty}于理想点,即x_3=0,则有
    x_1^2+x_2^2=0
    解得\mathbf{I}=(1,i,0)^T, \mathbf{J}=(1,-i.0)^T

    虚圆点对应的对偶二次曲线
    C^*_{\infty}=\mathbf{IJ}^T+\mathbf{JI}^T=\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \end{bmatrix}

    射影平面的夹角
    在欧氏几何中,两线间的夹角由它们法线的点乘来计算。直线\mathbf{l}=(l_1,l_2,l_3)^T\mathbf{m}=(m_1,m_2,m_3)^T的法线分别平行于(l_1,l_2)^T(m_1,m_2)^T,其夹角为
    \cos{\theta}=\frac{l_1m_1+l_2m_2}{\sqrt{(l_1^2+l_2^2)(m_1^2+m_2^2)}}
    上式经过仿射变换或射影变换后不能使用,而应该用下式代替
    \cos{\theta}=\frac{\mathbf{l}^TC^{*}_{\infty}\mathbf{m}}{\sqrt{(\mathbf{l}^TC^{*}_{\infty}\mathbf{l})(\mathbf{m}^TC^{*}_{\infty}\mathbf{m})}}
    而上式在射影变换下不变
    \mathbf{l}^TC^{*}_{\infty}\mathbf{m} \rightarrow (\mathbf{l}^TH^{-1})(HC^{*}_{\infty}H^T)(H^{-T}\mathbf{m})=\mathbf{l}^TC^{*}_{\infty}\mathbf{m}
    一旦二次曲线C^*_{\infty}的像已知,则可以通过两直线的像计算其实际角度;且根据正弦定理也可以推出长度比。
    一旦\mathbf{l}^TC^{*}_{\infty}\mathbf{m}=0,则直线\mathbf{l}\mathbf{m}正交。

    对偶二次曲线C^*_{\infty}的像
    {C^{*}_{\infty}}'=(H_PH_AH_S)C^{*}_{\infty}(H_PH_AH_S)^T=(H_PH_A)(H_SC^{*}_{\infty}H_S^T)(H_A^TH_P^T) \\=(H_PH_A)C^{*}_{\infty}(H_A^TH_P^T)=\begin{bmatrix} KK^T & KK^T\mathbf{v} \\ \mathbf{v}^TKK^T & \mathbf{v}^TKK^T\mathbf{v} \end{bmatrix}
    一旦找到{C^{*}_{\infty}}',就可以将射影变换矫正为相似变换。将{C^{*}_{\infty}}'进行SVD:
    {C^{*}_{\infty}}'=U\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \end{bmatrix}U^T
    其中U即为矫正变换
    度量矫正I:仿射矫正+2对垂直线的像 仿射到相似,目的是恢复夹角
    \mathbf{l}'^T{C^{*}_{\infty}}'\mathbf{m}'=\begin{bmatrix} l_1' & l_2' & l_3' \end{bmatrix} \begin{bmatrix} KK^T & \mathbf{0} \\ \mathbf{0}^T & 0 \end{bmatrix} \begin{bmatrix} m_1' \\ m_2' \\ m_3' \end{bmatrix}=0
    上式可以重写为
    (l_1'm_1',l_1'm_2'+l_2'm_1',l_2'm_2')\mathbf{s}=0
    其中S=KK^T\mathbf{s}=(s_{11},s_{12},s_{22})
    两对正交直线组成2\times3矩阵,即可求解S,再通过Cholesky分解求得K

    度量矫正II:5对垂直线的像 射影到相似,目的是恢复夹角
    \mathbf{l}^T{C^*_{\infty}}'\mathbf{m}=0
    (l_1m_1,(l_1m_2+l_2m_1)/2,l_2m_2,(l_1m_3+l_3m_1)/2,(l_2m_3+l_3m_2)/2,l_3m_3)\mathbf{c}=0
    其中,\mathbf{c}=(a,b,c,d,e,f)^T{C^*_{\infty}}'的6维矢量形式。
    五对正交直线组成5\times6矩阵,即可求解{C^*_{\infty}}',再通过Cholesky分解求得K.


    1.6 二次曲线的其他性质

    \mathbf{x}和二次曲线C定义一条直线\mathbf{l}=C\mathbf{x}. \mathbf{I}称为\mathbf{x}关于C的极线,而点\mathbf{x}称为\mathbf{l}关于C的极点.
    \mathbf{x}和二次曲线C的极线\mathbf{l}=C\mathbf{x}C交于两点.C的过这两点的两条切线相交于\mathbf{x}

    如果点\mathbf{x}C上,则它的极线就是二次曲线过\mathbf{x}的切线。

    对射\mathbb{P}^2点到\mathbb{P}^2线的可逆映射
    共轭点:如果点\mathbf{y}在极线\mathbf{l}=C\mathbf{x}上,则\mathbf{y}^T\mathbf{l}=\mathbf{y}^TC\mathbf{x}=0.满足\mathbf{y}^TC\mathbf{x}=0的任何两点\mathbf{x}\mathbf{y}称为关于二次曲线C的共轭。
    如果\mathbf{x}\mathbf{y}的极线上,那么\mathbf{y}也在\mathbf{x}的极线上。

    二次曲线的分类

    不动点:变换矩阵的特征向量

    相关文章

      网友评论

          本文标题:第一章 2D射影几何和变换(下)

          本文链接:https://www.haomeiwen.com/subject/ilooodtx.html