Visualization and Graphics > Interaction > Dept ICS > Faculty of Science > UU

https://alex.telea.info/Site/TopBar

Additional material

This page lists pointers to additional material that complements the slides, recommended textbooks, and readings. The goal of this additional material is to help participants

  • understand in more details the theory and techniques discussed during the lectures
  • get more details about methods and techniques, e.g., implementation and "how to use" tips
  • use implementations of methods and techniques discussed in the course
  • customize existing technique implementations or build one's own

Important: Scan the entire list of resources below before digging deep into (and starting to use) one specific tool or library! There is overlap between the functionality of different tools. Hence, finding the best depends on checking them all against your specific requirements and constraints.

Datasets

Princeton Shape Benchmark

This is one of the best-known 3D shape benchmarks used in vision, graphics, shape processing, and and shape retrieval. It contains about 1800 models distributed in 19 classes (finer-grained subclasses are also available). The link also contains sample C code for

  • reading, writing and manipulating the shapes
  • visualizing the shapes
  • evaluating retrieval tasks and plotting retrieval quality metrics
  • building a minimalistic shape retrieval application

Labeled PSB Dataset

This is a benchmark of 380 meshes from 19 shape classes from the Princeton Shape Benchmark. Meshes are segmented, with per-segment annotations. More interestingly, a rich set of features are also provided for these meshes:

  • curvature (64 features)
  • PCA components (48 features)
  • geodesic shape contexts (270 features)
  • geodesic distance features (15 features)
  • shape diameter (72 features)
  • distance from medial surface (24 features)
  • spin images (100 features)

The link also contains C++ and Matlab code for manipulating the above data and computing shape features.

Software, demos, and tutorials

1. Data representation and processing

OpenGL crash course

If you're not sure about your OpenGL skills, this mini-tutorial (with source code) should help you creating your first minimal 3D viewer.

Reading image data in OpenGL

Download this simple OpenGL program that shows how to read the contents of the current window (which renders a 3D shape) into a PGM image file. Useful for the assignment step 3.2 variant B.

3D meshes

Minimal sample code for all mesh types, including reading PLY files. Unstructured meshes are especially interesting to study.

GeomView tool

The best tool for interactive 3D mesh processing out there! Reads/writes most 3D mesh formats. Implements operations such as mesh refinement, simplification, cleaning, normal computation, smoothing, and computing statistics. Highly recommended to quickly inspect (and possibly fix) your 3D meshes!

Polygon Mesh Processing library

PMP is an excellent, generic, C++ library for 3D mesh processing. It supports mesh importing (various formats), remeshing, cleaning, smoothing, curvature computation, and interactive visualization. A good catch-all for your entire infrastructure!

OFF mesh tools

Handy collection of command-line tools to process meshes in OFF file format (Java, source code included). Operations supported: mesh refinement, merging close vertices, reducing all faces to triangles).

Triangle mesh tools

Another handy collection of command-line tools to process meshes in PLY, OFF, OBJ formats (C++, source code included). Implements mesh viewing, format conversion, alignment, cleaning, and decimation.

2. Feature extraction

2D Skeletonization

Probably the easiest-to-use algorithm to compute pixel-exact Euclidean skeletons of 2D binary shapes (C++ source code). This method can process images up to 1000x1000 pixels in roughly a second on a modern CPU.

A GPU implementation of a similar method (requires an NVidia graphics card), which runs about 50 times faster, is available here.

Curvature computation of 3D surfaces

Sample code (C++) for computing and visualizing the curvature tensor for a 3D meshed surface using PCA.

3. Scalability

t-SNE toolkit

The original t-SNE implementation (in many programming languages), written and documented by its author.

t-SNE explained

A very readable blog walking you step-by-step through the entire t-SNE theory and how to implement it!

How to use t-SNE effectively

A simple interactive webpage to try out t-SNE with various parameters and understanding its perplexity parameter setting.

Autoencoders tutorial

A very readable but comprehensive tutorial on autoencoders, including Python source code.

Approximate Nearest Neighbors (ANN)

A complete, easy-to-use, C++ library for performing nearest neighbors search in n dimensions.

Articles