Spin Image Correlation

Steven M. Kropac

Stevens Institute of Technology

 

Overview

For this project I have implemented an application that performs spin-image correlation of vertices on a given object. Spin-image correlation, as used in this project, determines how similar spin-images from two different vertices are. As a first step in the process, the user will select a particular vertex on the object. Then, in order to match vertices, the 2-D spin image for each vertex is collected and compared to the selected vertex. Based on how similar the images are, an association is made between the two vertices. Highly correlated vertices will be colored with a brighter color (bright green). Vertices that are less correlated will be colored darker colors (dark green).

Technical Description

For this project I developed an application called SpinDetect. The SpinDetect application performs the task of spin-image correlation for different vertices on an object.

The applications inputs/outputs are as follows:

 


Figure 1: Application inputs/outputs

The Ply object input file is a relatively simple file format developed at Stanford University that is used to describe 3-D images. It contains a list of vertices and associated normal vectors for an object. The program parses the Ply object input file and utilizes OpenGL to display the 3D mesh.

 

The operational concept can be summed up in the following steps:

  1. Parse .ply input file
  2. Display the 3D mesh using OpenGL
  3. Allow the user to generate the spin images for every vertex on the mesh. Spin images are stored in an SQL database.
  4. Allow the user to select a vertex on the displayed object.
  5. The user selects a vertex on the displayed object.
  6. The application compares each spin image in the object to the spin-image associated with the selected vertex to identify surface similarities. Highly correlated vertices are colored bright green and less correlated vertices are colored dark green.

 

 

Figure 2: Spin Image Recognition application

Looking closely at the right side of the torus one can see a red selected node that is the oriented point for calculating the spin image at that point.

The spin image alpha and beta values are calculated for the pre-selected point on the object by calculating their distances to the oriented point as described in [1].

Figure 3 shows a subset of the output text file that is generated by the application. This file represents all the alpha and beta values calculated for the pre-selected point. Note that the sixth set of values in the list are (0,0). This is because that vertex is the selected point, and as a result the alpha and beta distance values are 0. Also, note that the application follows the rules defined in [1], where alpha values cannot be negative, but beta values can be positive and negative.

Figure 3: Spin image output file (alpha,beta)

The alpha, beta values are translated to bins that form a 2-D array represntation of a spin-image. The spin-images are used for comparison with other vertexes to establish a level of correlation. The application will color each vertex based on how correlated the spin image of a vertex is with the sping image of the selected vertex. Figure 4 shows a torus re-colored based on spin image correlations. Note how the spin images on the outside (where the oriented point is) is brightest green representing a high level of correlation.

 

 

Figure 4: Spin Image Correlation Operation

The following two figures display a elephant with a vertex on the back left leg selected and the subsequent spin correlation of vertices.

 

Figure 5: Original elephant.ply image

The next figure displays the elephant after spin image correlation.

 

Figure 6: elephant.ply image with spin image correlation

 

 

User Interface

The Spin Image application allows the user to rotate and zoom in/zoom out a loaded 3D model. The following keyboard commands provide this capability.

 

The application also allows the user to change the selected vertex for performing spin image correlation. The following keyboard commands provide this capability:

Conclusion / Future work

Spin images provides an interesting representation of a 3D mesh object. For my implementation of spin images, more work could be done to fully understand and try to solve the speed issues relating to creating spin images for a mesh object. Consider an example case where a 3D mesh model has 5000 vertices. To calculate all spin images for this model would require 5000 * 5000 = 25 million sets of calculations. Another area for future work would be to establish a spin image based on sets of vertices or a heirarchical build up of spin images to allow for quick comparison at higher levels and only delve into the more detailed spin images if the desired level of correlation is reached.

References

The SpinDetect application is based on the concepts developed in the following papers:

 

  1. A. Johnson and M. Hebert, “Recognizing Objects by Matching Oriented Points,” Computer Vision and Pattern Recognition 1997 (CVPR ’97),  pp.684-689
  2. A. Johnson and M. Hebert, “Using Spin Images for Efficient Object Recognition in Cluttered 3D Scenes,” IEEE Vol. 21, No. 5, May 1999
  3. A. Johnson and M. Hebert, “Surface Matching for Object Recognition in Complex 3D Scenes,” Image and Vision Computing, Summer 1998



Files:
  • Spin Image Correlation PowerPoint Presentation
  • SpinImage source code and executible