SpecTVSurface
Nonlinear Spectral Geometry Processing via the TV Transform
This repository contains the MATLAB implementation of:
M.Fumero, M.Moeller, E.Rodolà, Nonlinear Spectral Geometry Processing via the TV Transform.
ACM Trans. Graph.39, 6, Article 199, presented at SIGGRAPH 2020.
https://dl.acm.org/doi/abs/10.1145/3414685.3417849
Structure
.
├── DATA # Directory containing input meshes
│ ├── bob.off
│ ├── garg.off
└── gui
├── startgui.m
└── meshIO
├── loadoff.m
└── meshUtilities
├── adjacency_mat.m
├── calc_LB_FEM.m
├── calc_tri_areas.m
├── compute_normals.m
├── div.m
├── edges.m
├── edges_legths.m
├── gaussian.m
├── gaussian_indicator.m
├── grad.m
├── gradient_edge.m
├── icosphere.m
├── lumpedAreas.m
├── total_variation.m
├── vertex2triang.m
└── vertex_from_normals.m
└── plotUtilities
├── add_lights.m
├── add_shadow.m
├── draw_shape.m
├── inset.m
├── plot_mesh.m
└── render_options.m
└── specTV
├── L2squaredProx.m
├── L2squaredProxMasked.m
├── PDHG_ACC.m
├── PDHG_ACC_n.m
├── decomposeNormals.m
└── decomposeScalar.m
└── utils
├── Pfilter.m
├── axisangle2matrix.m
├── findpeaks.m
├── normalizerow.m
├── normv.m
├── pickregion.m
├── repdiag.m
├── spdiag.m
└── timescale_iss.m
└── example.m
└── scalar_example.m
Usage
The scripts example.m
and scalar_example.m
contain minimal implementations of examples for computing the TV spectral decompositions for scalar functions and for normal vector field signals defined on surfaces, respectively.
The latter also embeds an interactive GUI that you can play with to apply filters in the TV spectral domain.
GUI usage
Below you can find an example of computing a localized low pass filter on the wing of the gargoyle model, using the GUI:
guiex.mp4
Cite
If you make use of this code in your own work, please cite our paper:
@article{10.1145/3414685.3417849,
author = {Fumero, Marco and M\"{o}ller, Michael and Rodol\`{a}, Emanuele},
title = {Nonlinear Spectral Geometry Processing via the TV Transform},
year = {2020},
issue_date = {December 2020},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {39},
number = {6},
issn = {0730-0301},
url = {https://doi.org/10.1145/3414685.3417849},
doi = {10.1145/3414685.3417849},
journal = {ACM Trans. Graph.},
month = nov,
articleno = {199},
numpages = {16},
keywords = {spectral geometry, total variation}
}