Skip to content

Commit a34bc36

Browse files
committed
Add Python examples for Lecture 02 and 04
1 parent 3d2833b commit a34bc36

33 files changed

Lines changed: 1564 additions & 2683 deletions

README.md

Lines changed: 50 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -12,46 +12,65 @@ In addition to tutorial slides, example codes are provided in the purpose of edu
1212

1313
### Lecture Slides
1414
* [Section 1. Introduction](https://github.com/sunglok/3dv_tutorial/blob/master/slides/01_introduction.pdf)
15-
* [Section 2. Single-view Geometry](https://github.com/sunglok/3dv_tutorial/blob/master/slides/01_introduction.pdf)
16-
* Section 3. Two-view Geometry
17-
* Section 4. Solving Problems
15+
* [Section 2. Single-view Geometry](https://github.com/sunglok/3dv_tutorial/blob/master/slides/02_single-view_geometry.pdf)
16+
* [Section 3. Two-view Geometry](https://github.com/sunglok/3dv_tutorial/blob/master/slides/03_two-view_geometry.pdf)
17+
* [Section 4. Solving Problems](https://github.com/sunglok/3dv_tutorial/blob/master/slides/04_solving_problems.pdf)
1818
* Section 5. Finding Correspondence
1919
* Section 6. Multiple-view Geometry
2020
* Special Topic) [Bayesian Filtering](https://github.com/mint-lab/filtering_tutorial)
2121
* Special Topic) Visual SLAM and Odometry
2222

2323
### Example Codes
24-
* **Section 1. Introduction** [[Slides]](https://github.com/sunglok/3dv_tutorial/blob/master/slides/01_introduction.pdf)
25-
* **Section 2. Single-view Geometry** [[Slides]](https://github.com/sunglok/3dv_tutorial/blob/master/slides/01_introduction.pdf)
26-
* Camera Projection Model
27-
* Object Localization and Measurement: [object_localization.cpp][] (result: [image](https://drive.google.com/open?id=10Lche-1HHazDeohXEQK443ruDTAmIO4E))
28-
* Image Formation: [image_formation.cpp][] (result: [image0](https://drive.google.com/file/d/0B_iOV9kV0whLY2luc05jZGlkZ2s/view), [image1](https://drive.google.com/file/d/0B_iOV9kV0whLS3M4S09ZZHpjTkU/view), [image2](https://drive.google.com/file/d/0B_iOV9kV0whLV2dLZHd0MmVkd28/view), [image3](https://drive.google.com/file/d/0B_iOV9kV0whLS1ZBR25WekpMYjA/view), [image4](https://drive.google.com/file/d/0B_iOV9kV0whLYVB0dm9Fc0dvRzQ/view))
29-
* Geometric Distortion Correction: [distortion_correction.cpp][] (result: [video](https://www.youtube.com/watch?v=HKetupWh4V8))
30-
* General 2D-3D Geometry
31-
* Camera Calibration: [camera_calibration.cpp][] (result: [text](https://drive.google.com/file/d/0B_iOV9kV0whLZ0pDbWdXNWRrZ00/view))
32-
* Camera Pose Estimation (Chessboard): [pose_estimation_chessboard.cpp][] (result: [video](https://www.youtube.com/watch?v=4nA1OQGL-ig))
33-
* Camera Pose Estimation (Book): [pose_estimation_book1.cpp][]
34-
* Camera Pose Estimation and Calibration: [pose_estimation_book2.cpp][]
35-
* Camera Pose Estimation and Calibration w/o Initially Given Camera Parameters: [pose_estimation_book3.cpp][] (result: [video](https://www.youtube.com/watch?v=GYp4h0yyB3Y))
36-
* **Section 3. Two-view Geometry**
37-
* Planar 2D-2D Geometry (Projective Geometry)
38-
* Perspective Distortion Correction: [perspective_correction.cpp][] (result: [original](https://drive.google.com/file/d/0B_iOV9kV0whLVlFpeFBzYWVadlk/view), [rectified](https://drive.google.com/file/d/0B_iOV9kV0whLMi1UTjN5QXhnWFk/view))
39-
* Planar Image Stitching: [image_stitching.cpp][] (result: [image](https://drive.google.com/file/d/0B_iOV9kV0whLOEQzVmhGUGVEaW8/view))
40-
* 2D Video Stabilization: [video_stabilization.cpp][] (result: [video](https://www.youtube.com/watch?v=be_dzYicEzI))
41-
* General 2D-2D Geometry (Epipolar Geometry)
42-
* Visual Odometry (Monocular, Epipolar Version): [vo_epipolar.cpp][]
43-
* Triangulation (Two-view Reconstruction): [triangulation.cpp][]
44-
* **Section 4. Solving Problems**
24+
* **Section 1. Introduction** [[slides]](https://github.com/sunglok/3dv_tutorial/blob/master/slides/01_introduction.pdf)
25+
* **Section 2. Single-view Geometry** [[slides]](https://github.com/sunglok/3dv_tutorial/blob/master/slides/02_single-view_geometry.pdf)
26+
* Getting Started with 2D
27+
* 3D rotation conversion [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/3d_rotation_conversion.py)
28+
* Pinhole Camera Model
29+
* Object localization [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/object_localization.py) [[cpp]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/object_localization.cpp)
30+
* Image formation [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/image_formation.py) [[cpp]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/image_formation.cpp)
31+
* Geometric Distortion Models
32+
* Geometric distortion visualization [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/distortion_visualization.py)
33+
* Geometric distortion correction [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/distortion_correction.py) [[cpp]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/distortion_correction.cpp) [[result video]](https://www.youtube.com/watch?v=HKetupWh4V8)
34+
* Camera Calibration
35+
* Camera calibration [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/camera_calibration.py) [[cpp]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/camera_calibration.cpp)
36+
* Absolute Camera Pose Estimation (a.k.a. perspective-n-point; PnP)
37+
* Pose estimation (chessboard) [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_chessboard.py) [[cpp]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_chessboard.cpp) [[result video]](https://www.youtube.com/watch?v=4nA1OQGL-ig)
38+
* Pose estimation (book) [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_book1.py) [[cpp]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_book1.cpp)
39+
* Pose estimation (book) with camera calibration [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_book2.py) [[cpp]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_book2.cpp)
40+
* Pose estimation (book) with camera calibration without initial K [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_book3.py) [[cpp]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_book3.cpp) [[result video]](https://www.youtube.com/watch?v=GYp4h0yyB3Y)
41+
* **Section 3. Two-view Geometry** [[slides]](https://github.com/sunglok/3dv_tutorial/blob/master/slides/03_two-view_geometry.pdf)
42+
* Planar Homography
43+
* Perspective distortion correction [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_book1.py) [[cpp]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_book1.cpp)
44+
* Planar image stitching [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_book1.py) [[cpp]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_book1.cpp)
45+
* 2D video stabilization [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_book1.py) [[cpp]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_book1.cpp) [[result video]](https://www.youtube.com/watch?v=be_dzYicEzI)
46+
* Epipolar Geometry
47+
* Epipolar line visualization
48+
* Relative Camera Pose Estimation (a.k.a. Fundamental/Essential Matrix Estimation)
49+
* Monocular visual odometry (epipolar version)
50+
* Triangulation [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_book1.py) [[cpp]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_book1.cpp)
51+
* **Section 4. Solving Problems** [[slides]](https://github.com/sunglok/3dv_tutorial/blob/master/slides/04_solving_problems.pdf)
52+
* Solving Linear Equations in 3D Vision
53+
* Affine transformation estimation [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/affine_estimation_implement.py)
54+
* Planar homography estimation [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/homography_estimation_implement.py)
55+
* Appendix) Image warping using homography [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/image_warping_implement.py)
56+
57+
* Fundamental matrix estimation [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/fundamental_mat_estimation_implement.py)
58+
* Triangulation [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/triangulation_implement.py)
59+
60+
* Solving Nonlinear Equations in 3D Vision
61+
* Absolute camera pose estimation [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_implement.py)
62+
* Camera calibration [[python]](https://github.com/sunglok/3dv_tutorial/blob/master/examples/camera_calibration_implement.py)
63+
4564
* **Section 5. Finding Correspondence**
46-
* Line Fitting with RANSAC: [line_fitting_ransac.cpp][]
47-
* Line Fitting with M-estimators: [line_fitting_m_est.cpp][]
65+
* Line Fitting with RANSAC
66+
* Line Fitting with M-estimators
4867
* **Section 6. Multiple-view Geometry**
4968
* Bundle Adjustment
50-
* Global Version: [bundle_adjustment_global.cpp][]
51-
* Incremental Version: [bundle_adjustment_inc.cpp][]
69+
* Global Version
70+
* Incremental Version
5271
* Structure-from-Motion
53-
* Global SfM: [sfm_global.cpp][]
54-
* Incremental SfM: [sfm_inc.cpp][]
72+
* Global SfM
73+
* Incremental SfM
5574
* Feature-based Visual Odometry and SLAM
5675
* Visual Odometry (Monocular, Epipolar Version): [vo_epipolar.cpp][]
5776
* Visual Odometry (Stereo Version)
@@ -82,27 +101,4 @@ The authors thank the following contributors and projects.
82101
* [The KITTI Vision Benchmark Suite](http://www.cvlibs.net/datasets/kitti/): The KITTI odometry dataset #07 was used to demonstrate visual odometry and SLAM.
83102
* [Russell Hewett](https://courses.engr.illinois.edu/cs498dh3/fa2013/projects/stitching/ComputationalPhotograph_ProjectStitching.html): His two hill images were used to demonstrate image stitching.
84103
* [Kang Li](http://www.cs.cmu.edu/~kangli/code/Image_Stabilizer.html): His shaking CCTV video was used to demonstrate video stabilization.
85-
* [Richard Blais](http://www.richardblais.net/): His book cover and video in [the OpenCV tutorial](http://docs.opencv.org/3.1.0/dc/d16/tutorial_akaze_tracking.html) were used to demonstrate camera pose estimation and augmented reality.
86-
87-
[OpenCV]: http://opencv.org/
88-
[Ceres Solver]: http://ceres-solver.org/
89-
90-
[object_localization.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/object_localization.cpp
91-
[image_formation.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/image_formation.cpp
92-
[distortion_correction.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/distortion_correction.cpp
93-
[camera_calibration.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/camera_calibration.cpp
94-
[pose_estimation_chessboard.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_chessboard.cpp
95-
[pose_estimation_book1.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_book1.cpp
96-
[pose_estimation_book2.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_book2.cpp
97-
[pose_estimation_book3.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/pose_estimation_book3.cpp
98-
[perspective_correction.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/perspective_correction.cpp
99-
[image_stitching.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/image_stitching.cpp
100-
[video_stabilization.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/video_stabilization.cpp
101-
[vo_epipolar.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/vo_epipolar.cpp
102-
[triangulation.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/triangulation.cpp
103-
[bundle_adjustment_global.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/bundle_adjustment_global.cpp
104-
[bundle_adjustment_inc.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/bundle_adjustment_inc.cpp
105-
[sfm_global.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/sfm_global.cpp
106-
[sfm_inc.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/sfm_inc.cpp
107-
[line_fitting_ransac.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/line_fitting_ransac.cpp
108-
[line_fitting_m_est.cpp]: https://github.com/sunglok/3dv_tutorial/blob/master/examples/line_fitting_m_est.cpp
104+
* [Richard Blais](http://www.richardblais.net/): His book cover and video in [the OpenCV tutorial](http://docs.opencv.org/3.1.0/dc/d16/tutorial_akaze_tracking.html) were used to demonstrate camera pose estimation and augmented reality.

0 commit comments

Comments
 (0)