Computer Vision Technology. Dave Bolme and Steve O Hara

Similar documents
Using MATLAB to Measure the Diameter of an Object within an Image

Applying Deep Learning to Car Data Logging (CDL) and Driver Assessor (DA) October 22-Oct-15

GStreamer for Engineering Video. Night Vision. Joshua M. Doe, Stephen D. Burks

:Introducing Star-P. The Open Platform for Parallel Application Development. Yoel Jacobsen E&M Computing LTD

MACHINE LEARNING IN HIGH ENERGY PHYSICS

Solving Big Data Problems in Computer Vision with MATLAB Loren Shure

Monitis Project Proposals for AUA. September 2014, Yerevan, Armenia

Rapid Application Development for Machine Vision A New Approach

CE 504 Computational Hydrology Computational Environments and Tools Fritz R. Fiedler

Programming Languages & Tools

Android and OpenCV Tutorial

How To Train A Face Recognition In Python And Opencv

PyCompArch: Python-Based Modules for Exploring Computer Architecture Concepts

Automatic License Plate Recognition using Python and OpenCV

How To Program With Adaptive Vision Studio

VSSN 06 Algorithm Competition

What is a programming language?

High-Level Synthesis for FPGA Designs

Evolution of the Major Programming Languages

Introduction to MATLAB for Data Analysis and Visualization

Data Analysis with MATLAB The MathWorks, Inc. 1

Lazy OpenCV installation and use with Visual Studio

Main Bullet #1 Main Bullet #2 Main Bullet #3

Navigation Aid And Label Reading With Voice Communication For Visually Impaired People

USE OF PYTHON AS A SATELLITE OPERATIONS AND TESTING AUTOMATION LANGUAGE

Analysis Tools and Libraries for BigData

Scientific Programming in Python

PyCompArch: Python-Based Modules for Exploring Computer Architecture Concepts

OPC COMMUNICATION IN REAL TIME

Introduction to Python

Matlab on a Supercomputer

CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014

Intelligent Heuristic Construction with Active Learning

Introduction to MATLAB Gergely Somlay Application Engineer

Python Programming: An Introduction to Computer Science

1 Topic. 2 Scilab. 2.1 What is Scilab?

Medical Image Processing on the GPU. Past, Present and Future. Anders Eklund, PhD Virginia Tech Carilion Research Institute

CS 40 Computing for the Web

Outline. High Performance Computing (HPC) Big Data meets HPC. Case Studies: Some facts about Big Data Technologies HPC and Big Data converging

Intro to scientific programming (with Python) Pietro Berkes, Brandeis University

OpenCV Tutorial. Part I Using OpenCV with Microsoft Visual Studio.net November Gavin S Page gsp8334@cs.rit.edu

Applications to Computational Financial and GPU Computing. May 16th. Dr. Daniel Egloff

Chapter 1. Dr. Chris Irwin Davis Phone: (972) Office: ECSS CS-4337 Organization of Programming Languages

Mouse Control using a Web Camera based on Colour Detection

Advanced analytics at your hands

Intel Application Software Development Tool Suite 2.2 for Intel Atom processor. In-Depth

Using WestGrid. Patrick Mann, Manager, Technical Operations Jan.15, 2014

Chapter 13: Program Development and Programming Languages

Semester Review. CSC 301, Fall 2015

Writing Applications for the GPU Using the RapidMind Development Platform

Why (and Why Not) to Use Fortran

Session 15 OF, Unpacking the Actuary's Technical Toolkit. Moderator: Albert Jeffrey Moore, ASA, MAAA

Creating Dynamics User Model Dynamic Linked Library (DLL) for Various PSS E Versions

Scientific Programming, Analysis, and Visualization with Python. Mteor 227 Fall 2015

Efficiency Considerations of PERL and Python in Distributed Processing

An Introduction to High Performance Computing in the Department

Software support for economic research at CNB

Graphical Environment Tool for Development versus Non Graphical Development Tool

1/20/2016 INTRODUCTION


APPLICATIONS OF LINUX-BASED QT-CUDA PARALLEL ARCHITECTURE

Beyond THE Blinky LED: Voice recognition, Face recognition and cloud connectivity for IOT Edge devices

Effective Java Programming. efficient software development

2015 The MathWorks, Inc. 1

Search Taxonomy. Web Search. Search Engine Optimization. Information Retrieval

OpenACC 2.0 and the PGI Accelerator Compilers

CS 253: Intro to Systems Programming

Structural Health Monitoring Tools (SHMTools)

Efficiency of Web Based SAX XML Distributed Processing

Industrial Adoption of Automatically Extracted GUI Models for Testing

CSC 551: Web Programming. Spring 2004

Speed Performance Improvement of Vehicle Blob Tracking System

Parallel Computing with Mathematica UVACSE Short Course

Overview of HPC Resources at Vanderbilt

COS 333: Advanced Programming Techniques

HPC Wales Skills Academy Course Catalogue 2015

Levels of Programming Languages. Gerald Penn CSC 324

Analecta Vol. 8, No. 2 ISSN

Face Recognition in Low-resolution Images by Using Local Zernike Moments

Product Development Flow Including Model- Based Design and System-Level Functional Verification

