zoukankan      html  css  js  c++  java
  • Multiple View Geometry in Computer Vision (Second Edition) 学习笔记-1

    第二节 投影几何和二维变换

    2.2 The 2D projective plane

    1. 使用向量表示线段,如((a,b,c)^T)表示(ax+by+c = 0)

    2. (IR^3 - (0,0,0)^T)中的矢量等价类的集合组成射影空间(IP^2)(P即Project),即,(IR^3)中的每个矢量对应着(IP^2)中的一个点,其中((0,0,0)^T)不与任何直线对应,被排除在外。

    3. 当且仅当(x^Tl = 0)时,点(x)才在线(l)上。

    4. 自由度问题:为了指定一个点,必须提供两个值,即其x坐标和y坐标。 以类似的方式,一条线由两个参数(两个独立的比率{a:b:c})指定,因此具有两个自由度。在非齐次表示中,可以选择这两个参数作为直线的梯度和y截距。

    5. 线段(l)(l')的交点(x = l imes l')

      (x = 1 longrightarrow-1x+1 = 0 ~~~:~~~ l = (-1,0,1)^T)

      (y = 1 longrightarrow -1y + 1 = 0~~~:~~~ l' = (0,-1,1)^T)

      (x = l imes l' = left|egin{matrix}i & j & k\-1 & 0 & 1\0 & -1 & 1end{matrix} ight| = left(egin{matrix}1\1\1end{matrix} ight))

    6. 过两个点(x)(x')的直线(l = x imes x')

    7. 所有的理想点都表示为((x_1, x_2, 0)^T),其特定点由比率(x_1:x_2)指定。

    8. 无穷远线表示为(l_infty = (0,0,1)^T),从而((0,0,1)(x_1,x_2,0)^T = 0)

    9. 非齐次表示中,((b,-a)^T)是与直线相切且与直线法线((a,b)^T)正交的向量,因此表示直线的方向。

    10. 在2D射影几何中,在射影变换下所有非退化圆锥都是等效的。

    11. 圆锥曲线方程

      非齐次:

      [ax^2 + bxy + cy^2 + dx + ey + f = 0 ]

      齐次:(x longrightarrow x_1 / x_3, ~~~y longrightarrow x_2 / x_3)

      [ax_1^2 + bx_1x_2 + cx_2^2 + dx_1x_3+ex_2x_3+fx_3^2 = 0 ]

      矩阵形式:

      [x^TCx = 0 ]

      其中 (C = left[egin{matrix}a & b/2 & d/2\b/2 & c & e/2\d/2 & e/2 & fend{matrix} ight])

    12. (C)是圆锥的齐次表示,圆锥具有五个自由度,可以将其视为比率{a:b:c:d:e:f}。

    13. 5个点确定一条圆锥曲线

    14. (C)上的点(x)处与(C)相切的直线(l = Cx)

    2.3 Projective transformations

    2D射影几何是对射影平面(IP^2)的属性的研究,这些属性在射影性的一组转换下是不变的。

    1. 投影性是从(IP^2)到其自身的可逆映射(h),使得当且仅当(h(x_1),h(x_2),h(x_3))相同时,三个点(x_1,x_2,x_3)位于同一条线上。

    2. 映射(h):当且仅当存在一个非奇异的3×3矩阵(H),对于由向量(x)表示的(IP^2)中的任何点,(h(x)= Hx)都是正确的时候时,(IP^2→IP^2)才具有投影性。

    3. 平面投影变换是对由非奇异3×3矩阵表示的齐次3矢量的线性变换(x' = H x)

      该方程式中出现的矩阵(H)可以通过乘以任意非零比例因子而改变,而不改变投影变换。
      因此(H)是齐次矩阵,(H)的9个元素中有8个独立的比率,因此,投射变换具有8个自由度。

    4. 平面之间的映射:如果在每个平面中定义了一个坐标系,并且点用齐次坐标表示,则中心投影映射可以表示为(x = Hx),其中(H)是非奇数3×3矩阵。它被称为透视性而不是完全投影性,并且可以通过具有六个自由度的变换来表示。(单应变换)

    5. 在点的变换(x' = Hx)下,对应的圆锥曲线变换为(C' = H^{-T}CH^{-1}),双圆锥曲线变换为(C^{*'} = HC^*H^{T})

    2.4 A hierarchy of transformations

    1. 等距变换:保留欧几里德距离的平面(IR^2)的变换。

      [left( egin{matrix} x'\y'\1 end{matrix} ight)=left[ egin{matrix} epsilon cos heta & -sin heta & t_x\ epsilon sin heta & cos heta & t_y\ 0 & 0 & 1 end{matrix} ight]left( egin{matrix} x\y\1 end{matrix} ight) ]

      这里的(epsilon = pm1),表示方向((-1)为反转方向)

      可以写作矩阵块的形式如:

      [x' = H_Ex = left[ egin{matrix} R & t\0^T & 1 end{matrix} ight]x ]

      这里的(R)(2 imes2)的旋转矩阵(正交矩阵),(t)是一个(2 imes2)的位移向量。

      平面欧几里得变换具有三个自由度,一个用于旋转,两个用于平移。

      长度(两点之间的距离),角度(两线之间的角度)和面积是不变的。

    2. 相似变换:由各向同性缩放组成的等距映射。

      [left( egin{matrix} x'\y'\1 end{matrix} ight)=left[ egin{matrix} s~ cos heta & -s~sin heta & t_x\ s~ sin heta & s~cos heta & t_y\ 0 & 0 & 1 end{matrix} ight]left( egin{matrix} x\y\1 end{matrix} ight) ]

      可以写作矩阵块的形式如:

      [x' = H_Sx = left[ egin{matrix} sR & t\0^T & 1 end{matrix} ight]x ]

      标量s代表各向同性标度。

      相似变换也称为等式变换,因为保留了“形状”。

      平面相似度变换具有四个自由度(3 + s(1) = 4)

      线之间的角度不受旋转,平移或各向同性缩放的影响,相似性不变性也不受此影响。长度之比和面积之比是不变的。

    3. 仿射变换:仿射变换是“线性变换”+“平移”,保持二维图形的“平直性”(straightness,即变换后直线还是直线不会打弯,圆弧还是圆弧)和“平行性”(parallelness,其实是指保二维图形间的相对位置关系不变,平行线还是平行线,相交直线的交角不变。)

      [left( egin{matrix} x'\y'\1 end{matrix} ight)=left[ egin{matrix} a_{11} & a_{12} & t_x\ a_{21} & a_{22} & t_y\ 0 & 0 & 1 end{matrix} ight]left( egin{matrix} x\y\1 end{matrix} ight) ]

      可以写作矩阵块的形式如:

      [x' = H_Ax = left[ egin{matrix} A & t\0^T & 1 end{matrix} ight]x ]

      这里的(A)是一个2 × 2的非奇异矩阵。

      平面仿射变换有6个自由度,对应6个矩阵元素。由三个对应点计算。

      仿射矩阵(A)总是可以分解为

      [A = R( heta)R(-phi)DR(phi) ]

      其中(R( heta))(R(phi))分别是( heta)(phi)的旋转角度,(D)是是对角矩阵

      [D = left[egin{matrix}lambda_1 & 0\0 & lambda_2end{matrix} ight] ]

      这个分解由SVD分解得到,(A = UDV^{T} = (UV^{T})(VDV^{T}) = R( heta)R(-phi)DR(phi)),其中(U)(V)都是正交矩阵。

      因此,仿射矩阵A可以理解为先进行角度的旋转然后再(旋转的)x和y方向上分别按λ1和λ2缩放,再依次进行(-phi)角度的旋转和( heta)角度的旋转。

      仿射变换有六个自由度,(4 + 缩放方向的角度(phi) + 缩放参数(lambda_1 : lambda_2)的比率)

      仿射变换不能保持原来的线段长度不变,也不能保持原来的夹角角度不变。

      仿射变换有三个不变性:(1)平行线(2)平行线段的长度之比(3)面积比

      根据(det(A) = lambda_1 lambda_2)的正负决定仿射保留原方向或反转。

    4. 投影变换:是齐次坐标的一般非奇异线性变换。

      [x' = H_Px = left[ egin{matrix} A & t\V^T & v end{matrix} ight]x ]

      这里的(v = (v_1, v_2)^T)

      投影变换有8个自由度(总是可以按比例缩放矩阵以使v成为单位 9 - 1 = 8,可以通过四个点的对应关系来计算两个平面之间的投影变换。

    5. 总结:投影和仿射变换之间的主要区别在于,对于投影变换,向量v不为null,这是投影变换非线性的原因。

      比较理想点((x_1,x_2,0)^T)在仿射和投影变换下的不同。

      仿射变换:

      [left[ egin{matrix} A & t\0^T & 1 end{matrix} ight]left( egin{matrix} x_1 \x_2\0 end{matrix} ight) = left( egin{matrix} A left( egin{matrix} x_1\x_2 end{matrix} ight)\0 end{matrix} ight) ]

      投影变换:

      [left[ egin{matrix} A & t\V^T & v end{matrix} ight]left( egin{matrix} x_1 \x_2\0 end{matrix} ight) = left( egin{matrix} A left( egin{matrix} x_1\x_2 end{matrix} ight)\v_1x_1+v_2x_2 end{matrix} ight) ]

      可以看到在仿射变化中,理想点保持理想状态(即无穷大)。 在投影变换中,它映射到一个有限点。

    6. 投影变换的分解:投影变换可以分解为链式的变换。

      [H = H_SH_AH_P = left[ egin{matrix} sR & t\0^T & 1 end{matrix} ight]left[ egin{matrix} K & 0\0^T & 1 end{matrix} ight]left[ egin{matrix} I & 0\V^T & v end{matrix} ight] = left[ egin{matrix} A & t \V^T & v end{matrix} ight] ]

      其中(A)是由A (= sRK + tv^T)给出的非奇异矩阵,而(K)是归一化为(det(K) = 1)的上三角矩阵。如果(v eq 0),则此分解有效,如果将s选择为正,则分解是唯一的。

    7. 函数无关(functionally independent )不变量的数目 (ge) 配置(configuration)的自由度数 (-) 变换(transformation)的自由度数。

    8. image-20210207210142999

    9. 一维的投影几何:

      使用(overline{x}) 表示 二维向量((x_1, x_2)^T),线的投影变换由2×2齐次矩阵表示:

      [overline{x}' = H_{2 imes 2} overline{x} ]

      具有三个自由度,可以从三个相应的点确定直线的投影变换。

      交叉比率:交叉比率是(IP^1)的基本投影不变量:

      [Cross(overline{x}_1,overline{x}_2,overline{x}_3,overline{x}_4) = frac{|overline{x}_1overline{x}_2| |overline{x}_3overline{x}_4|}{|overline{x}_3overline{x}_4||overline{x}_2overline{x}_4|} ]

      其中:

      [|overline{x}_ioverline{x}_j| = det left[ egin{matrix} x_{i1} & x_{j1}\x_{i2} & x_{j2} end{matrix} ight] ]

      (1)交叉比率的值不取决于使用哪个特定的齐次表示点(x_i),因为分子和分母的比抵消了尺度。

      (2)如果每个点(overline{x}_i)都是有限点,并且选择齐次表示,使得(x_2 = 1),那么(|overline{x}_ioverline{x}_j|)表示(overline{x}_i)(overline{x}_j)带符号的距离。

      (3)如果其中一个(overline{x}_i)是理想点,则交叉比率的定义依然有效。

      (4)交叉比率的值在任何投影变换下不变。

      下图说明了具有相等交叉比率的线之间的许多投影变换。

    10. 共点线:线束交比由射影平面偶像性质得来。即“点”与“直线”为对偶元素,“过一点作一条直线”与“在一条直线上取一点”为对偶作图。

      共点的四条线也有交比,根据对偶,共线的四个点有交比。且有对应的四点与四线的交比相等,如图:

      image-20210207210142999

    11. 投影平面的拓扑:

      射影平面(IP^2)可以看作是所有齐次三维向量的集合。(x =(x1,x2,x3)^T)可以通过乘任何非零因子变换得(x_1^2 + x_2^2 + x_3^2 = 1),这样的点位于(IR^3)的单位球面上。

      (IP^2)中,(x)(-x)表示一个点,尽管它们之间差了一个负号。因此,(IR^3)中的单位球面(S2)与投影平面(IP^2)之间存在二对一的对应关系。用拓扑学的语言来说,球体(S^2)(IP^2)的双叶覆盖空间。

      (IP^1)在拓扑上等同于标识了两个端点的线段,即圆(S^1)

    12. 无限线:在投影变换下,理想点可以映射到有限点,因此无穷线可以映射到有限线。然而仿射变换不能做到将无穷映射到有限。

    13. 在投影变换(H)下,无穷远直线(l_infty)为不动直线的充要条件是(H)为仿射变换。

    14. 圆点及其对偶:在任何相似变换下,(l_infty)上有两个不动点(称为虚圆点)(I,J)

      [I = left( egin{matrix} 1\i\0 end{matrix} ight)~~~~~~~J = left( egin{matrix} 1\-i\0 end{matrix} ight) ]

      圆点是一对复共轭理想点,

      [egin{aligned} I' &= H_sI \ &= left[ egin{matrix} s~ cos heta & -s~sin heta & t_x\ s~ sin heta & s~cos heta & t_y\ 0 & 0 & 1 end{matrix} ight]left( egin{matrix} 1\i\0 end{matrix} ight) \&= se^{-i heta}left( egin{matrix} 1\i\0 end{matrix} ight) = I end{aligned} ]

      对于(J)来说是一样的证明方法。

      即:当且仅当(H)是相似变换时,圆点(I,J)是投影变换(H)下的不动点。

      之所以称为“圆点”,是因为每个圆在圆点处相交(l_infty),在圆锥为圆的情况下:a = c和b = 0,将a和c设置为1,此圆锥在(x_3=0)的理想点处与(l_infty)相交,即(x_1^2 + x_2^2 = 0),该方程的解就是(I = (1,i,0)^T)(J = (1,-i,0)^T)

      与虚圆点对偶的二次曲线

      [C_infty^* = IJ^T + JI^T ]

      它由两个圆点组成。在欧几里得坐标系统中:

      [C_infty^* = left( egin{matrix} 1\i\0 end{matrix} ight)left( egin{matrix} 1 & -i & 0 end{matrix} ight) left( egin{matrix} 1\-i\0 end{matrix} ight)left( egin{matrix} 1 & i & 0 end{matrix} ight) = left[ egin{matrix} 1 & 0 & 0\0 & 1 & 0\0 & 0 & 0 end{matrix} ight] ]

      即:当且仅当(H)是相似变换时,对偶二次曲线(C^*_infty)在投影变换(H)下不变。

      (1)(C_infty^*)有四个自由度:((3 imes 3)的齐次对称矩阵(5) - (det(C^*_infty)) (1) = 4)

      (2)(l_infty)(C_infty^*)的空向量,从而(C_infty^* l_infty = 0)

    15. 投影平面上的角度:两条线之间的角度是根据其法线的点积计算得出的。对于线(l=(l_1,l_2,l_3)^T)(m = (m_1,m_2,m_3)^T)的法线分别平行于((l_1,l_2)^T,(m_1,m_2)^T)

      角度为:

      [cos heta = frac{l_1m_1+l_2m_2}{sqrt{(l_1^2+l_2^2)(m_1^2+m_2^2)}} ]

      由于(l)(m)的前两个分量在投影变换下没有明确定义的变换属性,因此上式在平面的仿射或投影变换后无法应用。

      更换形式为:

      [cos heta = frac{l^TC_infty^* m}{sqrt{(l^TC_infty^*l)(m^TC_infty^*m)}} ]

      其中(C_infty^*)是圆点的圆锥对偶。一旦在投影平面上确定了圆锥(C_infty^*),则欧几里德角可以由上式测量。

      如果(l^T C_infty^* m = 0),则线(l)(m)正交。

    16. 长度比率:(d(b,c):d(a,c) = sinalpha:sineta),其中(d(x,y))表示(x)(y)之间的欧氏距离。使用上面的公式,对于任何指定了(C_infty^*)的投影帧,(cosalpha)(coseta)可以由(l' = a' imes b', m' = c' imes a', n' = b' imes c')计算而来。因此,可以从投影映射点确定(sinalpha,sineta)以及比率(d(a,b):d(c,a))

    17. 如果点变换(x' = Hx),则(C_infty^*{'} = left[egin{matrix}KK^T & KK^Tv\v^TKK^T & v^TKK^Tvend{matrix} ight])

      显然,射影分量((v))和仿射分量((K))是直接从(C_infty^*)的图像确定的,但相似度分量不能确定。

    18. 度量校正:假设已对图像进行仿射校正,则我们需要两个约束条件来指定圆点的2个自由度,以便确定度量校正。这两个约束可以从世界平面上两个成像的直角获得。

    19. 假设仿射校正图像中的线(l',m')对应于世界平面上的正交线对(l,m)。通过(l'^TC_infty^*{'}m' = 0),并且根据上面的公式,使得(v = 0),可以得到:

      [left( egin{matrix} l_1' & l_2' & l_3' end{matrix} ight) left[ egin{matrix} KK^T & 0\0^T & 0 end{matrix} ight] left( egin{matrix} m_1'\m_2'\m_3' end{matrix} ight) = 0 ]

      这是对(2 imes 2)矩阵(S = KK^T)的线性约束。 矩阵(S = KK^T)是对称的,具有三个独立元素,因此具有2个自由度(因为总体缩放比例不重要)

      公式可以简化为:

      [(l_1',l_2')S(m_1',m_2')^T = 0 ]

    20. 一个点(x)和一个曲线(C)定义了一条线(l = Cx),线(l)称为(x)相对于(C)的极点,点(x)(l)相对于(C)的极点。

      相对于圆锥(C)的点(x)的极线(l = Cx)在两个点上相交于圆锥。在这些点处与(C)相切的两条线在(x)处相交。

    ​ 如果点(x)(C)上,则极点是在x处与圆锥曲线的切线。

    1. 关联:从(IP^2)的点到(IP^2)的线的可逆映射。由3×3非奇异矩阵(A)表示为(l = Ax)

      共轭点:如果点(y)在线(l = Cx)上,则(y^T l = y^T C x = 0)

      满足(y^TCx = 0)的任意两点相对于圆锥(C)是共轭的。

      如果(x)(y)的极点上,则(y)(x)的极点上。

    第三节 投影几何和三维变换

    3.1 点和投影变换

    1. 三维空间点的齐次表示形式(X = (x_1,x_2,x_3,x_4)^T),其中若(x_4 = 0)则为无穷点。

    2. 作用于(IP^3)的投影变换是对由非奇异4×4矩阵表示的齐次四维向量的线性变换:(X' = HX)

    3. 三维空间中的平面可以写成

      [pi_1X + pi_2Y + pi_3Z + pi_4 = 0 ]

      只有三个独立的平面系数比率({π1:π2:π3:π4})有效,所以平面在三维空间中有三个自由度。

      表示点在平面上:

      [pi^TX = 0 ]

      (pi)的前三个分量对应于欧几里得几何的平面法线。

      使用非齐次表示为(n ilde{X} + d = 0),其中(n = (pi_1,pi_2,pi_3)^T, ilde{X} = (x,y,z)^T, x_4 = 1, d = pi_4),在这种形式下,(d / ||n||)表示平面到原点的距离。

    4. 假设三个点(X_i)在平面(pi)上,每个点都满足(pi^TX_i = 0),联立得到以下形式:

      [left[ egin{matrix} X_1^T\X_2^T\X_3^T end{matrix} ight]pi = 0 ]

      由于(X_1,X_2,X_3)是线性独立的(longrightarrow)由点作为行组成的3×4矩阵的秩为3。

    5. 定义矩阵(M = [X,X_1,X_2,X_3])由一个普通点和三个在面(pi)上的点(X_i)组成。

      (X)在平面(pi)上时,(det(M) = 0)

      (det(M))如下:

      [det(M) = x_1D_{234} - x_2D_{134} + x_3 D_{124} - x_4D_{123} ]

      其中(D_{jkl})是由(4×3)矩阵([X_1,X_2,X_3])(jkl)行形成的行列式。

      对于平面上的点,(det(M) = 0),所以平面的系数为(pi = (D_{234},-D_{134},D_{124},-D_{123})^T)

      例如:假设(X_1 =left(egin{matrix} ilde{X}_1\1end{matrix} ight)) (X_2 =left(egin{matrix} ilde{X}_2\1end{matrix} ight)) (X_3 =left(egin{matrix} ilde{X}_3\1end{matrix} ight)),其中( ilde{X} = (x,y,z)^T)

      计算(D_{234} = left|egin{matrix}Y_1 & Y_2 & Y_3\Z_1 & Z_2 & Z_3\1 & 1 & 1end{matrix} ight| = (( ilde{X}_1 - ilde{X}_3) imes ( ilde{X}_2 - ilde{X}_3))_1)

      对于其他的(D_{jkl})计算类似,最终得到:

      [pi = left( egin{matrix} ( ilde{X}_1 - ilde{X}_3) imes ( ilde{X}_2 - ilde{X}_3)\ - ilde{X}_3^T( ilde{X}_1 imes ilde{X}_2) end{matrix} ight) ]

      则平面法线为:

      [( ilde{X}_1 - ilde{X}_3) imes ( ilde{X}_2 - ilde{X}_3) ]

    6. 在点变换(X' = HX)下,平面的变换为:(pi' = H^{-T} pi)

    7. 一条线可以通过其与两个正交平面的交点来指定。 每个交叉点都有2个自由度,这表明IP3中的一条线总共有4个自由度。

    8. 平面(pi)上的点(X)可以表示为:

      [X = Mx ]

      其中(M)(4 imes 3)的矩阵,其列形成了(pi^T)的秩为3的零空间。(pi^T M = 0)

      (M)不是唯一的,假设平面(pi = (a,b,c,d)^T),并且(a)是非零的向量,那么(M^T = [p|I_{3 imes 3}]),其中(p = (-b/a, -c/a, -d/a)^T)

    9. 假设两条直线(L, hat{L})分别有点(A,B)(hat{A},hat{B}),那么当且仅当这四个点共面的时候,两条线会相交,其充要条件为:

      [det[A,B,hat{A},hat{B}] = ··· = (L|hat{L}) ]

      所以,当且仅当((L|hat{L}) = 0)时,(L)(hat{L})才会相交(共面)。

    10. 二次曲面:

    [X^TQX = 0 ]

    其中Q是对称4×4矩阵。

  • 相关阅读:
    RobotFrameWork-Python简易环境搭建
    Oracle常用函数
    Oracle多表连接查询Join
    测试用例的常用设计方法
    App自动化测试之Monkey使用场景及常用命令
    App自动化测试之Adb基础命令使用
    App弱网测试
    前端基础(二)
    py自动化框架(二)
    html基础js
  • 原文地址:https://www.cnblogs.com/linzzz98/p/14387842.html
Copyright © 2011-2022 走看看