Vision and Mobile Robotics Laboratory | Software
Home | Members | Projects | Publications | Software | Videos Internal

RecognizeMesh

Description

RecognizeMesh is a program for recognizing multiple models represented as surface meshes in a scene represented as a surface mesh. Before using RecognizeMesh, the library of objects to be recognized must be built and then described using a library file. (.lf) The procedure for building object libraries a and making library files is explained in the tutorial on Library Building. After running RecognizeMesh, the recognized models are displayed superimposed on the scene data in a 3-D viewer. The theory behind this program is presented in the Ph.D. dissertation Spin-Images: A Representation for 3-D Surface Matching and the paper Object Recognition by Matching Oriented Points appearing in CVPR '97.

Recognize mesh is input a library file describing the location and parameters of the library used in recognition, a scene mesh, and the type of matching algorithm to use. RecognizeMesh can be run using the four matching algorithms described in the above dissertation: no compression, model compression, library compression and combination model and library compression. After surface matching, RecognizeMesh displays a 3-D viewer with the recognized models from the library superimposed on the scene data. Options can be specified to save the recognition result in which case a recognition file (.rf) describing the recognized models and their locations is output. This file can be read by DisplayRecognition which will show the recognized models superimposed on the scene data.

RecognizeMesh uses surface normals to align surfaces; normals for surfaces being aligned must be oriented in the same direction. Having normals oriented in the opposite directions is a common mistake when using SpinRecognize. By default the normals on a surface mesh are oriented to point away from the centroid of the mesh. Sometimes this is not the desired behavior, especially when a data set comes from a single range view of a scene. Command line options (detailed below) can be used to orient normals so that they always point toward the sensor origin. The program ShowNormals can be used to display the surface normals generated for a surface mesh.

Files

main.c contains the main controlling function for multi-object recognition using spin-images. This file parses the library files.

scene.c contains the functions for manipulating scene data.

library.c contains the control functions for the four matching algorithms. These functions establish correspondences between scene data and model points.

register.c contains the functions that take model/scene point correspondences and produce disjoint model/scene surface matches.

Usage

By typing 'RecognizeMesh -' the following options (format description default) are printed:

Usage: RecognizeMesh (See RecognizeMesh.html for complete usage)

Detailed Usage

%S library filename [required]

%S scene prefix [required]

%S matching algorithm [required] (MA1,MA2,MA3,MA4,MA5)

-restrict %F %F %F %F %F %F %F %F %F %F %F %F rough limits on the transformation between views

-sOrig %F %F %F sensor origin [-100 -100 100]

-epsMod %F model search distance [1.00]

-epsLib %F library search distance [1.00]

-selectF %F fraction of scene points searched [1.0]

-flatF %F flatness filter [1.0]

-saveResult %S save result in files with this prefix

-salT %F saliency threshold [1.0]

-noDisplay turn off the display

-simT %F filter correspondences on similarity measure [0.5]

-trueIDs %S true scene ids

-write write new vector arrays

-displayPoints display which points were picked

-corrThresh %F correlation threshold

    This parameter controls how high the similarity measure between a model point's spin image and a scene point's spin image must be in order for the two points to be in correspondence with each other. Like the -simT parameter, this controls how many correspondences between model and scene are kept. The difference is that -simT is a relative measure which states that a correspondence should be kept if the similarity measure is greater than some percentage of the maximum similarity, while -corrThresh states that a correspondence should be kept if its similarity measure is greater than some absolute number. This acts as another way to fine-tune how many correspondences are "weeded out" based on the similarity measure.

-seed %d random number seed for picking initial points

    This option defines the random number generation seed. Change this option each time a new random selection of scene points is desired.

-hashed use fast spin-image-making data structure

    Stores vertices of the meshes in a hash table for speeding up spin-image generation. Only the vertices in the neighborhood of the query point can possibly fall within the spin-image's region of influence, so it is not necessary to iterate over all vertices.

-abBounds %F %F %F %F bounds on alpha,beta

    Sets the size of the spin-image's region of influence. The order of parameters is alpha min, alpha max, beta min, beta max. Alpha is the dimension in the radial direction (along the surface tangent), and beta is the dimension along the surface normal axis. For example, to create a spin image with radius 200 and height 100, use -abBounds 0 200 -50 50. Typically, spin-image radius and height are chosen to be equal.

-nn %d number of neighbors for weighting

    This option is used with the MA5 algorithm. To classify a new scene point, we check the distance between its spin image and the spin images of k<\em> nearest neighbor spin images from previous scenes. This parameter sets k<\em>.

Examples

To run the recognition with a library called duckie20Lib on scene092 using model compression (MA2) use

    RecognizeMesh duckie20Lib.lf ~/sai1/scene/scene092 MA2

To run the same recognition using library compression (MA4) and save the result in scene092.duckie20Lib.MA4 use

    RecognizeMesh duckie20Lib.lf ~/sai1/scene/scene092 MA4 -saveResult scene092.duckie20Lib.MA4

To run the same recognition as above, but with a larger library closest point search thresholdand without the display use

    RecognizeMesh duckie20Lib.lf ~/sai1/scene/scene092 MA4 -saveResult scene092.duckie20Lib.MA4-epsLib 1.5 -noDisplay

up


The VMR Lab is part of the Vision and Autonomous Systems Center within the Robotics Institute in the School of Computer Science, Carnegie Mellon University.