System Structures. Services Interface Structure

GUI and Web Programming

Exploring Algorithms with Python

Performance Analysis and Optimization Tool

DAQ in MATLAB HANS-PETTER HALVORSEN,

Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages

Matrox Imaging White Paper

Peach Fuzzer Platform

1. Overview of the Java Language

Python for Scientific Computing.

Octave and Python: High-Level Scripting Languages Productivity and Performance Evaluation

Transcription:

Computer Vision Technology Dave Bolme and Steve O Hara

Today we ll discuss... The OpenCV Computer Vision Library Python scripting for Computer Vision Python OpenCV bindings SciPy / Matlab-like Python capabilities Dave s very own PyVision library Matlab Image Processing Toolkit R biops package Others Matrox Imaging Library (MIL) ITK

OpenCV

OpenCV C Library Cross-platform Major Components Underlying Matrix Operations / Structures Computer Vision Lib High GUI Library Machine Learning Well supported, many examples in code OpenCV facedetect.exe sample

Sample OpenCV Code... void detect_and_draw_objects( IplImage* image, CvHaarClassifierCascade* cascade, int do_pyramids ) { IplImage* small_image = image; CvMemStorage* storage = cvcreatememstorage(0); CvSeq* faces; int i, scale = 1; High-level functions /* if the flag is specified, down-scale the input image to get a performance boost w/o loosing quality (perhaps) */ if( do_pyramids ) { small_image = cvcreateimage( cvsize(image->width/2,image->height/2), IPL_DEPTH_8U, 3 ); cvpyrdown( image, small_image, CV_GAUSSIAN_5x5 ); scale = 2; } /* use the fastest variant */ faces = cvhaardetectobjects( small_image, cascade, storage, 1.2, 2, CV_HAAR_DO_CANNY_PRUNING ); /* draw all the rectangles */ for( i = 0; i < faces->total; i++ ) { /* extract the rectanlges only */ CvRect face_rect = *(CvRect*)cvGetSeqElem( faces, i, 0 ); cvrectangle( image, cvpoint(face_rect.x*scale,face_rect.y*scale), cvpoint((face_rect.x+face_rect.width)*scale, (face_rect.y+face_rect.height)*scale), CV_RGB(255,0,0), 3 ); } if( small_image!= image ) cvreleaseimage( &small_image ); cvreleasememstorage( &storage ); } Drawing functions Explicit memory handling

Demonstration of some OpenCV Sample Programs included with Library.

Pros/Cons on OpenCV Pros: Performance / Compiled Code vs. Scripting Also note: Intel Performance Primitives, OpenCV on the Cell, other acceleration options Windows, Linux, MacOS Well supported, Yahoo group, tutorials, etc. Extensive library with broad applicability. Cons: All the normal stuff about coding in C, tracking down memory leaks, etc.

MatLab / Octave

MatLab Overview Used for many research projects. Open Source MatLab functions are available for many of the most important algorithms. See MATLAB Central File Exchange Easy to learn and use. Integrated plotting and visualization. Toolboxes for many common problems.

Matlab / Octive Pros Great prototyping / research language. Built in visualization tools. Has toolkits for computer vision. Good support and documentation. Cons Cost: $99 (Student) / $$$$$ (Other). May be much slower than C for some code. Poor general purpose language. Cannot build systems.

Python/PyVision

Python Very popular language for every thing. Increasingly popular for Machine Learning and Computer Vision. Matlab like syntax and numeric library (scipy) which includes much of the image processing toolkit and visualization tools. Full featured image library. Bindings to most open source Computer Vision and Machine Learning libraries.

PyVision Provides a conversion and simple interface to scipy and other python vision and ML libraries. Reads most image formats, videos, and webcams. Support for multiple image formats: PIL, opencv, scipy. Interfaces to PIL, scipy, opencv, libsvm. Image annotation, data logging, and statistical analysis. Basic CV support: Affine Transforms, Points, Rects, Normalization,... Face recognition algorithms.

Demonstration of some PyVision Capabilities

Pros/Cons on Python Approaches Pros Flexible, general-purpose, object-oriented scripting language Much faster for prototyping and experimentation Lots of other Python libraries Cons Less control over memory allocation May runs slower than a comparable C program. Not quite as easy as MatLab

R

R + biops Package R is an open source project for statistical computing. The biops package provides some image processing capabilities. Steve O Hara has used R + biops to train a blob classifier for surveillance-style IR imagery using Quadratic Discriminant Analysis.

Pros/Cons on Using R Pros If your work is statistics-heavy Nice output (plotting) Cons Available image/vision libraries are limited, so you ll be rolling-your-own for many things. No direct capture from video sources, AVIs, etc. Drawing images is slow...so trying to show results on video requires patience.

Other Libraries

Brief Mention of Other Libraries Matrox Imaging Library (MIL) Commercial/Industrial Package Focus on Machine Vision and Hardware Acceleration GPU s, FPGA s, custom image acquisition hardware... Not cheap. Yui Man has previous experience with MIL. Image Tool Kit (ITK) Very popular for medical imaging. Segmentation and registration. Open source (with python bindings)

Any Others?