OpenCV Workshop
|
[[People::User:Utopiah| ]]
We all have tons of pictures, hours of videos and we all skim over them from time to time. Why not play with them? Why not use algorithms to modify, analyze or just mess around with large quantity of them? OpenCV is a framework started about 10 years dedicated to do just that.
The workshop is dedicated to have hands on experience with it so bring your laptop with a camera and your pictures. If you want to understand a bit more why Numb3rs and other detective series make no sense when they "unblur" pictures or you want to offer your pet robot vision, come!
PS: la page est en anglais mais l'atelier sera aussi en français si besoin est.
Contents
Goals
- discover what computer vision is
- have hands-on experience with the OpenCV framework
- be creative with code, images and videos
Planning
- an hour to generally understand the basics via some introductory slides
- vision
- computer vision
- data structure
- key functions
- possibilities
- limits
- some minutes to pick up a project and form groups with at least 1 programmer per group
- few hours to hack your way through your project, ask questions, peep around
- last 30min to showcase your barely finished project around and get feedback
- finish-time extra-time to debate about the future of computer vision and its economical impact (beers required)
Attendees
Name | Level | Project | Hardware |
---|---|---|---|
Utopiah | did my own toy program with OpenCV | organizing and helping around + setting up an HSBXL frpc | laptop (with Debian) + normal webcam |
ptr_ | did some projects with OpenCV the last years | organizing and helping around + solderstation 2.0 (UI, auto-rotating imgs, auto-stitching ?) | laptop (with Debian) + quadcore pc (ubuntu) + webcam + cctv framegrabber card (bt8x8) + firewire camera IIDC |
U_go | played a bit with OpenCV | it's fun with openFrameworks | laptop (with OSX and Linux) + webcam PS3 + OpenCV book |
Seb | Zero or below :) | frpc, LIDAR, stereo vision, whatever | netbook (Ubuntu) + webcam |
juliane | never used opencv | just to understand image recognition better & connect with AI, so hanging around Friday | netbook (debian) with cheap webcam |
Few others came without being present in this list.
Prerequisites
- 1 computer
- Python or a C++ compiler installed and working*
- OpenCV installed (basically
sudo apt-get install python-opencv
should do) and working*- the examples from the documentation must run
- ideas of pet project (see further)
- knowing how to code or having a geek slave
- 1 brain
* Remarks on installation : It is simple but it requires some time and is different for every computer, distribution and vision hardware. Since there is very little to learn here it is best if everybody does that part individually. If you still have a problem doing so, feel free to ask on IRC or the mailing list before the event.
Optional but recommended
- 1 webcam or a camera, even cheap ones
- a set of pictures of something or someone you want to train on
- an Android device (requires lots of work, cf doc)
- basics of geometry
- rough idea of what machine learning is
- ImageMagick convert command-line tool to easily resize or modify tons of images
Ideas of pet projects
Description | Time expected* | Resources | OpenCV related functions | Interested participants |
---|---|---|---|---|
sort galleries of pictures by resemblance | 2 | CreateHist | ||
search collection of images for the same kind | 2 | Seeks | CreateHist | |
detect faces | 1 | Facebook internally uses OpenCV | HaarDetectObjects | |
track faces | 2 | HaarDetectObjects GoodFeaturesToTrack | ||
move a robot to follow his owner | 6 | cf ROS also by WillowGarage or more simply arduino servo library | HaarDetectObjects GoodFeaturesToTrack | |
detect a person within a collection of known faces | 4 | frpc pam-face-authentication | HaarDetectObjects GoodFeaturesToTrack CreateHist | |
finding ways not to have a face recognized | 4 | CV Dazzle | HaarDetectObjects CreateHist | |
decode the color bands on a resistor | 4 | redec | PreCornerDetect | |
virtual make up or obfuscation | 2 | augmented reality, e.g. SimplAR | ||
gesture interface, dance to code | 4 | e.g. with touchtable, laser, Kinect or just a redglove then Motion Analysis and Object Tracking or OpenTLD | Acc | |
dating scene crawler, possibly relying on the picture library resemblance project | 6 | HaarDetectObjects CreateHist | ||
distance mirror, how unlike yesterday one looks | 2 | HaarDetectObjects CreateHist | ||
bring SolderStation to the next level: automagic stitching of pictures you take of a PCB, laser pointing to a selected element, ... | 4 | video panorama stitching with stabilizing homography estimation Wikipedia:Image registration | FindHomography | ptr_ |
use satellite imagery to find paths, estimate yield, ... | 4 | Orfeo | icvCreateIntHaarFeatures | |
use medical images, e.g. CAT scan, fMRI, ... to recognize specific patterns | 4 | INRIA related research | icvCreateIntHaarFeatures |
* This is a completely relative value and often a wild guess. The time would be for somebody moderately familiar with OpenCV and very familiar with a programming language. The precision would be rather low, a proof of concept rather than a 100% hit rate which would instead required considerable time, if even possible. If you are a pro multiply by a factor of 0.5 if you are a total beginning by a factor of 4.
Note that some projects might require much longer than few hours to program but also to train the dataset on. Consequently this could still be started but could also be prepared ahead of the workshop.
Supporting tools
The goal is to give a boost to newcomers.
- blending documentation and code snippet search
- e.g. with Vimperator
map \¬ :js<Space>liberator.open("http://www.google.com/codesearch#search/&q="+buffer.getCurrentWord(),liberator.NEW_TAB);<Return><Space>
allows to search Google Code Search for a selected keyword likecvCornerEigenValsAndVecs
- eventually transform to a userscript (Greasemonkey for Firfox) and provide a dedicated full-text search index like Sphinx loaded with code snippets
- e.g. with Vimperator
- list the most used functions and link back to the documentation
- can start with the examples for each language, e.g. with Python
- translation guide from day to day need to function name
- from "I want it to spot faces" to
HaarDetectObjects
- from "I want it to turn my picture" to
rotateImage
- ... (with documentation link)
- from "I want it to spot faces" to
- images repositories
- http://www.image-net.org
- http://vision.stanford.edu/resources_links.html#datasets
- http://www.springerimages.com
- http://www.cs.cmu.edu/~cil/v-images.html
- http://sonet.nottingham.ac.uk/resources/image_repositories.html
- http://fabien.benetou.fr/Bypassing/Identification#ReverseImageSearch
- http://www.openaerialmap.org
- Q&A
Previous workshops
- Introduction to computer vision with Open CV, February 2011 @ foulab.org
- Baltan_opencv_workshop, 2009 @ Piksel
- Computer Vision Workshop - Real-Time Traffic Camera Analysis, September 2011 @ Tel Aviv University
References
- Learning OpenCV, O'Reilly 2008 (present in HSBXL Books library)
- http://fabien.benetou.fr/Tools/OpenCV
- IRC channel #OpenCV on freenode
- OpenCV by Gary Bradski, ICML 2010
- C++ Cheatsheet
- Cookbook, a collection of code fragments demonstrating some features of the OpenCV Python bindings
- http://www.quora.com/OpenCV
- haartraining - computational complexity on OpenCV mailing list
- Image Processing and Computer Vision (Nov 28) of Stanford AI-Class
- Ben Chu's Project Cyclops
- 5: Computer vision with opencv with Gary Bradski, Hacker Medley 2010
- mathematics of computer vision
- Peter's Functions for Computer Vision, University of Western Australia
- CVonline: Vision Geometry and Mathematics by Robert Fisher, University of Edinburgh
- Noah Kuntz's Tutorials, 2008-2099 based on Learning OpenCV - Computer Vision with the OpenCV Library by Gary Bradski and Adrian Kaehler
- OpenCV related posts on The Glowing Python, A python snippet almanac about basic of the language and scientific computing
- Embedded Computer Vision on OMAP with OpenCV, ETH PIXHAWK: MAV Computer Vision Wiki
- motivated by PandaboardForOpenCV availability
- Detourning CCTV for the internet, OpenCV by jilt, SIGINT 2010
- http://code.google.com/p/pyopencv/
- http://opencv.willowgarage.com/wiki/OpenCV_GPU
- The Haar Wavelet by v.M.Gadre, IIT Bombay October 2011
- Haar-like feature object detection, April 2011
- cvEyes