===== Segmentation and Meshing tools for Image-based Modelling ===== Credits: Russell Garwood, David Smith, Yongle Sun, Martin Turner (Manchester), Jon Hill (York), Susheel Varma (Sheffield), Gowsihan Poologasundarampillai (Birmingham & DLS), Alberto Gambaruto (Bristol). //Disclaimer//: The list and descriptions are unavoidably subjective. Please [[question@math-biophys.info|get in touch]] if you notice any inaccuracies. ==== Overview ==== ^ Visualisation & segmentation ^ Platform ^ Cost ^ Comment ^ | [[http://fiji.sc|FIJI]] / ImageJ + [[http://3dviewer.neurofly.de|3D Viewer]] | all | 0 | Highly flexible image processing, with limited 3D rendering and meshing | | [[https://diamondlightsource.github.io/SuRVoS|SuRVoS]] | Linux/Win | 0 | Machine learning (ML)-based semi-automatic volume segmentation aimed at X-ray tomography | | [[http://bio3d.colorado.edu/imod|IMOD]] | all | 0 | 3D reconstruction, segmentation and visualisation aimed at Electron Microscopy | | [[http://mib.helsinki.fi/features.html|Microscopy Image Browser]] | all | 0 | ''Matlab''-based 2D/3D visualisation and segmentation tools for SEM and tomography | | [[https://hyperspy.org/|HyperSPy]] | all | 0 | ''Python''-based visualisation & analysis of multi-dimensional images & //spectra// (for EM, etc.) | | [[https://glueviz.org/|GlueViz]] | all | 0 | ''Python''-based visualisation & statistics of //linked// high-dim datasets (astronomy/climate/medical) | | [[http://www.itksnap.org|ITK-SNAP]] | all | 0 | User-friendly 3D (semi-)manual segmentation with ML features for medical (MRI/CT/US) data | | [[https://www.cti.gov.br/en/invesalius|InVesalius]] | all | 0 | Basic image reconstruction for MRI and (micro)tomography data | | [[https://www.slicer.org|3D Slicer]] | all | 0 | Advanced ''VTK''-based 3D visualisation and segmentation of medical images | | [[http://www.paraview.org|ParaView]] | all | 0 | ''VTK''-based 3D simulation data visualisation, a free analogue to ''TecPlot'', ''Origin'', ''Igor Pro'', etc. | | [[https://www.blender.org|Blender]] | all | 0 | Free alternative to ''3D Studio'' / ''Autodesk Maja'' with some mesh manipulation | | [[https://sf.anu.edu.au/Vizlab/drishti|Drishti]] | Win/Mac | 0 | Advanced visualisation and rendering for presentations & outreach; basic meshing | | [[http://spiers-software.org|SPIERS]] | Win/Mac | 0 | Tomographic visualisation, serial rendering and meshing (not actively updated since 2013) | | [[http://www.sci.utah.edu/cibc-software/seg3d.html|Seg3D]] + ImageVis3D | all | 0 | Visualisation and segmentation of medical images | | [[http://mtshasta.phys.washington.edu/website/SuperSegger.php|SuperSegger + Omnipose]] | all | 0 | MATLAB/Python ML-based segmentation & tracking of bacterial cells in 2D microscopy | | [[https://www.theobjects.com/dragonfly/features.html|Dragonfly]] | Win/Linux | Edu/$$$ | 3D visualisation, CNN-aided segmentation, analysis & meshing [part-limited to ZEISS Pro] | | FEI [[https://www.fei.com/software/avizo3d|Avizo]] / [[https://www.fei.com/software/amira-3d-for-life-sciences/|Amira]] | all | $$ | Powerful 3D visualisation, image processing and segmentation | | PerkinElmer [[|Columbus]]| all | $$? | Browser-based integrated data storage and basic image analysis system (aimed at pharma) | | [[http://www.osirix-viewer.com|OsiriX]]| Mac only | $ | DICOM data visualisation, FDA-certified for diagnostics | \\ ^ Meshing Software ^ Platform ^ Cost ^ Comment ^ | [[http://gmsh.info|Gmsh]], [[http://wias-berlin.de/software/tetgen|TetGen]], [[http://www.hpfem.jku.at/netgen|Netgen]] | all | 0 | Flexible command line tools (gmsh is also with a user-unfriendly %%GUI%%) | | [[http://meshlab.sourceforge.net|MeshLab]] | all | 0 | Triangular & tetrahedral %%GUI%% mesh manipulator; can be unstable for big meshes | | [[https://www.salome-platform.org|Salome]] | Linux/Win | 0 | %%GUI%% mesh and CAD manipulator (see also [[https://www.freecadweb.org|FreeCAD]]), with some post-processing tools | | [[http://www.meshmixer.com/|Autodesk Meshmixer]] | Win/Mac | 0 | User-friendly %%GUI%% mesh manipulator for 3D printing (closed-source) | | [[https://www.engits.com/engrid---mesher.html|enGrid]] + Netgen | all | 0 | Tetrahedral + prismatic meshing %%GUI%% optimised for CFD; integrated with ''OpenFOAM'' | | [[https://ngsolve.org|Netgen/NGSolve]] | all | 0 | Netgen-based meshing, multi-physics FE solver & visualisation %%Python/C++%% library | | [[http://iso2mesh.sourceforge.net|iso2mesh]] | all | 0 | Flexible tetrahedral meshing Toolbox for ''MATLAB'' / ''Octave'' with ''COMSOL'' support | | [[ http://www.cgal.org|CGAL]] | all | 0 | Very flexible C%%++%% meshing and computational geometry library | | [[http://libmesh.github.io|libMesh]] | all | 0 | %%C++%% meshing library | | [[http://www.vmtk.org/|vmtk]] | all | 0 | Vascular Modeling Toolkit: %%Python/C++%% library for centreline tracing and surface meshing | | [[http://libmesh.github.io|CRIMSON]] | Win/Linux| 0 | Vasculature-oriented segmentation & meshing %%GUI%% tool for image-based modelling | | [[https://www.comsol.com/comsol-multiphysics#mesh|COMSOL Multiphysics]] | all | $ | Built-in physics-based meshing and mesh-optimisation ([[https://www.comsol.com/blogs/improved-functionality-and-tips-for-importing-stl-and-nastran-files|STL import tips]])| | [[http://www.ansys.com/products/platform/ansys-meshing|ANSYS Meshing]] | Win/Linux | $$$? | CFD-oriented robust meshing (formerly ANSYS ICEM CFD; see also OptiGrid) | | [[https://www.netfabb.com|Autodesk Netfab]] | Win only | $$$? | Advanced CAD geometry and mesh manipulation (see also [[https://www.solidworks.com/product/solidworks-3d-cad|Solidworks]] suite) | | [[https://www.fei.com/software/amira-3d-extensions|FEI Avizo / Amira + XWind]] | all | $$ | Powerful segmentation with limited tetrahedral meshing | | [[http://biomedical.materialise.com/mimics|Materialise Mimics]] | Win only | $$$? | Complete workflow with robust meshing but restrictive %%GUI%%; optimised for 3D printing | | [[https://www.simpleware.com/software/fe-module|Simpleware ScanIP + FE]] | Win only | $$$ | Complete workflow with robust meshing for FE solvers, CFD-optimised with ''COMSOL'' support | **Summary**: ''MeshLab'', ''Gmsh'', ''Simpleware'' are good %%GUI%% tools for simple-to-medium mesh-generation; for high-throughput tasks, use script-based ''Gmsh'', ''Netgen'', ''TetGen'', ''CGAL'', ''iso2mesh'' (all are highly flexible), and also ''ANSYS ICEM''. **Tips**: test the final mesh quality by plotting the distribution of //dihedral angles//. See also an overview of meshing tips for ''COMSOL'': [[https://uk.comsol.com/blogs/how-to-set-up-a-mesh-in-comsol-multiphysics-for-cfd-analyses/|Part I]], [[https://uk.comsol.com/blogs/your-guide-to-meshing-techniques-for-efficient-cfd-modeling|Part II]]. **Further Tools and Resources**: [[http://www.ccpi.ac.uk/node/3|Quantification and Segmentation Tools for Micro-Tomography]], [[https://idoimaging.com|Software Catalogue for Medical Imaging]] (e.g. DICOM); [[http://niftyweb.cs.ucl.ac.uk|NiftyWeb]] & [[http://cmictig.cs.ucl.ac.uk/wiki/|Nifty]] (online MRI/CT segementation; [[http://niftynet.io|NiftyNet]] is ML-based); A comparison of [[https://peterfalkingham.com/2019/02/18/free-software-for-ct-segmentation-2019|CT-segmentation tools]]; [[https://mirtk.github.io|MIRTK]] and [[http://www.deformetrica.org|Deformetrica]] (MRI-oriented multi-modal image registration and transformation). Meshing tools: [[http://www.meshrepair.org|Mesh Repair Sofware]] (e.g. see ''ReMESH''), [[https://openfoamwiki.net/index.php/SnappyHexMesh|SnappyHexMesh]] from the ''OpenFOAM'' suite. \\ ==== ImageJ/Fiji & Amira/Avizo Tips ==== Credits: Kathy Tinoco, Cornelia Vacar (FEI), Philip Pearce (MIT), James Carr, Alexander Erlich, Sebastian Gilbert and David Smith (Manchester) \\ **Manual Skeletonisation** as an alternative to //Auto Skeleton// module: - Compute a distance map from your label field, using //Distance Map// module. Set the //Chamfer Weights// to float - Convert the result to 8-bit data via //Convert Image Type// module - Generate a centerline tree (spatial graph) with //Centerline Tree// module (this step may take a while) - //Centerline Tree// module has ''Tube Parameters'' (''slope'' and ''zeroVal'') that help to reduce the number of false side branches. E.g., for a thin noisy object, large ''zeroValue'' will account for the noise when tracing a branch, and for a thick object with irregular surface, large ''slope'' will allow for larger local thickness variations.
--- //Igor Chernyavsky, 2017/08/17 17:47// ---
**Segmentation Tips** for complex / noisy data: - ''[[http://imagej.net/Trainable_Weka_Segmentation|Weka]]'' is a 2D/3D machine-learning ''Fiji'' plugin, useful for pre-processing - //Filter Sandbox// and //Marker-based Watershed Mask// are semi-automatic segmentation modules in ''[[https://en.wikipedia.org/wiki/Amira_(software)|Amira]]'' - ''[[https://diamondlightsource.github.io/SuRVoS/|SuRVoS]]'' is a powerful combination of 3D super-voxel segmentation and trainable classifiers (random forest, etc.) - ''[[http://mib.helsinki.fi/features_all.html|MIB]]'' is another tool for 2D super-pixel segmentation and has some machine learning functionality (X-ray ZEISS ''.txm'' needs to be exported to ''.mrc''/''.tiff'' stacks first)
--- //Igor Chernyavsky, 2017/09/18 19:00// ---