Research Group on Visual Computation

Multiview Absolute Pose Using 3D – 2D Perspective Line Correspondences and Vertical Direction

Icon of project Related projects: Line-based absolute pose with known vertical direction

Description

This page contains two solvers for the absolute pose estimation problem with a multiview calibrated perspective camera system from 3D - 2D line correspondences. Herein, we propose two solutions: the first solution consists of a single linear system of equations (NPnLupL), while the second solution (NPnLupC) yields a polynomial equation of degree three in one variable and one system of linear equations which can be efficiently solved in closed form. The proposed algorithms have been evaluated on various synthetic datasets as well as on real data. All of the solutions can be used as a minimal solver as well as a least squares solver without reformulation. Experimental results confirm the state of the art performance both in terms of quality and computing time.

Files

All the codes are released under the GNU General Public License.
  • NPnLupL and NPnLupC

    The code contains the methods described in our [1] publication, you can download the full test environment here: code.

    • To run NPnLupL call: PoseL = NPnLUpL(input,camNum,lineNum);

    • To run NPnLupC call: PoseC = NPnLUpC(input,camNum,lineNum); The optimal solution is obtained as the first solution in the returned list of the poses sorted based on the backprojection error.

      Example input: input, it contains data for 5 cameras and 60 2D-3D line correspondances

    Input parameters: a structure input with

    1. input.Camera(:).Line2D.start = normalized coordinates of the image line segment startpoints (nx3)
    2. input.Camera(:).Line2D.end = normalized coordinates of the image line segment endpoints (nx3)
    3. input.Camera(:).line3D.start = start points of the 3D line segments in the world coordinate system (nx3)
    4. input.Camera(:).line3D.end = end points of the 3D line segments in the world coordinate system (nx3)
    5. input.vertical_direction = known vertical direction angles
    6. camNum= number of camera
    7. lineNum= number of 2D-3D line pairs to be used

    NOTE: we assume a calibrated perspective camera, and we work with the equivalent normalized image coordinates of the line endpoints. If we have a matrix M of size 3xn which contains the 2D coordinates with homogeneous coordinate representation in the image plane then we can normalize the coordinates as follows:
    temp = inv(K) * M;
    for i=1:n
    M_normalized(:,i) = temp(:,i) / temp(3,i)
    end

    Output:
    poses: a list of 4*4 matrix acts from the world coordinate system to the reference camera ('Absolute pose'). The optimal pose is ranked as the first solution in the returned list based on the backprojection error.

    Please cite our [1] publication whenever you use the implementation.

Publications to cite:
  1. Nora Horanyi, Zoltan Kato, Multiview Absolute Pose Using 3D - 2D Perspective Line Correspondences and Vertical Direction, In Proceedings of ICCV Workshop on Multiview Relationships in 3D Data, IEEE, Venice, Italy, pp. 1-9, 2017. [bibtex]

Hichem Abdellali has been awarded the Doctor of Philosophy (PhD.) degree...

2022-04-30


Hichem Abdellali has been awarded the KÉPAF Kuba Attila prize...

2021-06-24