A Simple, Cost-Effective Active Range Sensing System
Christopher Mack
My ongoing thesis project is designing and implementing a simple, cost-effective active range sensing system. An active range sensing system is a system which uses a camera and a light source to calculate the 3D coordinates of an object. By knowing the position of the light projector and the camera, the depth of the imaged laser light on the object can be calculated using triangulation. The main issues for the project are designing and building a cost-effective system, implementing the needed image processing and computer vision code in Java and refining the system to provide accurate results. Below is the basic setup of an active range sensing system.
Cost is a major factor in the project. Many commercially available active range sensors cost over $30,000, a goal of the project is to design a system for a much lower price. The laser projector used projects a vertical plane of red light onto the object being scanned, the simple laser level retails for thirty dollars. The camera used in the system is the Point Gray Research Scorpion IEEE 1394 fireware camera, it costs around one thousand dollars. The object being scanned is placed in a box of mirrors. Five 12"x12" mirrors are housed inside a box of particle board. The mirrors allow for the entire surface of the object to be scanned without rotating the object. The entire setup, including building supplies cost under $1500.
The majority of the programming for the project is done in Java. However, the library for controlling the IEEE 1394 firewire camera is a C++ library, so the Java Native Interface (JNI) is used to allow the camera control functions to be written in a C++ program. Once the images are captured, a few image processing steps are needed. First, a Sobel edge detector is run in the x-direction using the red component of the captured colored image. Next, a classification function is run to extract only the laser stripe from the edge image, ignoring all other edges. The last step in the laser stripe extraction is to use the boundaries of the laser stripe, which can be up to 50 pixels wide on the captured images, to create a single stripe line which will be used to calculate 3D locations.
The project will incorporate a pan-tilt unit which will be used to automatically rotate the laser projector in order to scan the entire surface of the object. The relationship of the mirrors to the object being scanned needs to be determined and understood in order to accurately triangulate the laser stripe points viewed in the mirrors. Also, the code will be integrated into a 3D rendering program in order to allow the results to be easily displayed. The goal is to finish the project in time for May 2007 graduation.