CS 6825 Computer Vision
Catalog Description:
Mathematical and algorithmic approaches to the problem
of computing properties of the 3-D world from one or more digital images.
Imaging, image processing, feature detection, calibration,
stereopsis, motion, object recognition, tracking.
Prerequities: MATH 2101, MATH 2304 and CS 3240.
- Syllabus
- Reading
- Installing OpenCV from svn on Ubuntu 9.04
- If that's not working, try the Ubuntu vmware image with OpenCV installed,
available under "Cource Materials" on Blackboard.
- sample movies
- Source code for a 3D scanner using a laser level, turntable, and camera. The Makefile is for MacOS X 10.6. The scanner is int 3Dscanner.cpp and uses OpenCV. 3Dscanner.py tries to do the same thing, but suffers from bugs in the current OpenCV Python impl. The 3Dscanner program looks for a series of images "frame%d.jpg", outputs a series of thresholded images "thresh%d.jpg" and a file "points.txt" with the 3D points. The point-viewer.cpp program reads the points.txt file and displays them, using OpenGL and GLUT libraries. The "ducky" subdirectory holds a set of test images. There are a couple of example .txt point cloud files included in the top-level directory (shrek-16.txt, ducky-points.txt, LPS-points.txt). The grabframes.{py.cpp} utility uses OpenCV to capture frames: hit 'c' to capture "calib.jpg" and " " to capture scanner frames. You'll need to find the calibration target correspondences using Gimp or similar tool, and edit these into 3Dscanner.cpp. Be sure to set the angle between images as well in the source, depending on your setup. The calibration object used is a 3-ring binder with 4 or more protuding (non-collinear) pins. The pins should be placed in the plane of the laser, and be at known positions on the object. You can tape a piece of paper with marks at known locations on a 3-ring binder, push in the pins at known plane positions, and balance the binder on its spine such that the pins are in the plane of the laser. Capture an image ('c' in grabframes) and then load calib.jpg into an editor to get the images potions. NOTE: The positions need to be in "eye coordinates", so this code subtracts half the image width and height (and flips y axis) from the image coordinates. It assumes a 640x480 image. Replace "-320" with half of your image width (or get it from the image header! doh!), and "(480-y)-240" with the appropriate values for your input.
Other resources