Cover
Copyright
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Table of Contents
Preface
Chapter 1:
Cartoonifier and Skin Changer for Android
Accessing the webcam
Main camera processing loop for a desktop app
Generating a black-and-white sketch
Generating a color painting and a cartoon
Generating an "evil" mode using edge filters
Generating an "alien" mode using skin detection
Skin-detection algorithm
Showing the user where to put their face
Implementation of the skin-color changer
Porting from desktop to Android
Setting up an Android project that uses OpenCV
Color formats used for image processing on Android
Input color format from the camera
Output color format for display
Adding the cartoonifier code to the Android NDK app
Reviewing the Android app
Cartoonifying the image when the user taps the screen
Saving the image to a file and to the Android picture gallery
Showing an Android notification message about a saved image
Changing cartoon modes through the Android menu bar
Reducing the random pepper noise from the sketch image
Showing the FPS of the app
Using a different camera resolution
Customizing the app
Summary
Chapter 2:
Marker-based Augmented Reality on iPhone or iPad
Creating an iOS project that uses OpenCV
Adding OpenCV framework
Including OpenCV headers
Application architecture
Marker detection
Marker identification
Grayscale conversion
Image binarization
Contours detection
Candidates search
Marker code recognition
Reading marker code
Marker location refinement
Placing a marker in 3D
Camera calibration
Marker pose estimation
Rendering the 3D virtual object
Creating the OpenGL rendering layer
Rendering an AR scene
Summary
References
Chapter 3:
Marker-less
Augmented Reality
Marker-based versus marker-less AR
Using feature descriptors to find an arbitrary image on video
Feature extraction
Definition of a pattern object
Matching of feature points
PatternDetector.cpp
Outlier removal
Cross-match filter
Ratio test
Homography estimation
Homography refinement
Putting it all together
Pattern pose estimation
PatternDetector.cpp
Obtaining the camera-intrinsic matrix
Pattern.cpp
Application infrastructure
ARPipeline.hpp
ARPipeline.cpp
Enabling support for 3D visualization in OpenCV
Creating OpenGL windows using OpenCV
Video capture using OpenCV
Rendering augmented reality
ARDrawingContext.hpp
ARDrawingContext.cpp
Demonstration
main.cpp
Summary
References
Chapter 4:
Exploring Structure from Motion Using OpenCV
Structure from Motion concepts
Estimating the camera motion from a pair of images
Point matching using rich feature descriptors
Point matching using optical flow
Finding camera matrices
Reconstructing the scene
Reconstruction from many views
Refinement of the reconstruction
Visualizing 3D point clouds with PCL
Using the example code
Summary
References
Chapter 5:
Number Plate
Recognition Using
SVM and Neural Networks
Introduction to ANPR
ANPR algorithm
Plate detection
Segmentation
Classification
Plate recognition
OCR segmentation
Feature extraction
OCR classification
Evaluation
Summary
Chapter 6:
Non-rigid Face Tracking
Overview
Utilities
Object-oriented design
Data collection: Image and video annotation
Training data types
Annotation tool
Pre-annotated data (The MUCT dataset)
Geometrical constraints
Procrustes analysis
Linear shape models
A combined local-global representation
Training and visualization
Facial feature-detectors
Correlation-based patch models
Learning discriminative patch models
Generative versus discriminative patch models
Accounting for global geometric transformations
Training and visualization
Face detection and initialization
Face tracking
Face tracker implementation
Training and visualization
Generic versus person-specific models
Summary
References
Chapter 7:
3D Head Pose Estimation Using AAM and POSIT
Active Appearance Models overview
Active Shape Models
Getting the feel of PCA
Triangulation
Triangle texture warping
Model Instantiation – playing with the Active Appearance Model
AAM search and fitting
POSIT
Diving into POSIT
POSIT and head model
Tracking from webcam or video file
Summary
References
Chapter 8:
Face Recognition using Eigenfaces or Fisherfaces
Introduction to face recognition and face detection
Step 1: Face detection
Implementing face detection using OpenCV
Loading a Haar or LBP detector for object or face detection
Accessing the webcam
Detecting an object using the Haar or LBP Classifier
Detecting the face
Step 2: Face preprocessing
Eye detection
Eye search regions
Step 3: Collecting faces and learning from them
Collecting preprocessed faces for training
Training the face recognition system from collected faces
Viewing the learned knowledge
Average face
Eigenvalues, Eigenfaces, and Fisherfaces
Step 4: Face recognition
Face identification: Recognizing people from their face
Face verification: Validating that it is the claimed person
Finishing touches: Saving and loading files
Finishing touches: Making a nice and interactive GUI
Drawing the GUI elements
Checking and handling mouse clicks
Summary
References
Index