Main Content

Camera Pose Estimation and 3-D Reconstruction

Estimate camera poses using foundational epipolar geometry, triangulation and bundle adjustment for 3-D reconstruction

Computer Vision Toolbox™ provides a comprehensive set of foundational tools for estimating camera poses and reconstructing 3-D scenes from multiple views. These tools are essential for applications such as structure-from-motion, visual SLAM, augmented reality, and robotics. You can estimate camera poses using the essential matrix or fundamental matrix and also compute relative camera positions based on epipolar geometry. For calibrated cameras, you can use the perspective-three-point (P3P) algorithm or the camera projection matrix to help determine absolute or relative poses from 2-D to 3-D point correspondences. For more information, see estimateEssentialMatrix, estimateFundamentalMatrix and estrelpose.

To refine pose estimates and improve reconstruction accuracy, the toolbox supports bundle adjustment techniques for optimizing camera poses and 3-D point locations jointly or independently. For more information, see bundleAdjustment.

For 3-D reconstruction, you can triangulate points from multiple views and manage point-track correspondences. You can also convert between image and world coordinates, which supports projection and back-projection tasks. For more information, see pointTrack, triangulate and img2world2d.

The toolbox provides functionality to manage and organize image and point data using specialized objects. These structures enable pose graph creation and optimization for large-scale reconstruction pipelines. The toolbox also supports visualization of camera positions and reconstructed point clouds in 3-D space. For more information, see imageviewset, createPoseGraph and plotCamera.

Functions

expand all

estimateEssentialMatrixEstimate essential matrix from corresponding points in a pair of images
estimateFundamentalMatrixEstimate fundamental matrix from corresponding points in stereo images
estworldposeEstimate camera pose from 3-D to 2-D point correspondences (Since R2022b)
estrelposeCalculate relative rotation and translation between camera poses (Since R2022b)
estimateExtrinsicsCalculate location of calibrated camera (Since R2022b)
pose2extrConvert camera pose to extrinsics (Since R2022b)
extr2poseConvert extrinsics to camera pose (Since R2022b)
cameraProjectionCamera projection matrix (Since R2022b)
estimateCameraProjectionEstimate camera projection matrix from world-to-image point correspondences (Since R2022b)
readAprilTagDetect and estimate pose for AprilTag in image
readArucoMarkerDetect and estimate pose for ArUco marker in image (Since R2024a)
bundleAdjustmentAdjust collection of 3-D points and camera poses
bundleAdjustmentMotionAdjust collection of 3-D points and camera poses using motion-only bundle adjustment
bundleAdjustmentStructureRefine 3-D points using structure-only bundle adjustment
pointTrackObject for storing matching points from multiple views
findTracksFind matched points across multiple views
triangulate3-D locations of undistorted matching points in stereo images
triangulateMultiview3-D locations of world points matched across multiple images
img2world2dDetermine world coordinates of image points (Since R2022b)
world2imgProject world points into image (Since R2022b)
imageviewsetManage data for structure-from-motion, visual odometry, and visual SLAM
createPoseGraphCreate pose graph
optimizePosesOptimize absolute poses using relative pose constraints
worldpointsetManage 3-D to 2-D point correspondences
plotCameraPlot camera in 3-D coordinates
pcshowPlot 3-D point cloud
estgeotform3dEstimate 3-D geometric transformation from matching point pairs (Since R2022b)
affinetform3d3-D affine geometric transformation (Since R2022b)
rigidtform3d3-D rigid geometric transformation (Since R2022b)
simtform2d2-D similarity geometric transformation (Since R2022b)
simtform3d3-D similarity geometric transformation (Since R2022b)
se3SE(3) homogeneous transformation (Since R2026a)
so3SO(3) rotation (Since R2026a)
rotmat2vec3dConvert 3-D rotation matrix to rotation vector (Since R2022b)
rotvec2mat3dConvert 3-D rotation vector to rotation matrix (Since R2022b)
quaternionCreate quaternion array (Since R2023b)
randrotUniformly distributed random rotations (Since R2023b)

Topics

Featured Examples