- keywords: ORB, RANSAC, normalized direct linear transformation (DLT) algorithm
- keywords: normalized direct linear transformation (DLT) algorithm, inverse warping (bilinear interpolation), GUI mouse click
- keywords: epipolar geometry, stereo processing
- keywords: image stitching, image warping
- keywords: rasterization, mesh, pygame
- keywords: Perspective-n-Point (PnP) pose computation, DLT, EPnP, RANSAC, trajectory, augmented reality (AR)
- keywords: chessboard, camera intrinsic matrix, distortion coefficients, RMS reprojection error
- keywords: camera relative pose, epipolar geometry, triangulation, absolute orientation problem
- Some notes and references are listed at the bottom of this page.
python3 HomographyEstimation.py --img1 images/1-b0.jpg --img2 images/1-b1.jpg --n 4 --descriptor o
python3 DocumentRectification.py --img1 images/book1.jpg
python3 StereoRectification.py --img1 images/bike1.png --img2 images/bike2.png
python3 image_stitching.py --imgDir successive_images/scottsdale --outputDir results
- Objective: To display the polygons
- Language: Python
- Library:
pygame
- Input:
.obj
files
The parameters can be modified in main_displayer.py
. Then run
python3 main_displayer.py
- Movement:
W
,A
,S
,D
- Rotation:
←
(left arrow) and→
(right arrow)
First, merge separate data inputs.
python3 merge_data.py
After runnung merge_data.py
, please make sure that 4 pkl files, namely images.pkl
, point_desc.pkl
, points3D.pkl
, and train.pkl
, are in the data
directory.
python3 trajectoryPlot.py --pnp epnp_gauss
python3 trajectoryPlot.py --pnp epnp_gauss --onlyshow 1
- Options for the command-line argument
--pnp
for PnP pose computations are provided:- p3p_Grunert_ransac
- normalized_DLT
- epnp
- epnp_gauss
- opencv_PnPRansac
python3 cubeDrawing.py --pnp epnp_gauss --videopath results/cubeVideo.mp4
python3 cubeDrawing.py --pnp epnp_gauss --onlyshow 1 --videopath results/cubeVideo.mp4
python3 cubeDrawing.py --onlyshow 2 --videopath results/cubeVideo.mp4
python3 camera_calibration.py
This program estimates the camera intrinsic matrix and the distortion coefficients.
python3 main_vo.py --imgDir input_vo_frames --camParams results_calibration/camera_params.npy --features 1000 --trackerConfig orb --poseMethod opencv --show True
where the --trackerConfig
has the following options:
orb
brisk
sift
sift_root
akaze
LK_SHI_TOMASI
LK_FAST
- The following two videos are performed with
sift_root
.- Demonstration 1: https://youtu.be/wlfBCzuvmBQ
- Demonstration 2: https://youtu.be/HYALMOclFIc
Estimate the pose error (for Project 6)
python3 poseError.py
python3 transform_cube.py
- All output files are saved in the
results
folder. - Some of projects are modified from the class of 3D Computer Vision with Deep Learning Applications at National Taiwan University.
[1] Lecture Notes from Chu-Song Chen's class of 3D Computer Vision with Deep Learning Applications (Fall 2022)
[2] Homography Estimation from hughesj919's Github
[3] Inverse Warping from makkrnic's Github
[4] (Project 3) images
[5] Stitching Pipeline from OpenCV
[6] Image Stitching from apoorva-dave's Github
[7] (Project 5) 3D Rasterizer from lcox74's github
[7] (Project 6) Dataset
[8] EPnP and Gauss-Newton Optimization from WeiyanCai's Github
[9] Direct Linear Transform (DLT) from acvictor's Github
[10] Visual Odometry from luigifreda's github
[11] Pose Recovery from laavanyebahl's github
[12] Absolute Orientation Problem in Cyrill Stachniss's lecture notes