Plugins‎ > ‎

3D Shape

Author: Kristopher Sheets, PhD (sheetkg at
History: v1.0 - 09/24/2011: First release
v1.1 - 10/26/2011: Added Form Factor3D measurement, fixed bug
v2.0 - 05/14/2012: Changed plugin name from 3D Convex Hull to 3D Shape
                           Fixed calculation error in Form Factor3D
                           Fixed bug in gathering point data that skipped first slice

Bugs: Please report any bugs so that I may fix them.
v1.0 - Incorrect Convexity3D calculation, fixed in v1.1
v1.1 - Skipped all points in first slice, still works correctly for stacks without data
           in the first slice, fixed in v2.0
v1.1 - Reseults gave the cube of Fom Factor 3D, fixed in v2.0

Known Issues:Calculates surface area from pure voxel face.  Does not interpolate. Surface voxels are determined using 4-connectedness.  Results are slightly smaller than 3D Object Counter which appears to use 8-connectedness.
Source: 3D_Shape.jar
Installation: If present, remove 3D_Convex_Hull.jar
Save 3D_Shape.jar to the plugins folder and restart ImageJ (or Fiji).

If this plugin aids your investigations, please cite the following abstract.  I am currently finalizing this paper for submission and will update the citation at a later date.

Mol Vis. August 4, 2013 19:1747-1759
Microglial ramification and redistribution concomitant with the attenuation of choroidal neovascularization by neuroprotectin D1.
Sheets KG, Bokkyoo J, Zhou Y, Winkler J, Zhu M, Petasis N, Gordon WC, Bazan NG.
Neuroscience Center of Excellence, Louisiana State University Health Sciences Center, New Orleans, LA 70112, USA.


This plugin calculates the 3D shape descriptors Solidity3D, Convexity3D, and Form Factor3D based upon a convex hull constructed from an 8-bit or 16-bit grayscale image stack.  Users can define thresholds prior to executing or the plugin will assume a dark background and auto threshold the stack using the IsoData method and the stack histogram. Pixels within the threshold values will be gathered into a point cloud for subsequent construction of the convex hull.

Due to necessary calculations, this plugin can also measure the surface area, voxels, and volume for the point cloud and the convex hull.  Surface area and Volume use the image calibration and report values in units^2 and units^3, respectively. 

The plugin can also visualize the convex hull vertices by generating a new image stack containing only white pixels at location of vertices.  A future version will be able to generate an entire convex hull in the image stack.

Shape Descriptor Definitions:

From The Image Processing Handbook, 5th Ed. by John C. Russ: 

  • Solidity =  Area / Convex Area
  • Convexity = Convex Perimeter / Perimeter
  • Formfactor = 4π Area / Perimeter2

Note: In ImageJ, Formfactor is termed circularity.  Thus, in ImageJ  nomenclature, the 3D equivalent would be sphericity.

The 3D equivalent of Area is Volume, and the 3D equivalent of Perimeter is Surface Area.  Thus this plugin defines:

  • Solidity3d = Volume / Convex Volume
  • Convexity3d = Convex Surface Area / Surface Area
  • Formfactor3d = ∛(36π Volume2 / Surface Area3)
Usage: The plugin measurements can be found in the 3D Convex Hull submenu under the Analyze Menu

Analyze>3D Shape>Convex Measures>

  •  Measure Convex Volume...
  •  Measure Convex Voxels...
  •  Measure Convex Surface Area...

Analyze>3D Shape>Object Measures>

  •  Measure Volume...
  •  Measure Voxels...
  •  Measure Surface Area...

Analyze>3D Shape>Shape Descriptors>

  •  Measure Solidity3D...
  •  Measure Convexity3D...
  •  Measure Form Factor3D...
  •  Measure All... 

The plugin can also visualize the convex hull vertices

  •  Plugins>3D Shape>Make Convex Hull Vertices Stack...
Future Directions: Generate the entire convex hull as a new binary image stack
  •  Plugins>3D Shape>Make Convex Hull Stack...

Generate multi-point selections from convex hull vertices and store in the roi manager

  • Edit>Selection>3D Shape>Select 3D Convex Hull Vertices...

Generate z-plane cross section polygon selections from the convex hull and store in the roi manager

  • Edit>Selection>3D Shape>Select 3D Convex Hull...

Determination of the convex hull is done using a modified version of  the quickhull3d package.  For specific modifications to the quickhull3d package, see the annotations within the source code. The quickhull3d package was written by

Copyright, 2004.
John E. Lloyd, Ph. D.
Research Engineer, CS and Electrical and Computer Engineering
University of British Columbia
lloyd at
Available at  QuickHull3D: A Robust 3D Convex Hull Algorithm in Java

This package is a 3D implementation of QuickHull for Java, based on the original paper by Barber, Dobkin, and Huhdanpaa and the C implementation known as qhull. The algorithm has O(n log(n)) complexity, works with double precision numbers, is fairly robust with respect to degenerate situations, and allows the merging of co-planar faces.

Barber, C. B., D.P. Dobkin, and H.T. Huhdanpaa, "The Quickhull Algorithm for Convex Hulls," ACM Transactions on Mathematical Software, 22(4):469-483, Dec 1996,

Gathering the point cloud data necessary to build the convex hull is modeled on the approach used in the Point_Cloud plugin written by 

Jonathan B. Glass, 2010
jbglassij at
Available on the ImageJ Plugins site Export Point Cloud

Thanks to Bug Reporters:
Matthew R. Guilfoyle - Department of Neurosurgery, University of Cambridge

See Also: My website LearnImageJ for other plugins and image analysis and processing information.