Lec4.IntroductionToO..

Download Report

Transcript Lec4.IntroductionToO..

OpenCV
Training course
By Theerayod Wiangtong
Goals
 Develop
a universal toolbox for research and
development in the field of Computer Vision
Why use OpenCV?
 Fast
development time, more than 500
algorithms in OpenCV libraries
 C/C++ based programming
 Both Windows and Linux supported
 Open and free, BSD license
 Loads of developers using OpenCV
 Loads of information and documents
 Etc
History of OpenCV
 Originally
developed by Intel, currently
maintained by Willow Garage
5
OpenCV - Features
 Cross-platform
and extremely portable
 Free! for both research and commercial use
 Targeted for real-time applications
Table Courtesy Learning OpenCV: Computer Vision with the OpenCV
Library
6
OpenCV – Architecture & Modules
 CvAux

Area for experimental algorithms: e.g. HMM, Stereo
vision, 3D tracking, Bg/fg segmentation, camera
calibration, Shape matching, Gesture recognition, ..
OpenCV Comparisons
Examples of Using OpenCV
functions
 Click
here
OpenCV:
Algorithmic Content
OpenCV Functionality
 Basic
structures and operations
 Image Analysis
 Structural Analysis
 Object Recognition
 Motion Analysis and Object Tracking
 3D Reconstruction
(more than 500
algorithms!!)
Image Thresholding
 Fixed
threshold;
 Adaptive
threshold;
Statistics
 min,
max, mean value, standard
deviation over the image
 Multidimensional histograms
 Norms C, L1, L2
Multidimensional Histograms
 Histogram
operations : calculation,
normalization, comparison, back project
Histogram Equalization
Histograms comparison
Image Pyramids
Convolution in image
 The
source pixel and its surrounding pixels
are all mathematically merged to
produce a single destination pixel. The
matrix slides across the surface of the
source image, producing pixels for the
destination image
http://beej.us/blog/data/convolution-image-processing/
Image Pyramids
 Gaussian
and Laplacian
Morphological Operations
Two basic morphology operations
using structuring element:
 erosion
 dilation
Distance Transform
 Calculate
the distance for all non-feature points to
the closest feature point
 Two-pass algorithm, 3x3 and 5x5 masks, various
metrics predefined
Flood Filling
•grayscale image, floating range
•grayscale image, fixed range
Feature Detection

Fixed filters (Sobel operator,
Canny operator, Laplacian,
Scharr filter)

Hough transform (find lines
and circles)
http://www.stevens-tech.edu/wireless/klin/EdgeDetection/EdgeDetectionInfo.htm
Edge detection operators
 Simple
2
-1
-1
0
This means: pixel(i,j) = 2*pixel(i,j) - pixel(i,j+1) - pixel(i+1,j).
 Cross
0
1
1
0
-1
0
0
-1
Template 1:
Template 2:
pixel(i,j) = maximum(template 1, template 2)
Edge detection operators
 Prewitt
1
0
-1
1
1
1
1
0
-1
0
0
0
1
0
-1
-1
-1
-1
 Sobel
1
0
-1
1
2
1
2
0
-2
0
0
0
1
0
-1
-1
-2
-1
X-axis Template:
Y-axis Template:
pixel(i,j) = sqrt((x-axis template)^2 + (y-axis template)^2)
Canny Edge Detector
http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/canny_detector/canny_detector.html
Hough Transform
Contour Retrieving
 The
contour representation:
 Chain code (Freeman code)
 Polygonal representation
Initial Point
Chain code for the curve:
34445670007654443
Contour representation
Hierarchical representation of
contours
Image Boundary
(W1)
(B2)
(W2)
(B3)
(W3)
(B4)
(W5)
(W6)
Contours Examples
Source Picture
(300x600 = 180000 pts total)
Retrieved Contours
(<1800 pts total)
After Approximation
(<180 pts total)
And it is rather fast: ~70 FPS for 640x480 on complex scenes
Contour Processing



Approximation:
 RLE algorithm (chain code)
 Teh-Chin approximation (polygonal)
 Douglas-Peucker approximation (polygonal);
Contour moments (central and normalized up to order 3)
Matching of contours
Contours matching
 Matching
based on hierarchical
representation of contours
Object Recognition: Eigen Image
Object Recognition: HMM
One person – one HMM
 Stage 1 – Train every HMM

1
…

n
Stage 2 – Recognition
i
Pi
- probability
Choose max(Pi)
Motion Analysis and Object
Tracking
 Background
subtraction
 Motion templates
 Optical flow
 Active contours
 Estimators
Background Subtraction

Background: any static or periodically moving
parts of a scene that remain static or periodic over
the period of interest. How about waving trees,
light on/off..?!?
Background statistics functions
 Average
 Standard
