This document discusses the history and current state of computer vision. It begins with definitions of computer vision from the 1980s, focusing on machine vision and automatically analyzing images. It then provides a 2014 definition that emphasizes duplicating human vision abilities through electronic image perception and understanding using models from various fields. The document notes computer vision involves more than just image capture, including image processing, algorithm development, and display control. It also lists and briefly describes several popular Python libraries for computer vision tasks, such as PIL, Scipy ndimage, Mahotas, PCV, SimpleCV, and OpenCV. It concludes with resources for learning more about computer vision and Python.
2. What is Computer Vision – 1980’s
Then it was called Machine Vision
"the automatic acquisition and analysis of images to
obtain desired data for interpreting
a scene or controlling an activity" (Schaffer, 1984).
cnt dw $0000
src dw $0000
dst dw $0000
memcpy public
ldab cnt+1 ;Set B = cnt.L
beq check ;If cnt.L=0, goto check
loop ldx src ;Set IX = src
ldaa ix ;Load A from (src)
inx ;Set src = src+1
stx src
ldx dst ;Set IX = dst
staa ix ;Store A to (dst)
inx ;Set dst = dst+1
stx dst
decb ;Decr B
bne loop ;Repeat the loop
stab cnt+1 ;Set cnt.L = 0
check tst cnt+0 ;If cnt.H=0,
beq done ;Then quit
dec cnt+0 ;Decr cnt.H
decb ;Decr B
bra loop ;Repeat the loop
done rts ;Return
3. What is Computer Vision - 2014
“Computer vision is a field that includes methods for acquiring,
processing, analyzing, and understanding images and, in general, high-
dimensional data from the real world in order to produce numerical or
symbolic information, e.g., in the forms of decisions. A theme in the
development of this field has been to duplicate the abilities of human
vision by electronically perceiving and understanding an image. This
image understanding can be seen as the disentangling of symbolic
information from image data using models constructed with the aid of
geometry, physics, statistics, and learning theory. Computer vision has
also been described as the enterprise of automating and integrating a
wide range of processes and representations for vision perception.”
(Wikipedia 2014 http://en.wikipedia.org/wiki/Computer_Vision)
6. CV is a lot more than grabbing an image
CV
Object Illumination
Image
Capture
Sensors/Cameras Digitisation/Conversion
Image
Processing
Algorithm
Development
Implementation
Display Control
7. Python Imaging Library
Pillow – The friendly PIL fork python 2.6+, 3.2+
http://python-pillow.github.io/
PIL – The “original” PIL python 1.52+, 2.0+
last release 11/2009
http://effbot.org/downloads
Demo: PIL.ipynb
9. mahotas
Another library of fast computer vision algorithms (all
implemented in C++). Operates over numpy arrays.
• Image loading & writing
(including formats like LSM or STK).
• Image filtering (morphological, Gaussian, &c)
• Feature computation (Haralick, LBPs, SURF, &c)
• Most functions work in 3D (or even 4D, 5D, up to
32D).
• Many other utility functions
http://mahotas.readthedocs.org/
11. SimpleCV
SimpleCV is an open source framework for building
computer vision applications. With it, you get access to
several high-powered computer vision libraries such as
OpenCV – without having to first learn about bit depths,
file formats, color spaces, buffer management,
eigenvalues, or matrix versus bitmap storage.
http://simplecv.org/
Demo: SimpleCV - The Basics.ipynb
Pygamedependency caused me some problems
Not all image manipulation worked in ipython. Simplecv
shell is where all functionality works.
12. OpenCV Python Wrappers
Official python wrapper for OpenCV C/C++ libraries
Two namespaces cv & cv2. Use cv2, cv deprecated
Basis of SimpleCV and other python CV libraries
Demo: OpenCV - The Basics.ipynb
Demo: OpenCV Motion Detection.ipynb
Demo: OpenCV Face Detection.ipynb
13. Raspberry Pi CV
OpenCV available but USB cameras slow
Rpi camera faster, uses GPU, doesn’t work with OpenCV
apt-get install python-picamera solves that.
http://picamera.readthedocs.org/en/release-1.5/