Design and implement image filters that works on desktop.
Move the desktop program to the cell phone.
Design and implement a feature detector that allows you to robustly compare images with differences in position, orientation, and illumination.
Develop and implement object detection and panorama stiching on the cell phone.
Devise and implement your own mobile vision application.
Coming Soon: Useful libraries and examples for final projects
Please, let me know if your team intends to use a certain library and needs help understanding how to use the library. I may be able to point to examples or in some cases, I might be able to construct simple examples for you. If the particular library is not available in the Maemo repositories, then I can help you build one. If you are working on the Nokia N900, then the following libraries might be very useful to you. -kmatzen
- FCam - An easy to use camera API that has been used for the other projects
- QtGui - The GUI framework used in other projects
- QtNetwork - Object oriented networking
- QtOpenGl - Verified to work on the N900. I can answer questions related to this library.
- QtXml - An XML lib that might be useful for those who are sending metadata to a server
- QtMaemo5 - Additional Maemo-only UI elements
- QtDBus - Some hardware such as the accelerometer use DBus, but I haven't verified this lib works on the N900
- Linux Sockets - Vanillia Linux sockets if you prefer
- SSH port forwarding
- sba - Levenberg-Marquardt implementation for sparse bundle adjustment
- Box2D - A physics engine that other N900 devs have used and plays well with QtGui
- OpenCV (core, aux, highgui, ml) - highgui contains some nice APIs to read from files and ml contains some common machine learning algorithms
- N900 Hardware (framebuffer, accelerometer, etc.) - The previous projects used the framebuffer API and the accelerometer uses DBus
- SIFT - There is an open source SIFT library available by Rob Hess at Oregon State that uses OpenCV
- Facebook API
- Apache - Well, not a library, but relevant Notify the course staff if you need ports 80/443 publically accessible.
- QR Code capture - The one linked here does have a C++ port
- tesseract-ocr - An open source OCR package
- Google Language API
- lib3ds - A lib for loading .3DS files
Xlib - Another option for OpenGL Use QtOpenGl if you have issues.
libclutter - Another option for OpenGL Use QtOpenGl if you have issues.
SDL + SDL-GLES - A popular option for OpenGL ES 2.0 on the N900 Use QtOpenGl if you have issues.
libssh - The servers we will provide require an ssh session to communicate with and this lib can manage the session for you It seems a lot easier if you just set up the port forwarding using ssh before you run your app. Otherwise, you have to hand all your communication over to their socket wrappers or create a non-blocking solution that redirects all incoming traffic to another local port.
Approved OpenCV functions (P2 and later)
- cvCreateImage
- cvReleaseImage
- cvCreateMat
- cvReleaseMat
- cvSaveImage
- cvLoadImage
- cvGetSize
- cvSize
- cvSmooth
- cvNamedWindow
- cvShowImage
- cvWaitKey
- cvConvertScale
- cvEigenVV
- cvSolve
- cvSplit
- cvMerge
- cvFilter2D
- cvSobel
- cvCvtColor
- cvFastArctan
- cvInvert
- cvMatMult
- Any of the FLANN code
Pictoral walkthroughs to use vmdk
VMware Player (Windows and Linux)
VMware Fusion (Mac)
VM image requires update for project 2 and later
sudo apt-get install qt-sdk gnuplot
Files for lab machines
~/.ssh/id_rsa
~/.config/Nokia/QtCreator.ini
Aliasing Resources/Explainations
10 Sept 2010 Lecture
OpenCv reference materials
Introduction to Programming With OpenCV
OpenCV Cheat Sheet
OpenCV Reference Manual