Learning Computer Vision
Motivation
Having tinkered with the HQ camera a bit, some applications come to mind:
- motion detection
- detecting pattern / objects
As always there are a lot of recipes on the internet and many computer vision problems may be solved merely by applying those recipes. But to gain some true insight into how specific computer vision algorithms work I found this recipe approach less suited.
To learn more about computer vision/image processing I found these books helpful:
Concise Computer Vision – An Introduction into Theory and Algorithms, Author: Reinhard Klette
For image processing I will use these libraries (numpy
, scipy
, opencv
):
For programming Jupyter Notebooks https://jupyter.org/ are a good choice. (I really like being able to embed LaTex formulas and other content directly into a notebook, thus keeping documentation and code in a single document)
https://docs.opencv.org/3.4/d7/dbd/group__imgproc.html
The notebooks will be available on GitHub. In some cases a PDF version is provided to get an overview quickly without having to download and run a Jupyter/IPython notebook.
https://github.com/michaelbiester/ComputerVision
And here is a short overview which IPython notebooks are currently available:
corr_and_conv_e.ipynb
(PDF:corr_and_conv_e.pdf
)- review of the concept of correlation applied to image processing. The concept of convolution is only briefly touched.
correlation_convolution_2d_experiments.ipynb
(PDF:correlation_convolution_2d_experiments.pdf
)- A more detailed review of correlation and convolution when applied to 2D images. Moreover the interrelation of correlation and convolution is explained.
Fourier_1D_e.ipynb
(PDF:Fourier_1D_e.pdf
)- To familiarize myself with the discrete Fourier transform DFT a review of DFT concepts for the 1D case. (Understanding how the Fourier transform works for the 1D case helps to understand how to extend the concept to 2D)
- Fourier_1D_application_1.ipynb (PDF: Fourier_1D_application_1.pdf)
- Some applications of the 1D DFT. Demonstrates how to apply a time shift in the frequency domain and uses Python libraries
numpy
andscipy
.
- Some applications of the 1D DFT. Demonstrates how to apply a time shift in the frequency domain and uses Python libraries
fourier_2d.ipynb
(PDF:fourier_2d.pdf
)- reviews properties to the 2D discrete Fourier transform
frequency_domain_filtering.ipynb
(PDF:frequency_domain_filtering.pdf
)- how to filter an image in the frequency domain and demonstrating the effect of restricting the bandwidth of the filter
motion_detection.ipynb
(PDF:motion_detection.pdf
)- compares images and proposes a simple method to detect changes in an image (possible application: motion detection). The method is simple but a production quality motion detection schema would likely require a different approach (eg: extracting features of image1 and image2; then comparing features which are common to both images and which are present in only one image but missing in the other … ).
Resource:
Books
Concise Computer Vision – An Introduction into Theory and Algorithms, Author: Reinhard Klette
Github
https://github.com/michaelbiester/ComputerVision
Tools / Programming