# 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.

## AFMM

Computes 2D Euclidean distance transforms, feature transforms, and skeletons (C++).

## AFMM3D

Computes 3D Euclidean distance transforms, feature transforms, and skeletons (C++).

## AreaView

Visualization of UML diagrams with code quality metrics (C++).

## binvox

An enhanced (faster, more stable) version of the open-source binvox voxelizer (C/C++).

## CUBu

CUDA Universal Bundling framework for huge graphs (CUDA).

## CUDASkel2D

Computes 2D Euclidean distance transforms, feature transforms, and skeletons on the GPU (CUDA).

## CUDASkelSalience

Computes 2D Euclidean distance transforms, feature transforms, and salience skeletons on the GPU (CUDA).

## CUDASkelInteract

Interactive axis-based 3D rotation tool based on image skeletons (CUDA).

## CVSgrab, CVSscan

Visualize evolution of CVS and SVN software repositories (C++, C#).

## ClonEvol

Extract and visualize evolution of software clones from code repositories (C++).

## DataVisualizationBook

Code samples from my data visualization book (C++, OpenGL).

## DejaVu

Extract and refactor (eliminate) code clones in Visual Basic (VB).

## DenseSkel

Encode grayscale and color images using dense multiscale skeleton descriptors (CUDA).

## DenseSkel Benchmark

Benchmark for using dense skeletons for image compression.

## DepAnalyze

Extract and visualize evolution of software dependencies in code repositories (C#).

## DigitalShave

Digitally remove hairs from dermatoscopic skin imagery (C++).

## DreamCode

Visualize structure and metrics of software source code using cushion treemaps (C++).

## DTIBundling

Simplification of DTI tracks with trail bundling (C++).

## DynProjBenchmark

Benchmark for dynamic projections of time-dependent high-dimensional data (Python).

## GCCIE

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).

## KDEEB

Kernel density based edge bundling method (CPU and CPU, C#).

## MemoView

Visualize dynamic memory allocations.

## MetaBalls

Render fluids using metaballs created via surface particles (C++).

## 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).

## ProjExplain

Compute and visualize quality metrics for multidimensional projections (CUDA).

## ProjectionExplorer

Visualize multidimensional projections alongside explanations of neighborhoods, refines ProjExplain (C++).

## ProjQuantEval

Benchmark for computing and visualizing dimensionality-reduction quality (Python).

## RTTI

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).

## Skeleton-based image manipulation

Perform powerful edits of images interactively using skeletons (CUDA).

## Sharpened Dimensionality Reduction (SDR)

How to improve 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).

## SkelNoiseRemoval

3D shape denoising using saliency skeletons (C++).

## SkelCornerDetection

Skeleton-based corner detector for grayscale images (CUDA).

## SkeletonSandbox

Interactive tool to compute and visualize 3D distance transforms and multiscale skeletons (C++).

## SoftVision

Programmable visualizations of reverse-engineered software system architectures (C++).

## SolidSDD

Extract and visualize source code clones in large code bases (C#).

## SolidSX

Extract and visualize dependencies and structure from C#, .NET, and Java code (C#).

## SolidTA

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).

## TableVision

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).

## USTNet

Unsupervised 3D Shape-to-Shape Translation (for morphing between shapes) (Python).