美文网首页
文章点评CV1-极线约束与极线矫正(文献阅读)

文章点评CV1-极线约束与极线矫正(文献阅读)

作者: 闪电侠悟空 | 来源:发表于2019-05-16 14:56 被阅读0次

    参考文献:A compact algorithm for rectification of stereo pairs

    0.基本概念

    • 极线(epipolar line)
    • 投影几何(perspective projections)
    2019-05-15 17-28-09屏幕截图.png

    1. 小孔成像模型

    主要涉及三个坐标系:世界坐标系(word coordinates),相机坐标系(camera coordinate),图像坐标系(image plane coordinate)。世界坐标系中的点,通过转换矩阵\tilde{P}转换到图像坐标系。
    \tilde{\bf{m}} \cong \tilde{\bf{P}}\tilde{\bf{w}}. 相似等号(参照三角形相似)
    级线矫正的关键就是这个\tilde{\bf{P}},不满足我们的要求,所以就是分析这个变换就十分重要。

    1.1 分析变换矩阵\tilde{\bf{P}}

    • 变换角度分析
      \tilde{\bf{P}}是两步转换的综合:坐标系的旋转平移,投影变换。
      \tilde{\bf{P}} =\bf{A} [\bf{R}|\bf{t}]. 注意:通过QR分解,由\tilde{\bf{P}}推导出旋转平移[\bf{R}|\bf{t}],投影变换\bf{A}.

    • 几何表达角度分析(作者需要固定光心点\bf{c}
      \tilde{\bf{P}} = [\bf{Q}|\tilde{\bf{q}}] 分成两块了来看
      \tilde{\bf{m}} \cong \tilde{\bf{P}}\tilde{\bf{w}}= [\bf{Q}|\tilde{\bf{q}}][\frac{\bf{w}}{1}]. 把光心带入该式子
      {\bf{0}} \cong \bf{Q} \bf{c}+\tilde{\bf{q}} 个人对此式子还有一定疑问
      所以,\tilde{\bf{P}} = [\bf{Q}|-\bf{Q} \bf{c}]

    • 一对多的关系,图像点与世界坐标系
      \lambda{\tilde{\bf{m}}} = \bf{Q} \bf{w}-\bf{Qc} # 相似等号,换成了绝对的等号
      \bf{w}=\bf{c}+\lambda\bf{Q}^{-1}\tilde{\bf{m}} # 给定任意图像点\tilde{\bf{m}},对应一系列的空间点\bf{w}

    2019-05-15 18-01-55屏幕截图.png

    1.2 理想的变换矩阵

    • 两个相机矫正后,相同的投影变换\bf{A},(作者说这个可以随便选,很不错的性能)。
    • 两个相机矫正后,相同的旋转由\bf{R},(有要求,主要是X坐标轴与光心连线平行)
    • 两个相机矫正后,不同的平移\bf{t},作者约定光心与矫正前光心位置重合,(你也可以调整光心位置,相当切换了视角,会引起其他问题)

    2.极线矫正

    • 找到一个变换\bf{T},将old原始图像坐标\tilde{\bf{m}}_o,转到new新的图像坐标哦系\tilde{\bf{m}}_n下。
      \tilde{\bf{m}}_n\cong\bf{T}\tilde{\bf{m}}_o
      \bf{Q}_n\bf{w}-\bf{Q}_n\bf{c} \cong\bf{T}(\bf{Q}_o\bf{w}-\bf{Q}_o\bf{c} )
      \bf{T}\cong\bf{Q}_n{\bf{Q}_o}^{-1} #好了,只要有\bf{Q}_o(标定给出的)和\bf{Q}_n(人为设定的)就可以进行极线矫正了,找到了\bf{T}

    2.1 人为设定\bf{Q}_n

    • 投影变换\bf{A}_n=\bf{A}_{o1}+\bf{A}_{o2}。 # 任意设置嘛,取原来图像的平均值感觉比较好。
    • 旋转\bf{R}_n,主要依据光心来构建的直角坐标系,参看原文。
    • 平移\bf{t},感觉有点问题,对吧!且看作者是如何做的
      \tilde{\bf{P}} = [\bf{Q}|-\bf{Qc}]=A[R|t],立马推出 \bf t=-Rc
      所以其实平移\bf{t}并没有用,因为\bf{T}只和\bf{Q}有关系,\bf{Q}_n=\bf A_nR_n

    2.2 Matlab代码

    作者是提供了代码的(快20年过去了,论文中给的网址失效了),我们都很喜欢他!!!

    function [T1,T2,Pn1,Pn2] = rectify(Po1,Po2)
    % RECTIFY: compute rectification matrices
    % factorize old PPMs
    [A1,R1,t1] = art(Po1);
    [A2,R2,t2] = art(Po2);
    % optical centers (unchanged)
    c1 = - inv(Po1(:,1:3))*Po1(:,4);
    c2 = - inv(Po2(:,1:3))*Po2(:,4);
    % new x axis (= direction of the baseline)
    v1 = (c1-c2);
    % new y axes (orthogonal to new x and old z)
    v2 = cross(R1(3,:)’,v1);
    % new z axes (orthogonal to baseline and y)
    v3 = cross(v1,v2);
    % new extrinsic parameters
    R = [v1’/norm(v1)
         v2’/norm(v2)
         v3’/norm(v3)];
    % translation is left unchanged
    % new intrinsic parameters (arbitrary)
    A = (A1 + A2)./2;
    A(1,2)=0; % no skew
    % new projection matrices
    Pn1 = A * [R -R*c1 ];
    Pn2 = A * [R -R*c2 ];
    % rectifying image transformation
    T1 = Pn1(1:3,1:3)* inv(Po1(1:3,1:3));
    T2 = Pn2(1:3,1:3)* inv(Po2(1:3,1:3));
    
    % ------------------------
    function [A,R,t] = art(P)
    % ART: factorize a PPM as P=A*[R;t]
    Q = inv(P(1:3, 1:3));
    [U,B] = qr(Q);
    R = inv(U);
    t = B*P(1:3,4);
    A = inv(B);
    A = A ./A(3,3);
    

    参考文献

    • A compact algorithm for rectification of stereo pairs

    相关文章

      网友评论

          本文标题:文章点评CV1-极线约束与极线矫正(文献阅读)

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