APAP-Image-Stitching
                                
                                
                                
                                    APAP-Image-Stitching copied to clipboard
                            
                            
                            
                        As-Projective-As-Possible (APAP) Image Stitching with Moving DLT (CVPR 2013) - Python Implementation
As-Projective-As-Possible Image Stitching with Moving DLT
2020.12.28. ~ 2021.01.03.
Local-Homography warping
This program takes a list of images and performs stitching recursively.
This is a re-implementation with Python.
Official Matlab Code here: https://cs.adelaide.edu.au/~tjchin/apap/
1. Target Research Paper
The research paper: https://cs.adelaide.edu.au/~tjchin/apap/files/mdlt.pdf
Zaragoza, Julio, et al. "As-projective-as-possible image stitching with moving DLT." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2013.
2. Dependencies
python == 3.8.5
numpy == 1.19.2
opencv-python == 4.4.0.46
opencv-contrib-python == 4.4.0.46
pillow == 8.0.1
tqdm == 4.50.2
argparse
- Editor: PyCharm
 
3. Quick Start
Windows User
- unzip demo_bat.zip.
 - run demo.bat files on terminal.
 
Linux User
- unzip demo_sh.zip.
 - run demo.sh files on terminal.
 
You can give various types of options, check out "option.py". The "demo"s are tutorials.
4. Pipeline
- Image Loading
 - Grayscaling & SIFT(OpenCV)
 - Brute-Force Matching
 - RANSAC
 - Global-Homography Estimating & Final Size Extracting
 - Local-Homography Estimating
 - Superpixel Warping
 - Uniform Blending (50:50)
 
5. Why do stitching recursively?
- If stitching is performed sequentially from the left, the picture is excessively oriented to one side. In that case, it becomes difficult to estimate the correct homography.
 - APAP doesn't consider perspective distortion of multiple image stitching.
 - Recursive Stitching:
 

- 
Sequential Stitching:

 - 
In addition, if the size of the input image is too small, it is difficult to extract feature points, so that an incorrect homography may be estimated.
 
6. References
code
- https://github.com/lxlscut/APAP_S
 - https://github.com/fredzzhang/Normalized-Eight-Point-Algorithm
 - https://cs.adelaide.edu.au/~tjchin/apap/#Source
 
demo images
- https://github.com/daeyun/Image-Stitching
 - https://github.com/opencv/opencv_extra
 - https://www.pyimagesearch.com/2018/12/17/image-stitching-with-opencv-and-python/
 
thanks.
7. Optimization
There is room for optimization in the local warping algorithm by using numpy library. (operation speed)
8. Author
Dae-Young Song
Undergraduate student, Department of Electronic Engineering, Chungnam National University