General questions about Microscopy image processing and & visualization using 3D Slicer

I’d like to know following if 3D Slcier has following features. Thanks for anyone who helps

GPU for Image Processing?
Multithread?
Well-documented?
Stereo image pairs?
Surface rendering?
Shadowing casting?
VR?
Movie recording
Ortho slices/block face views
Volume xyz/arbitrary cropping
channel specific cropping
Annotation on volume
Mesh display support
Channel specific LUT adjustments
Channel specific opacity
4D Movie Support (xyzt)
3D ROI measurements
Create 3D ROIs based on data
Interactive 3D length, angle measurements
3D particle tracking
Multi-modal/multi-channel 3D co-registration
Can handle datasets larger than RAM capacity?
Can run on a computer cluster?
what Built-in sripting / macro language used?
Size of existing user base?
User forum / online discussion board help
User plugins allowed?
Built-in scripting / macro languages?

Whew, that’s a lot of questions! Generally Slicer does really well on all those topics.
Maybe you can start by reading some of these references: https://www.slicer.org/wiki/CitingSlicer

I agree with @pieper - some of those questions are trivial (e.g., you should now know the answer to “User forum / online discussion board help” :-D).

Maybe you can start by reviewing the documentation, and summarize your understanding here in this thread, and then have it reviewed by the community, so we can correct as needed?

The answer to most questions is a strong yes. There are a few areas for improvement:

  • multi-channel image display/processing is supported in the internal infrastructure but not much of it is exposed on the GUI
  • out-of-core/multi-resolution image visualization and processing is not direclty supported (there are many application-specific workarounds)
  • microscopy file format readers/writers are supported by ITK quite well, but they are not enabled in default builds
  • custom length unit can be specified (e.g., use nm instead of mm as base unit) but not very well tested, so probably some fixes will be needed if it will be widely used

Several of these improvements would be relatively easy to do (even without touching the Slicer core, in custom modules), since Slicer relies on very flexible and powerful libraries, such as VTK and ITK, and you can also import and use any Python packages within Slicer.

Detailed response:

GPU for Image Processing? - We rely on ITK and VTK for most image processing operations and still only a very few processing filters are GPU-accelerated. For performance-critical steps, you can easily install any Python-wrapped GPU-accelerated processing filters from the Python package index and/or add your own (can be implemented in C++ and Python, preferably using GLSL or OpenCL).

Multithread? - Most performance-critical processing filters are multi-threaded.

Well-documented? - Yes. Lots of tutorials, user guide, API documentation, training events, very responsive forum.

Stereo image pairs? - Yes. Full immersive virtual reality display of anything that is shown in 3D views. Can be activated by a single click. Legacy anaglyph, interlaced, etc. stereo visualization is supported as well, but these have become irrelevant since virtual reality has become widely accessible.

Surface rendering? Yes. With many options.

Shadowing casting? Slicer uses VTK for rendering, which supports it, so probably it could be enabled (maybe by typing a few lines of Python code), but it is not available from the GUI.

VR? - Yes.

Movie recording - Yes

Ortho slices/block face views - Yes, with lots of visualization options.

Volume xyz/arbitrary cropping - Yes.

channel specific cropping - I’m not sure what you mean by this, but you can crop, clip, and mask multi-channel images.

Annotation on volume - Yes. You can mark points, lines, curves, etc. on rendered volumes in 2D and 3D.

Mesh display support - Yes. Both surface and volumetric, including coloring by cell and point scalars, slice intersection/projection views, etc.

Channel specific LUT adjustments
Channel specific opacity - Currently, multi-channel image support is quite limited. It would be easy to improve this, as all the underlying infrastructure supports them, but there has not been strong interest in this so far. Adding a module for customizing LUT/opacity for individual channels would be probably take a few days of work.

4D Movie Support (xyzt) - Yes, full support of time sequences of all data types (volumes, meshes, point sets, curves, etc.)

3D ROI measurements - Yes. Lots of metrics.

Create 3D ROIs based on data - Yes. Slicer has the most sophisticated image segmentation tool among all open-source medical image computing software (and it is more powerful than most commercial software, too).

Interactive 3D length, angle measurements - Yes.

3D particle tracking - Yes. Sequence registration allows tracking of position and deformation of 3D objects in a 3D+t volume sequence.

Multi-modal/multi-channel 3D co-registration - Multi-modal, yes. Multi-channel, I’m not completely sure, but probably yes (via SlicerElastiX).

Can handle datasets larger than RAM capacity? - There is no specific support for out-of-core processing. There are Python-based tools that can be imported and used, and there are many tricks for handling of very large data sets.

Can run on a computer cluster? Yes.

what Built-in sripting / macro language used? Yes, full interactive and batch mode Python scripting. Any python3 packages can be installed directly from the Python package index.

Size of existing user base? About 3000 weekly downloads from everywhere around the world (increasing exponentially by about 30% in the last 5 years)

User forum / online discussion board help - Yes. See this forum, with over 3200 members. All questions are answered. Several in-person meetings a year (Slicer Project Weeks).

User plugins allowed? - Yes. Designed to be customizable and extensible. See tutorials.

Built-in scripting / macro languages? Yes. See above.

3 Likes

Thank you very much Andras, very instructive and helpful!

Is the source code open to public?

You really need to go do http://www.slicer.org and learn about it yourself.