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:

https://szeliski.org/Book

Concise Computer Vision – An Introduction into Theory and Algorithms, Author: Reinhard Klette

For image processing I will use these libraries (numpy, scipy, opencv):

https://numpy.org/

https://scipy.org/

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 and scipy.
  • 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

https://szeliski.org/Book

Concise Computer Vision – An Introduction into Theory and Algorithms, Author: Reinhard Klette

Github

https://github.com/michaelbiester/ComputerVision

Tools / Programming

https://numpy.org/

https://scipy.org/

https://docs.opencv.org/3.4/d7/dbd/group__imgproc.html

https://jupyter.org/