Computer Vision
            
              - Subset of AI
              
 - Concerned with problems that involve visual perception
 
              - Well-known accomplishments:
                
                  - Face detection
 
                  - Kinect
 
                  - Eye/Fingerprint Identification
 
                  - OCR
 
                
               
            
          
          
            Levels of CV
            
              - Low-level (image processing)
 
              - Mid-level (features)
 
              - High-level (human)
 
            
          
          
            Doing CV
            
            
          
        
        
          
            
            
              - Open Source
 
              - High-level
 
              - Multi-paradigm
 
              - Extensible
 
              - Library-rich
 
            
          
          
            
            SciPy/NumPy
            
              - General scientific and numeric computing libraries
 
              - Supplies algorithms and datatypes for most Python CV libraries
 
            
          
          
            
            scikit-image
            
              - In the family
              of scikits,
              analogous to Matlab toolboxes
 
              - Similar to Matlab's image processing toolbox
 
              - Focuses on image processing and mid-level vision
 
              - Useful for
                
                  - Morphological operations
 
                  - Edge/corner detection
 
                  - Image filtering
 
                  - Segmentation
 
                
               
            
          
          
            
            
              - Similar to Matlab's Machine Learning toolbox
 
              - Contains well-known classifiers, clustering, metrics, etc. 
 
              - Useful for many vision applications where
              relationships between features aren't
              well-established
 
              - Useful for
                
                  - OCR
                  
 - Object detection
 
                  - Object identification
 
                  - Image matching
 
                
               
            
          
          
            
            
              - Originally an Intel project launched in 1999
 
              - Now run by non-profit OpenCV.org
 
              - C/C++ interface with some Python bindings
 
              - Geared toward high-level CV
 
              - Useful for 
                
                  - Face recognition
 
                  - Motion tracking
 
                  - Some learning algorithms
 
                  - Robotics
 
              
               
            
          
          
            Others
            
              - Scikit-learn:
              Machine learning
 
              - SimpleCV:
              Companion to Practical Computer Vision book 
 
              - pymorph / mahotas: extensive morphological algorithm support
 
            
          
        
        
        
          Basics
          
            - Loading images
 
            - Numpy matrix operations
 
            - Viewing images
 
          
        
        
          Edge Detection
          
            - Concerned with identifying strong edges in an image
 
            - Useful for identifying
                - dominant directions
 
                - horizon lines
 
                - general shape
 
              
             
          
        
        
          Morphological Operations
          
            - Based
            on mathematical
            morphology
 
            - Typically use a special "structuring element" shape
 
            - Useful for a variety of basic image processing
 
            - Typically fast enough for real-time use
 
          
        
        
          Learning
          
            - ML Classifier: consume a lot of data points in
              training
 
            - Classify new data by matching it to
              what was learned during training
 
            - When in doubt, use a Support Vector
            Machine
 
          
        
        
          Face Detection
          
            - Built into OpenCV
 
            - One technique uses HAAR Cascade
              
                - Based on HAAR wavelets
 
                - Introduced by Alfréd Haar in 1909
 
              
             
            - Uses integral images: fast
 
            - HAAR features arranged into relationships (eyes in
            relation to nose, in relation to mouth, in relation
            to...)
 
            - Requires a trained "cascade" for classification
 
            - Many trained
            cascades available
            for face detection
 
          
        
        
          Gotchas
          
            - Types: uint vs float
 
            - Library glue
            
 - Installation
 
            - Robustness
 
            - Algorithm complexity