====== Skeletonize3D ====== 2D and 3D skeletonization of binary images. {{:plugin:morphology:skeletonize3d:Smoothed-bat-cochlea-volume.gif|Smoothed bat cochlea volume}}{{:plugin:morphology:skeletonize3d:Skeleton-bat-cochlea-volume.gif|3D skeleton from bat cochlea volume}} ===== Introduction ===== This free code is an [[http://rsb.info.nih.gov/ij/|ImageJ]] plugin that allows the [[http://en.wikipedia.org/wiki/Topological_skeleton|skeletonization]] of a 2D or 3D binary (8-bit) image. Skeletonize3D is also integrated in [[http://pacific.mpi-cbg.de/wiki/index.php/Main_Page|Fiji]]. If you need to analyze a skeleton, you may be interested on having a look at [[plugin:analysis:analyzeskeleton:start|AnalyzeSkeleton]]. ===== Author ===== [[http://bioweb.cnb.csic.es/~iarganda/index_EN.html|Ignacio Arganda-Carreras]] ===== General Description ===== This work is an implementation by Ignacio Arganda-Carreras of the **3D thinning algorithm** from Lee et al. [[http://portal.acm.org/citation.cfm?id=202862.202867|"Building skeleton models via 3-D medial surface/axis thinning algorithms. Computer Vision, Graphics, and Image Processing, 56(6):462–478, 1994."]]. Based on the ITK version from Hanno Homann: http://hdl.handle.net/1926/1292 It works with 8-bit images and stacks. It expects the images to be binary. If not, all pixel values above 0 will be considered white. The resulting skeleton image will have **pixel value 255 at the skeleton and 0 at the background** (black) pixels. As Hanno Homman explains in his paper, //[...] binary thinning is used for finding the centerlines (”skeleton”) of objects in the input image. The general idea is to erode the object’s surface iteratively until only the skeleton remains. Erosion has to be performed symmetrically in order to the guarantee medial position of the skeleton lines and such that the connectedness of the object is preserved. Care has to be taken in order not to create holes or cavities in the object.// //There are two major approaches to image thinning: a) kernel-based filters and b) decision trees. Kernel-based filters apply a structuring element to the image and can generally be extended to dimensions higher than 3D, to find computationally efficient solutions for 4D and higher dimensions is subject of ongoing research. Methods based on decision trees are thus far limited to 2D and 3D, but are potentially faster than morphological filters, if they are well designed and can find more deletable points at each iteration.// //In 3D there are 226 = 67,108,864 possible binary combinations of object and background voxels in a 26-neighborhood, which cannot be completely captured by kernel-based filters. Lee et al. have demonstrated in their work that their solution, based on a decision tree, can handle all these cases correctly and find all deletable surface points at each iteration. Thus their algorithm allows for a very fast iterative erosion process [...]//. ===== Installation ===== Download [[http://jenkins.imagej.net/job/Stable-Fiji/ws/Fiji.app/plugins/Skeletonize3D_.jar|Skeletonize3D_.jar]] into your ImageJ plugins folder and then restart ImageJ or simply apply the command //Help>Update Menus//. Then, you can call the plugin at //Plugins>Skeleton>Skeletonize (2D/3D)//. Note that if you download the jar file into a plugins sub-folder, then no //Skeleton// sub-menu will be created and the //Skeletonize (2D/3D)// command will appear directly in the corresponding sub-folder menu. ===== Download ===== Source and class files can be downloaded from here: [[http://jenkins.imagej.net/job/Stable-Fiji/ws/Fiji.app/plugins/Skeletonize3D_-1.0.1.jar|Skeletonize3D_-1.0.1.jar]] ===== License ===== This program is **free software**; you can redistribute it and/or modify it under the terms of the **GNU General Public License** as published by the Free Software Foundation ([[http://www.gnu.org/licenses/gpl.txt|http://www.gnu.org/licenses/gpl.txt]]). This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ===== Changelog ===== **2008/11/19**: Update: changed skeleton pixel values to 255. **2008/11/15**: First release. ===== Known Bugs =====