Releases: jewettaij/visfd
basic voxelization (segmentation) tool added
A python script (voxelize_mesh.py) has been added and documented which should finally make segmentation of membrane-bound compartments possible (if not easy). This tool generates an image which indicates which voxels lie within a closed surface mesh. Meshes corresponding to surfaces (eg. boundaries of cells or organelles) can be generated using a combination of "filter_mrc" with tensor-voting, together with PoissonRecon, and meshlab to close, smooth, and cleanup the resulting meshes. Although this tool only segments a single closed surface in the the image, multiple different segmentations can be combined into the same image (using the combine_mrc program) to create a true segmentation containing multiple different labelled objects.
(The resulting segmented images can be used as masks to help other feature detection programs, such as filter_mrc, restrict the search for features to relevant places. For example, a mask might help search for ribosomes inside a bacterial cell, not outside the cell.)
WARNING: voxelize_mesh.py is extremely inefficient
The voxelize_mesh.py script is very slow and it consumes an extremely large amount of memory due to the fact that it relies on 3rd-party code. (It is so inefficient that it is barely functional. But for now it is good enough for my own needs.) Please read the documentation for that program if you decide to attempt using it.
compatible with PoissonRecon
This release contains a version of filter_mrc which has the minimal features to generate an oriented point cloud which can be read and refined by PoissonRecon. PoissonRecon is an implementation of the Screened Poisson Reconstruction algorithm which is useful for automatic closure of membrane surfaces.
Further refinement of the mesh is probably necessary to reduce bulges and make a smooth reasonable looking (minimal-energy) surface. Currently this can be done with the aid of MeshLab. A mesh-voxelizer will be needed if you want to determine which voxels lie inside and outside the membrane. (This has not been implemented yet.)
A brief tutorial for how to extract closed membrane surfaces from CryoEM tomograms can be found (with links to further documentation) here.
While this code works, unfortunately the process is still slow. The entire process of automatically segmenting a closed surface from a membrane requires a similar amount of time and effort compared to manual segmentation.
In the future, some of these external processing tools will either be automated or included with the download and customized for use with CryoEM tomograms. The eventual goal is to make this as automatic as possible.