Skip to content
Siqi Liu edited this page May 31, 2016 · 6 revisions

============================= Rivulet-Neuron-Tracing-Toobox (WIP)


Rivulet is a Matlab GUI App for automatic reconstruction of single neuron cells. It is capable of automatic filternig 3D microscopic image stacks, segmenting neuron structures, reconstructing soma surface and neuron tracing. It has direct communication between the GUI interface and the Matlab workspace. It is currently actively being maintained and updated.

Please cite the following paper for research use of Rivulet:

Siqi Liu, Donghao Zhang, Sidong Liu, Dagan Feng, Hanchuan Peng, Weidong Cai, "Rivulet: 3D Neuron Morphology Tracing with Iterative Back-Tracking", Neuroinformatics, 2016.

Donghao Zhang, Siqi Liu, Sidong Liu, Dagan Feng, Hanchuan Peng, Weidong Cai, "Sub-Voxel Reconstruction of 3D Neuron Morphology using RIVULET Back-Tracking", The IEEE International Symposium on Biomedical Imaging: From Nano to Macro (ISBI 2016), 2016.

For questions and bug reporting please post all in Issues with the approperiate label assigned.

Pull Requests are also welcomed.

A vaa3d version of the Rivulet tracing algorithm is also available at rivuletv3d

We will provide the first ready to install package for different platforms very soon.

An example tracing process:


An example soma detection process:


Background of automatic reconstruction of single neuron cells

To acquire profound knowledge of the neuron structure is vital for efficient and accurate diagnosis and treatment of both neurological and psychiatric disorders. Due to the increasingly relying on bioimage assistance in medical practice, 3D neuron reconstruction will provide reliable and accurate data for neuron morphology study. There are few powerful automatic algorithms to trace a complete neuron. The most current algorithms are semi-automatic, so it is significant to propose an automatic neuron reconstruction method. The reconstruction result is barely satisfactory due to the appearance of irrelevant structure, background gradients, and inhomogeneous contrast of neuron image stacks. The fuzzy and discontinuous neuron structure is another challenge. Most of the current algorithms can only achieve satisfactory reconstruction results of single neuron. When the neuron structure is complex and complicated, most current algorithms fail. For example, any close neuron structures will lead to biased reconstruction results. The new automatic and robust neuron reconstruction method is required. We propose a fast, robust and automatic algorithm, which can generate reasonable satisfactory 3D reconstructions of complex and complicated neuron structure in a short time.

Work-flow of the Algorithm

The key idea of Rivulet tracing is to track from the point of longest geodesic distance to the soma location iteratively. The discovered branches are erased from the foreground image so they will not be repeat discovered. The inclusion and exclusion criteria are also the keys for the performance of the algorithm. For more details, please refer to our paper

Donghao Zhang, Siqi Liu, Sidong Liu, Dagan Feng, Hanchuan Peng, Weidong Cai, "Sub-Voxel Reconstruction of 3D Neuron Morphology using RIVULET Back-Tracking", The IEEE International Symposium on Biomedical Imaging: From Nano to Macro (ISBI 2016), 2016.


Forks are welcomed. However we believe it would be better if we join force to improve one repository. Matlab implementations are not guaranteed to compete with C programs in speed. However the I/O is more flexible and users can directly import and export results with Matlab workspace for further analysis. Also it is faster for researchers to prototype new algorithms. The authors do use this toolbox in our daily experiments for algorithm development and tuning. AND WE FELT IT USEFUL! If you have any thoughts how to improve this repository, you are more than welcome to throw pull requests or issues. We consider all questions as bugs in terms of the user experience. Intuitive interfaces should be self-explanatory. So if you have questions regarding the usage, you can also raise an issue.

Some of the key files to tweak if you are interested in the implementation details: ./trace.m: the trace function with the main routine of Rivulet tracing algorithm ./util/anisotropicfilter.m: The implementation of the anisotropic filter. We will keep updating the filter however we will try to keep the filtering with only one button for simplicity. ./util/binarizeimage.m: Segment the input image to binarize image with a classifier or a threshold ./util/showswc.m: neuron tree rendering function. It currently renders neurons ignoring the radii considering the performance. ./lib/FastMarching_version3b/msfm.m: adapted multi-stencils fast-marching. ./util/ addbranch2tree: add a newly discovered neuron branch to the main trunk `./lib/snake/mainsnake/somagrowth.m': the main routine of soma detection

Thanks to the following open-sourced libraries which are used now or historically:

Snake Link

Accurate fast marching

Tree Toolbox

Vesselness filter

Level set

Otsu Link

Loops link



Clone this wiki locally
You can’t perform that action at this time.