3D Convex Hull
Author: Kris Sheets (ksheet at lsuhsc.edu)
History: v1.0 - 09/24/2011
Bugs: This is the first release and bound to have bugs.  Please report them to me so that I may fix them.
Source: 3D_Convex_Hull.jar
Installation: Save 3D_Convex_Hull.jar to the plugins folder and restart ImageJ (or Fiji).
Citation:

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.

Invest Ophthalmol Vis Sci. ARVO Meeting Abstracts April 22, 2011 52:5470
Topical Neuroprotectin D1 Attenuates Experimental CNV and Induces Activated Microglia Redistribution.
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.

Description:

This plugin calculates the 3D shape descriptors Solidity3d & Convexity3d 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

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
Usage: The plugin measurements can be found in the 3D Convex Hull submenu under the Analyze Menu

Analyze>3D Convex Hull>Convex Measures>

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

Analyze>3D Convex Hull>Object Measures>

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

Analyze>3D Convex Hull>Shape Descriptors>

  •  Measure Solidity3D...
  •  Measure Convexity3D...
  •  Measure All... 

The plugin can also visualize the convex hull vertices

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

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

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

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

  • Edit>Selection>3D Convex Hull>Select Hull...
Acknowledgements:

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 cs.ubc.ca
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, www.qhull.org

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 gmail.com
Available on the ImageJ Plugins site Export Point Cloud

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

|Plugins | Home |