LINKS
-
This code-base implements the ECHO descriptor presented in ECHO: Extended Convolution Histogram of Orientations for Local Surface Description.
Executables: Win64
Source Code: ZIP GitHub
EXECUTABLES
- --in <input triangle mesh>
- This string is the name of the file from which the triangle mesh will be read.
The file is assumed to be in PLY format. - [--out <output spectrum file>]
- This string is the name of the file to which the computed spectrum will be written.
- [--dim <spectral dimension>]
- This integer specifies the number of eigenvalue/eigenvector pairs to be computed.
The default value for this parameter is 200. - [--off <shift offset>]
- This floating point value specifies the offset to be used in the invert-and-shift implementation computing the lower-frequency part of the spectrum.
The default value for this parameter is 100. - [--verbose]
- Enabling this flag gives the running time for computing the spectrum.
GetSpectrum: Computes the spectrum of the Laplace-Beltrami operator by solving the associated generalized eigen-system.
- --in <input triangle mesh>
- This string is the name of the file from which the triangle mesh will be read.
The file is assumed to be in PLY format. - --vertex <vertex index>]
- This integer specifies the index of the vertex at which the ECHO descriptor should be computed.
If the prescribed value is negative, the code will compute descriptors at -(vertex index) random locations and will not write out the results. - [--spec <spectral decomposition file>]
- This string is the name of the file from which the spectral decomposition of the triangle mesh will be read.
If no file specified, the code will first compute the spectral decomposition (using the lowest 200 eigenvector/eigenvalue pairs) and use that for processing. - [--out <output ECHO descriptor>]
- This string is the name of the file to which the computed ECHO descriptor will be written.
If the extension of the filename is "txt" the descriptor will be written out in ASCII format. Otherwise, the descriptor will be written out as an image. (Currently, BMP, JPEG, PNG, and PBM formats are supported.) - [--distance <distance type>]
- This integer specifies the type of distance used for computing the ECHO descriptor. Supported values are:
- 0: geodesic
- 1: biharmonic
- 2: diffusion
- 3: commute
The default value for this parameter is 1 (i.e. biharmonic). - [--diffusion <diffusion time>]
- If the diffusion distance is used as the distance, this floating point gives the diffusion time.
The default value for this parameter is 0.1. - [--tau <radius scale>]
- This floating point value defines the support radius for computing the ECHO descriptor. Specifically, string is the name of the file to which the the octree and solution coefficients are to be written. Specifically, the radius of support is defined as:
where |M| is the area of the mesh.
The default value for this parameter is 0.08. - [--hRadius <histogram radius>]
- This integer specifies the radius of the histogram used to discrtize the ECHO descriptor. (If the prescribed radius is r then the ECHO descriptor will be sampled on a (2r+1)×(2r+1) grid.
The default value for this parameter is 5. - [--resolution <output resolution>]
- This integer specifies the resolution to which the ECHO descriptor will be resampled prior to output.
If no value is specfied, the resolution of the output will match the resolution of the histogram. - [--dev <standard deviation for color mapping>]
- If the ECHO descriptor is written out as an image. If the prescribed deviation dev is negative, an ECHO value of v is computed to the color whose HSV representation is (0,0,v/(3xσ)), where σ is the standard deviation of ECHO values over the descriptor. If the prescribed deviation deviation is positiven, the HSV representation is (4π/3×dev/σ,1,v/(3×σ)).
The default value for this parameter is -1. - [--verbose]
- Enabling this flag provides a break-down of the running times for the different steps of computing the ECHO descriptor.
GetDescriptor: Computes the ECHO descriptor at the prescribed vertex.
USAGE EXAMPLES (WITH SAMPLE DATA)
GetSpectrum / GetDescriptor
For testing purposes, we provide the wolf0 model from the publicly available TOSCA dataset.The spectrum of the Laplace-Beltrami operator can be computed by calling:
% GetSpectrum --in wolf0.ply --out wolf0.spec --verbose
This will output the spectrum to the file wolf0.spec and provide the running time for computing the spectrum.A visualization of the descriptor at vertex 1000 of the mesh can be obtained by calling:
% GetDescriptor --in wolf0.ply --spec wolf0.spec --vertex 1000 --out wolf0.1000.jpeg --hRadius 10 --resolution 1024 --dev 0.005--verbose
This produces a 1024×1024 JPEG (color) image visualizing the ECHO descriptor computed over a histogram of size 21×21. Running times for the individual steps of the computation are written out to the command prompt. (Note that as the spectrum is provided as input the time for obtaining the spectrum is just the time required to read it from disk.)A more accurate break-down of run-time performance can be obtained by computing the ECHO descriptors at 10000 random positions on the mesh:
% GetDescriptor --in wolf0.ply --hRadius 10 --vertex -10000 --verbose
Since the spectrum is not provided as input, the time for obtaining the spectrum is the time required for constructing and solving the associated generalized eigenproblem.
SUPPORT
This work genersouly supported by NSF grants #0746039, #1422325, #1619050 and ONR research award #N00014-17-1-2142.