Thursday, September 17, 2009

What can a Webcam do?

What can a Webcam do?
--Machine Vision Around you

Liming Hu (dawninghu@gmail.com)

A webcam normally uses a USB or IEEE1394 interface. A webcam is cheap and low-cost.

1. Face detection, eye detection, blink detection, color tracking.
(Machine perception Toolbox )
video conference auto focus, head tracking.

2. Barcode scanner/reader.
(Zebra barcode reader, linux version , It can read EAN, UPC, Code 128, Code 39 barcode)
2D barcode? (i.e. QR code, datamatrix code?)

3. Home/Office Surveillance.
a. Senriska Motion detection(change detection)
b. baby monitoring (need audio system)


4. Video Conference.
(Yahoo messenger, MSN, QQ)
Background substitution

5. Stereo System (Range/depth/distance detection, obstacle detection, 3D scene reconstruction)
if we have two or more webcams
a. Estereo ( real-time disparity estimation, scene reconstruction)
b. Sentience, SurveyorSVS (A wireless stereo camera)
c. 3D Reconstruction using Stereo Vision
d. USB stereo camera, C# stereo SDK usb stereo cameras
e. tripod(tutorial )

6. Vehicle Blind spot detection?

7. OCR?
(Tesseract OCR) need high quality CCD/CMOS sensor.
http://code.google.com/p/ocropus/
http://www.cs.sfu.ca/~mori/research/gimpy/gimpy.pdf
http://caca.zoy.org/wiki/PWNtcha



8. Gesture detection
IGesture ( Java-based gesture recognition)
It probably turns a webcam into a remote controller, i.e.
presentation turn up and turn down.

9. IRIS recognition? (less likely)

10. Fingerprint recognition (useless, also less likely)

11. Webcam Based DIY Laser Rangefinder

12. 3D photography (David 3D Scanner )

Programming Skills

Programming Skills

TIOBE Programming Community Index

Quick Reference Cards, Cheat Sheets, Reference Cards
(CVS, Emacs)

LINUX Administrator's Quick Reference, Linux Security Reference

C# and .NET
Introduction to C# , Advanced C#, C# for C++ developers, Core C# and .NET Quick Reference
C# Reference Sheet Basics, C# Language Reference, Introduction to Functional Programming in C#.


C++

C++ Quick Reference, STL /Generic Programming, STL Quick Reference, Boost
The C++ programming Language (Stroustrup)

C
The C Programming Language (Kernighan & Ritchie), 1998

Java
Java Programming Guide - Quick Reference, Java 5 & 6 Reference Card, Java for C++ Programmers, Eclipse


VB.NET Quick Reference

Shell Script
Bash Quick reference

Python
Learning Python, second edition, Mark Lutz & David Ascher
Python Quick Reference Card

Design Patterns
UML Quick reference, MVC patterns

Functional Programming (Haskell )

Parallel Programming (SIMD)
MMX, SSE2

Programming Books:
Programming Pearls, second edition, Jon Bentley, 2000
Design Patterns , by Gamma, Helms, Johnston, and Vlissides (known as the "Gang of Four") 2001
Code Craft by Pete Goodliffe 2007
The Practice of Programming, 1999
Writing Solid Code
Beginning Algorithms
The practice of writing excellent code
A programmer's companion to Algorithm analysis
Puzzles for programmers and pros




Web Programming

Windows programming
Win32 API programming Tutorial in C

Algorithm Design

Data Structure

Software Design


Software Testing

Unit Test tools, JUnit

DataBase

mySQL
SQL Server


A wise man learns from his mistakes; a wiser man learns from the mistakes of others.

Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.

Logic Programming: Prolog

The largest phase of the software life cycle is maintenance.

Good code stands on its own and doesn’t need to be lumbered with bureaucratic documentation processes.

Qt: is a cross-platform application development framework, widely used for the development of GUI programs.

qmake *.pro
qmake -project
qmake --version

QObject::connect(button, SIGNAL(clicked()), &app, SLOT(quit()));

MPI

Technical

Program name and line number printing

| I was wondering how to print the line you are on in a C++ program
| While I'm at it, can the name of the file and function the line is in also
+----

#include

int main()
{
cout << __FILE__ << endl;
cout << __FUNCTION__ << endl;
cout << __LINE__ << endl;
return 0;

}


FPGA

JHDL Getting Started, Manual

webpack

Reconfigurable Computing: The Theory and Practice of FPGA-Based Computation

Mono: Running *.net on multi/linux platform

Ruby

Ubuntu 8.04 Vmware Image


Web development: A popular example is the LAMP (Linux, Apache, MySQL, PHP). web services


Bug Tracking (Trac , mantis )

3d space navigator

http://www.3dconnexion.com/3dmouse/spacenavigator.php


VMWare player
Ubuntu 8.0.4
jars
normal passwd


Puzzles for Programmers and Pros

How we test software at Microsoft

Agile Project Management with Scrum