This source code repository contains the algorithms used to segment cells and scaffolds from co-registered pairs of fluorescent confocal z-stacks. The algorithms are designed to perform:
- Cell segmentation (Java 1.8)
- Statistical model-based segmentation of spun coat and fiber scaffold types (Matlab 2015a)
- Planar geometrical model-based segmentation of spun coat scaffolds (Matlab 2015a)
- Cylindrical geometrical model-based segmentation of fiber scaffolds (Java and C++)
- Skeleton and diameter extraction (C++)
The application of these algorithms have been described at https://isg.nist.gov/deepzoomweb/data/stemcellmaterialinteractions and includes biological hypothesis, imaging description, and data description. The data and visualization of the cell-scaffold contact data are also available from https://isg.nist.gov/deepzoomweb/data/stemcellmaterialinteractions.
To run each algorithm, please, use the following functions with test files available at https://isg.nist.gov/deepzoomweb/fileBrowsing/3Dcontact/RawCropped/:
- Cell segmentation
- Java class segment-validate/src/pipeline3D/Image3DProcessingPipeline.java
- Input arguments: inputImagesFolder imagesFileNameExtension outputDirectory outputCSVFileName thresholdMinimumValue thresholdMaximumValue thresholdStep voxelDimX voxelDimY voxelDimZ voxelDimUnit method
- Method can be: MinError, Otsu, EGTSobel2D, EGTSobel3D, Triangle or DarkFrames (MinError was used for these test files)
- Example:
- /path/to/inputImagesFolder tif /path/to/outputDirectory outCSVFile.csv 1 65535 1 0.12 0.12 0.46 um MinError
- Large images may require to increase the JVM max memory size, using the option -Xmx (for example -Xmx10G for 10GB)
- Statistical model-based segmentation of spun coat and fiber scaffold types
- Please refer to the file segmentation-imagemodels/src/CellScaffoldContact/ReadMe.txt
- Section "II. Cell-Scaffold Contact Point Estimation: Statistical Models"
- Please refer to the file segmentation-imagemodels/src/CellScaffoldContact/ReadMe.txt
- Planar geometrical model-based segmentation of spun coat scaffolds
- Please refer to the file segmentation-imagemodels/src/CellScaffoldContact/ReadMe.txt
- Section "III. Cell-Scaffold Contact Point Estimation: Planar Geometrical Models for Spun Coat"
- Please refer to the file segmentation-imagemodels/src/CellScaffoldContact/ReadMe.txt
- Cylindrical geometrical model-based segmentation of fiber scaffolds
- Convert a set of acquired tif files to a FITS file
- Java class segment-validate/src/io/ConvertTiffStackToFITS.java
- Input arguments: inputImagesFolder outputDirectory
- Convert FITS to NII files
- Required: CMake, make and ITK library (https://itk.org/ITK/resources/software.html)
- Build Itk2fits project from itk2fits folder:
- cmake CMakeLists.txt
- make all
- Run Itk2fits program:
-
Options: -i, --input Load 3D image from , -o, --output Save results to , -x, --x-spacing Force voxel spacing in X direction, -y, --y-spacing Force voxel spacing in Y direction, -z, --z-spacing Force voxel spacing in Z direction, /?, --help Display this help and exit
-
Examples:
- itk2fits -i input.fits -o output.nii
- itk2fits -i input.fits -o output.nii -x 0.12 -y 0.12 -z 0.462
-
- Run modified vesselness filter on NII files:
- Code is available from this repository: https://gitlab.com/piotr.szczypinski/microfibers
- Example:
- horvess -i input.nii -o output.nii -m Frangi -z -s 3 -l 0.4 -h 4.0
- Run Java class segment-validate/src/pipeline3D/FiberScaffold2BinaryContact.java on the nii files generated by Horvess
- Input parameters can be modified direclty in the batchProcess and batchProcessVR methods, the method to call can be selected in the Main method
- Convert a set of acquired tif files to a FITS file
- Skeleton and diameter extraction
- Required: CMake, make and ITK library (https://itk.org/ITK/resources/software.html)
- Required: Alglib library source files must be placed in a folder named alglib inside of the treebuild folder (Alglib for C++ can be downloaded from http://www.alglib.net/download.php)
- Build treebuild project from treebuild folder:
* cmake CMakeLists.txt
* make all
- Run treebuild program:
-
Options: -i, --input-image loads binary image from -m, --median-image save median filtered image to -k, --skeleton-image save skeleton image to -x, --index-tree save tree with index coordinates to -d, --distance-tree save tree with distaance coordinates and radius estimations to -s, --smoothed-tree save smoothed tree to -r, --median-radius median filter radius (default 2) -g, --gamma for gamma higher then 1, the smaller radius of ellipse is favored (default 4) /?, --help Display this help and exit.
-
Example:
- treebuild -i input.nii -m median.nii -k skeleton.nii -x index-tree.txt -d distance-tree.txt -s smoothed-tree.txt
-
- Run treebuild program: