MRtrix3 provides a set of tools to perform various advanced diffusion MRI analyses, including constrained spherical deconvolution (CSD), probabilistic tractography, track-density imaging, and apparent fibre density
Displaying images on a remote server is very difficult / impossible currently using mrview, due the incompatibility of OpenGL 3+ with X11 forwarding (see here for details). It will be some time before the technology is updated to fix this.
In the meantime, @wasserth's niicat project shows that it is possible to allow some (limited) display functionality using sixel. The libsixel project provides an implementation that seems like a good starting point for a C++ command.
Tasks
[ ] extract a given slice of interest and render it to the terminal using libsixel
[ ] implement options or other user controls to select the slice of interest, projection (axial/sagittal/coronal), and brightness/control
[ ] understand how to capture keyboard input and use this to control the slice of interest in real time
[ ] understand how to capture mouse events and use this to further interact with the display
Optional
[ ] add crosshairs and a status bar to report position and voxel intensity
[ ] allow control of the colourmap
[ ] build in the use of overlays (all images limited to the same grid)
I'd add an optional task to support image display via other custom escape sequences such as
[ ] iTerm2 (macOS) image inlining as this works directly without the need to install libsixel on the server (also supported by niicat). documentation, example command. For Linux, terminology seems to support similar escapes functionality.
Displaying images on a remote server is very difficult / impossible currently using
mrview
, due the incompatibility of OpenGL 3+ with X11 forwarding (see here for details). It will be some time before the technology is updated to fix this.In the meantime, @wasserth's niicat project shows that it is possible to allow some (limited) display functionality using sixel. The libsixel project provides an implementation that seems like a good starting point for a C++ command.
Tasks
Optional