GPU-Based Iterative Voting

[Git Download]


Iterative voting is a highly robust algorithm that relies on radial symmetry to detect the locations of cells in 2D and 3D datasets. It localizes cells of various sizes in the input dataset. The main benefit of this algorithm is that it provides the robustness of iterative voting to high-throughput images using a GPU-based algorithm to improve the time performance for large datasets. This repository provides executable code for both 2D (ivote) and 3D (ivote3) images.

2D Cell Detection
breast cancer, estrogen receptor labeling
3D Cell Detection
Knife-Edge Scanning Microscopy (KESM), thionine dye


The only input parameter for iterative voting algorithm is the maximum estimated radius of cells in the input dataset (in pixels). To run the 2D algorithm (ivote), provide the input and output files with the estimated radius using the --rmax option. The output can be specified as an image (ex. cells.bmp), which will provide the final vote image output, or a text file (ex. cells.txt), which will provide the cell positions and corresponding vote values.
ivote input.bmp cells.bmp cells.txt --rmax 10

The 3D algorithm (ivote3), also allows the user to input the data size in any desired unit along all three dimensions using the --x, --y, and --z options. This allows the algorithm to address anisotropic images, which are commonly used in 3D microscopy. If sample units are specified, the --rmax parameter is given in the user-specified provided units.
ivote3 input.vol cells.vol cells.txt --rmax 10 --x width --y height --z depth


This code has been tested on Ubuntu and Windows. All of the necessary libraries are available on Ubuntu using aptitude. Windows requires manual installation of all libraries. The only source repository required is the STIM-Lib repository, which can be directly downloaded or pulled via Git:


The following libraries are required to build SIproc:

Boost (only required for Linux, use aptitude)


  • Windows:
    • Use version 2.4.13 (version 2 is the current standard and the one available on the Ubuntu repository)
    • This may have to be built with your desired compiler (ex. Visual Studio 2015) - we will move to OpenCV 3 when possible
  • Ubuntu: aptitude will install these files correctly

CUDA Toolkit


Provide a tutorial.

Comments are closed.