deviation
 Connect component
Background Subtraction
Example
Motion Templates
 Object
silhouette
 Motion history images
 Motion history gradients
 Motion segmentation algorithm
MHG
silhouette
MHI
Motion Templates Example
•Motion templates allow
to retrieve the dynamic
characteristics of the
moving object
Object tracking

Mean-shift





Choose a search window (width and location)
Compute the mean of the data in the search window
Center the search window at the new mean location
Repeat until convergence
Cam-shift:
Continuously Adaptive Mean SHIFT
Region of
interest
Mean shift
Center of
mass
Mean Shift
vector
Slide by Y. Ukrainitz & B. Sarel
Region of
interest
Mean shift
Center of
mass
Mean Shift
vector
Slide by Y. Ukrainitz & B. Sarel
Region of
interest
Mean shift
Center of
mass
Mean Shift
vector
Slide by Y. Ukrainitz & B. Sarel
Region of
interest
Mean shift
Center of
mass
Mean Shift
vector
Slide by Y. Ukrainitz & B. Sarel
Region of
interest
Mean shift
Center of
mass
Mean Shift
vector
Slide by Y. Ukrainitz & B. Sarel
Region of
interest
Mean shift
Center of
mass
Mean Shift
vector
Slide by Y. Ukrainitz & B. Sarel
Region of
interest
Mean shift
Slide by Y. Ukrainitz & B. Sarel
Center of
mass
Object tracking
 Particle
filter
 Optical
flow, LK
Optical flow is the relation of
the motion field. It is a 2D
projection of the physical
movement of points relative to
the observer

v2
p2
p3
p1
p4
Optical Flow
I ( t  1)
I ( t ), { pi }

v1

v3

v4

{vi }
Velocity vectors
OpenCV shape classification
capabilities
Contour
approximation
Moments (image&contour)
Convexity analysis
Pair-wise geometrical
histogram
Fitting functions (line, ellipse)
Using contours and geometry to
classify shapes
 Given
the contour
classify the
geometrical figure
shape (triangle,
circle, etc)
Moments
Here p is the x-order and q is the y-order, whereby order means
the power to which the corresponding component is taken in
the sum just displayed. E.g. m00 moment is actually just the
length in pixels of the contour.
 Contour
Not
 Hu
moments (faster)
applicable for different sizes,
orientation
invariants
Image segmentation
Separate image into coherent “objects”
image
human segmentation
Segmentation Methods
Edge-based
approach
Apply edge detector (sobel, laplace, canny, gradient strokes).
Find connected components in an inverted image
Color
segmentation: histogram
Calculate the histogram. Find the objects of the selected
histogram in the image.
OpenCV:
Getting started
56
Getting Started

Download OpenCV
 http://opencv.willowgarage.com/wiki/

There exists a short walkthrough video on YouTube at
http://www.youtube.com/watch?v=9nPpa_WiArI

Learning OpenCV: Computer Vision with the OpenCV
Library by Gary Bradski and Adrian Kaehler

http://proquest.safaribooksonline.com/9780596516130
OpenCV 2.1 with Visual Studio 2008

Download the OpenCV 2.1.0 Windows installer from
SourceForge - "OpenCV-2.1.0-win32-vs2008.exe".

Install it to a folder (without any spaces in it), say
"C:\OpenCV2.1\". This article will refer to this path as
$openCVDir

During installation, enable the option "Add OpenCV to
the system PATH for all users".
Configure Visual Studio 2008


Open VC++ Directories configuration: Tools >
Options > Projects and Solutions > VC++ Directories
Choose "Show directories for: Include files"
•

Choose "Show directories for: Library files"
•

Add "$openCVDir\include\opencv"
Add "$openCVDir\lib"
Choose "Show directories for: Source files"
•
•
•
•
Add "$openCVDir\src\cv"
Add "$openCVDir\src\cvaux"
Add "$openCVDir\src\cxcore"
Add "$openCVDir\src\highgui"
Configure your Project



Open Project Properties: Project > %projectName%
Properties...
Open Linker Input properties: Configuration
Properties > Linker > Input
Open the "..." window to edit "Additional
Dependencies" and on each line put:
•
•
•
•

"cv210.lib"
"cxcore210.lib"
"highgui210.lib"
And any other lib file, e.g, cvaux.lib, necessary for your
project
Your project should now build. If you get any errors
try restarting Visual Studio and then doing a clean
Rebuild.
More info





http://opencv.willowgarage.com/documentation/c/index.html
http://dasl.mem.drexel.edu/~noahKuntz/openCVTut1.html
http://sapachan.blogspot.com/search/label/Learning%20OpenCV
http://www.shervinemami.co.cc/introToOpenCV.html
http://note.sonots.com/OpenCV/Install.html
Questions