Spin Image Correlation
Steven M. Kropac
Stevens Institute of Technology
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).
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:
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
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:
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.
The SpinDetect application is based on the concepts developed in the following papers: