Image processing and Computer vision

In the field of Robotics, camera is one of the non-dispensable sensor. Almost every Robotic device (land, underwater, humanoid, etc.) use camera. Self driving vehicles are also equipped with multiple cameras (mono and stereo) to extract the information from the surrounding environment. Due to large increase in the use of camera and due to availability of high and complex processing devices, computer vision has become very important. Processing of images like reading, writing, doing mathematical operations on them, filtering processes, etc can be classified as Image processing. And then further extracting information and features from the processed images can be categorized under computer vision.

As it can be easily understood that, computer vision is just different ways of working on the images and hence can be considered as variety of software algorithms. OpenCV is one such bunch of libraries containing different algorithms and organized in type of processing they do. Today, most of the people and companies who are involved in applications based on computer vision and camera, use openCV.

OpenCV (Open Source Computer Vision Library) is released under a BSD license and hence it’s free for both academic and commercial use. It has C++, Python and Java interfaces and supports Windows, Linux, Mac OS, iOS and Android. OpenCV was designed for computational efficiency and with a strong focus on real-time applications. Written in optimized C/C++, the library can take advantage of multi-core processing. Enabled with OpenCL, it can take advantage of the hardware acceleration of the underlying heterogeneous compute platform.


References

1. Online video course/tutorials by Professor Peter Corke at https://robotacademy.net.au/

This online video series is very nicely designed and helps to clear the concepts of image processing and computer vision. Note that in the videos, Matlab is used for quick programming. Hence this video series do not use openCV for programming. But I will suggest to use this course to understand the concepts and know about various techniques use in image processing. This can be very good start for someone new to computer vision or who wants to revise the concepts.

  • Robot Vision
  • Getting images into computer
  • Image Processing
  • Spatial Operators
  • Feature extraction
  • Color
  • How images are formed
  • Geometry of image formation
  • 3D Vision
  • Advanced Image processing
  • Vision and Motion

2. Online Tutorials at openCV.org by openCV team

  • Introduction of OpenCV
  • The core functionality
  • image processing (imgproc module)
  • High level GUI and Media
  • Image input and Output
  • Camera calibration and 3D construction
  • 2D feature framework
  • Video analysis
  • Object detection
  • Deep neural network, machine learning
  • Graph API, image stitching
  • GPU accelerated computer vision

3. Book: Computer Vision – Algorithms and Applications by Richard Szelski

  • It Explores the variety of techniques commonly used to analyze and interpret images.
  • It also describes challenging real-world applications where vision is being successfully used, both for specialized applications such as medical imaging, and for fun, consumer-level tasks such as image editing and stitching.
  • It can be used as very good reference book for students as well as references who are working in the field of computer vision.
  • It covers almost all the concepts with mathematical background and explanation of techniques

4. Book: Practical openCV (with C++) by Samarth Brahmbhatt

This book contains hands on practice of image processing techniques with openCV and C++. It includes concepts (in brief) and then implementation for all the applications.

  • Get OpenCV up and running on Windows or Linux.
  • Use OpenCV to control the camera board and run vision algorithms on Raspberry Pi.
  • Understand what goes on behind the scenes in computer vision applications like object detection, image stitching, filtering, stereo vision, and more.
  • Code complex computer vision projects using C++ and openCV
  • Combine different modules that can be develop to create interactive computer vision applications

5. Book: Practical Python and openCV by Dr. Adrian Rosebrock

This is very small and handy book directly available with codes and concepts to practice basic to intermediate image processing with Python and openCV.

  • Python and required packages along with openCV
  • Image basics
  • Drawings
  • Image Processing
  • Histograms
  • Smoothing and blurring
  • Thresholding
  • Gradient and Edge detection
  • Contours