Software
Below are various software tools that I have developed. Text in brackets indicates the main programming languages used. Note that CUDA implies C++.
Important: The software provided here is only available for research purposes (see disclaimer in side bar). Prior to any commercial use, contact me.
Computes 2D Euclidean distance transforms, feature transforms, and skeletons (C++)
Computes 3D Euclidean distance transforms, feature transforms, and skeletons (C++)
Visualization of UML diagrams with code quality metrics (C++)
An enhanced (faster, more stable) version of the open-source binvox voxelizer (C/C++)
CUDA Universal Bundling framework for huge graphs (CUDA)
Computes 2D Euclidean distance transforms, feature transforms, and skeletons on the GPU (CUDA)
Computes 2D Euclidean distance transforms, feature transforms, and salience skeletons on the GPU (CUDA)
Interactive axis-based 3D rotation tool based on image skeletons (CUDA)
,
Visualize evolution of CVS and SVN software repositories (C++, C#)
Extract and visualize evolution of software clones from code repositories (C++)
DataVisualizationBook
Code samples from my data visualization book (C++, OpenGL)
DeepFA-labeling
Support manual labeling of classification training data using FastDBM (Python)
DeforestVis
Visually explore classifiers via simple AdaBoost surrogates (Python,JS)
Extract and refactor (eliminate) code clones in Visual Basic (VB)
Encode grayscale and color images using dense multiscale skeleton descriptors (CUDA)
DenseSkel Benchmark
Benchmark for using dense skeletons for image compression
Extract and visualize evolution of software dependencies in code repositories (C#)
[[https://git.science.uu.nl/vig/adversarial-dbm-tool|Differentiable DBMs]
Compute several quality metrics for decision boundary maps (DBMs) (Python)
Digitally remove hairs from dermatoscopic skin imagery (C++)
Drawing near-planar graphs
A spring-based heuristic to find and handle cluttering edges in drawing near-planar graphs (Python)
Visualize structure and metrics of software source code using cushion treemaps (C++)
Simplification of DTI tracks with trail bundling (C++)
DynProjBenchmark
Benchmark for dynamic projections of time-dependent high-dimensional data (Python)
FastDBM
Fast implementation of the (S)DBM inverse projection algorithms (Python)
GD-2D3D
Finds good viewpoints to view 3D graph drawings, as ProjCompare2D3D but for graphs (Python)
Extract call and dependency graphs form any C/C++ code base (C++)
Guided Dynamic Projections
Two new methods for projecting high-dimensional time-dependent data (Python)
IBIX
Image-based inference explainer - explaining how deep learning regressors work on images (Python)
iMDS
Simple but effective inverse projection for MDS (Python)
Kernel density based edge bundling method (CPU and CPU, C#)
Visualize dynamic memory allocations (C/C++)
Render fluids using metaballs created via surface particles (C++)
Multiphase flow simulation
Simulate multiphase fluid flow real-time using SPH methods (C++)
Invert a multidimensional projection (get nD points from 2D locations) (Python)
NNP
Deep learning multidimensional projections (Python)
NNPStability
Visualize the stability of the NNP deep-learning projection method (Python)
OptMap
Visualization of high-dimensional optimization methods (Python)
ProjCompare2D3D
Comparing the quality of 2D and 3D projections of high-dimensional data (Python)
Compute and visualize quality metrics for multidimensional projections (CUDA)
ProjExplain
Dimension-centric explanation of 2D and 3D projections (Rust, OpenGL)
ProjectionExplorer
Same as ProjExplain but massively refined and with extra explanations (C++)
ProjQuantEval
Benchmark for computing and visualizing dimensionality-reduction quality (Python)
Add run-time type information (RTTI) to a C++ program for any C++ compiler (C++)
Saliency Spline Skeletons for Image Compression (3S-DMD)
Compress images using spline-based skeletons and saliency maps (CUDA)
Supervised Decision Boundary Maps (SDBM)
Compute decision boundary maps for classifiers accurately in and near-real-time (Python)
Spline-based Dense Medial Descriptors (SDMD)
Spline-and-skeleton-based compression of images (CUDA)
SHARC: SHArpened Dimensionality Reduction and Classification
Extends SDR(-NNP) to classify data using a projection (Python). Needs the companion package pySDR (C++)
Skeleton-based image manipulation
Perform powerful edits of images interactively using skeletons (CUDA)
Shape-Regularized Multidimensional Projections (ShaRP)
How to control the shapes generated by a projection technique (Python)
Sharpened Dimensionality Reduction (SDR)
Sharpened dimensionality reduction by preprocessing the input data (Python)
Sharpened Dimensionality Reduction with Neural Networks (SDR-NNP)
Fast implementation of the SDR method (see above) using neural networks (Python)
Spline-based Medial Axis Transform (SMAT)
Spline-based encoding of binary skeletons (CUDA)
SkelBenchmark
Benchmark for comparing 3D skeletonization algorithms (various languages)
3D shape denoising using saliency skeletons (C++)
Skeleton-based corner detector for grayscale images (CUDA)
SkeletonSandbox
Interactive tool to compute and visualize 3D distance transforms and multiscale skeletons (C++)
Programmable visualizations of reverse-engineered software system architectures (C++)
Extract and visualize source code clones in large code bases (C#)
Extract and visualize dependencies and structure from C#, .NET, and Java code (C#)
Extract and visualize software evolution from code repositories (multiple versions)
Salience-aware Dense Skeletons (SSDMD)
Represent an image with dense skeletons driven by image salience metrics (C++)
Self Supervised Neural Projection (SSNP)
Improvement of the NNP algorithm, also providing inverse projection (Python)
Programmable table lens and treemap-from-tables visualization framework (C++)
Thesne
Implementation of dynamic t-SNE projection for time-dependent high-dimensional data (Python)
TreemapBenchmark
Benchmark for comparing treemapping methods (Python)
tsNET
Implementation of tsNET graph layout method using t-SNE (Python). An older implementation is available here (Python)
USTNet
Unsupervised 3D Shape-to-Shape Translation (for morphing between shapes) (Python)