Computer Vision Tutorial includes classical theories and techniques and also recent ML/DL-based methods for computer vision. As classical theories and techniques, the tutorial contains image processing, camera projection models, camera calibration, and pose estimation. As recent ML/DL-based methods, the tutorial deals with object categorization (and backbone networks), and its extensions such as object detection and instance segmentation. It also explains about further topics such as multi-object tracking, structure-from-motion, NeRF, and so on.
This tutorial has been initiated and maintained to teach undergraduate CSE students in SEOULTECH as the course of Computer Vision (109079).
This tutorial contains code examples briefly written in Python with OpenCV and PyTorch.
- 💡 Some of codes will help readers to understand inside of algorithms (e.g. how it works).
- 🔧 The others of codes will provide usages and applications of OpenCV functions (e.g. how to use it).
- Section 1. Introduction
- Section 2. Image Editing: Learning OpenCV
- Section 3. Image Processing
- Section 4. Image Formation
- Section 5. Color
- Section 6. Image Geometry
- Section 7. Visual Features
- Advanced Topic 1. How to Solve Equations
-
Section 1. Introduction (Slides)
- Note) How to install prerequisite packages in Python:
pip install -r requirements.txt
- Note) How to install prerequisite packages in Python:
-
Section 2. Image Editing: Learning OpenCV (Slides)
- OpenCV Image Representation
- Image creation: image_creation.py 💡
- OpenCV Image and Video Input/Output
- Image file viewer: image_viewer.py 🔧
- Image format converter: image_converter.py 🔧
- Video file player: video_player.py 🔧
- Video format converter: video_converter.py 🔧
- Camera recorder
- OpenCV Drawing Functions
- Shape drawing: shape_drawing.py 🔧
- OpenCV High-level GUI
- (Handling keyboard events) Video file player with frame navigation: video_player+navigation.py 🔧
- (Handling mouse events) Free drawing: free_drawing.py 🔧
- Image Editing
- Negative image and flip: negative_image_and_flip.py 💡
- Intensity transformation with contrast and brightness: intensity_transformation.py 💡
- (Image addition) Alpha blending: alpha_blending.py 💡
- (Image addition) Background extraction: background_extraction.py 💡
- (Image subtraction) Image difference: image_difference.py 💡
- (Image subtraction) Background subtraction
- (Image crop) Image file viewer with the zoom window: image_viewer+zoom.py 💡
- Image resize with backward value copy: image_resize.py 💡
- Image rotation with backward/forward value copy: image_rotation.py 💡
- OpenCV Image Representation
-
Section 3. Image Processing (Slides)
- Intensity Transformation
- Image histogram: histogram.py 💡
- Contrast stretching with min-max stretching: contrast_stretching.py 💡
- Histogram equalization: histogram_equalization.py 🔧
- Thresholding: thresholding.py 🔧
- Image Filtering
- Image filtering with various kernels: image_filtering.py 💡
- Median filter: median_filter.py 🔧
- Sobel edge detection: Sobel_edge.py 💡
- Canny edge detection: Canny_edge.py 🔧
- Bilateral filter: bilateral_filter.py 🔧
- Morphological Operations
- Morphological operations with various operations and kernels: morpology.py 🔧
- Application) Change detection (foreground extraction): change_detection.py 🔧
- Intensity Transformation
-
Section 4. Image Formation (Slides)
- Note) 3D rotation conversion: 3d_rotation_conversion.py 🔧
- Camera Projection Models
- Object localization: object_localization.py 💡
- Image formation: image_formation.py 💡
- Distortion visualization: distortion_visualization.py 💡
- Distortion correction: distortion_correction.py 🔧
- Camera calibration with a chessboard: camera_calibration.py 🔧
- Camera pose estimation with a chessboard: pose_estimation_chessboard.py 🔧
-
Section 5. Color (Slides)
- Color space conversion: color_bgr2hsv.py 🔧
- Color histogram equalization: histogram_equalization+color.py 💡
-
Section 6. Image Geometry (Slides)
- Camera pose estimation with a book cover v1: pose_estimation_book1.py 🔧
- Perspective correction: perspective_correction.py 🔧
- Image stitching: image_stitching.py 🔧
- 2D video stabilization: video_stabilization.py 🔧
- Triangulation: triangulation.py 🔧
-
Section 7. Visual Features (Slides)
-
Section 8. Object Recognition
-
Section 9. Object Tracking
-
Advanced Topics 1. How to Solve Equations (Slides)
- Solving inhomogeneous linear equations
- Affine transformation estimation: affine_estimation.py 💡
- Solving homogeneous linear equations
- Planar homography estimation: homography_estimation.py 💡
- Note) Image warping: image_warping.py 💡
- Triangulation: triangulation_implement.py 💡
- Planar homography estimation: homography_estimation.py 💡
- Solving nonlinear equations
- Camera pose estimation (PnP): pose_estimation_implement.py 💡
- Camera calibration: camera_calibration_implement.py 💡
- Solving inhomogeneous linear equations
The authors thank the following contributors and projects.
- ImageProcessingPlace.com for test images (
lena.tif,baboon.tif, andpeppers.tif) - MOTChallenge for test images (
PETS09-S2L1-raw.webm) - Wikipedia for a test image (
salt_and_pepper.png) - OpenCV for a test image (
sudoku.png)