Sagittal

Image fusion is a built-in Slicer feature, for example you can visualize PET/CT images like this:

Yes, for sure this is possible. However, in the mid/long term, you would miss a lot of opportunities to make your users happy.

For example, if you go with a simple implementation then your users will notice that tilted-gantry CT images, and images with variable slice spacing or orientation, and images with overview image stored with the same series instance UID as regular frames, etc. appear distorted in MPR views. Stock ITK/VTK DICOM implementation cannot load and display these images correctly. Or they may complain that certain images are not loaded at all, or they would like to see DICOM segmentation objects or RT structure sets. With decades of hard work we added all these features because they are necessary. Yes, they make the application bigger and more complex, but general-purpose 3D DICOM viewers cannot ignore these problems.

Also, there is a lot of work keeping all the underlying libraries up-to-date, make sure they all work on old and new hardware, operating system versions, in various software configurations. If you build your application on a platform then others do this work for you for free.

Slicer is not the best solution for everything, but if you want to develop a general-purpose, extensible, and customizable 3D medical image viewer in C++/Python then it is very hard to find anything better.

1 Like

@lassoan, @pieper, @sankhesh,

Hey Lassoan and team thanks so much for your time. I sincerely appreciate this! Sorry, Iā€™m starting to get mixed up about who Iā€™m communicating with.

So if I wanted to launch Slicer from the Mayo viewer app, QREADS, and show this Fusion interface with only the 4 quad images, no text on the left, and no Splicer logo, how would I do that? Is that possible? Let met show you the UI experience Iā€™m trying to achieve. This is being used by the Mayo AZ Med school. It would save me a lot of time and effort if I could use Splicer in such a way that gives the user a simple interface that made them unaware of the fact that they we loading another app.

You can start from the QuickSegment slicelet example and customize the GUI further (add/remove any widgets anywhere): https://www.slicer.org/wiki/Documentation/Nightly/Developers/Slicelets#Slicelet_examples

This is how Slicer is used as a viewer/editor plugin from other applications. See for example this topic. You may contact the author of that topic to share best practices with you.

Thanks so much @lassoan! Would adding thick slices and oblique be pretty straighforward?

@lassoan Also, is this really at no cost? Why does this seem too good to be true? This is an amazing service!

Yes, all the software is free to use for any purpose. The only cost, which is up to you to do or not, is to contribute back what you learn. This can be in the form of bug fixes, documentation, or working examples and extensions. Also answering user questions on this forum is a very nice way to give back (but none of that is required).

Good morning @sankhesh, @dgobbi, @lassoan and @pieper,

Iā€™m using the QT libs in my QREADS app that is a modification of @sankhesh 2018 FourPaneViewer , but I donā€™t know much about the QT IDE. It seems many are using it. Do you use it? Do you like it? Do you recommend it? Whatā€™s the advantage of using it? Thanks.

Yes, the Qt creator and designer tools can be very helpful. You can easily search your code and debug. Like anything it takes some practice.

@sankhesh Do you use the community version, or did you buy a license?

If you develop classic desktop application on Windows then I find that Visual Studio is way better than the Qt IDE. You will still use some components of the Qt IDE for resource editing (qt designer, linguist, etc.). On Linux and macOS the siutation may be different, Iā€™m not sure how Qt IDE compares to VS Code, XCode, KDeveloper, etc.

For years when I needed to use an IDE, mostly for debugging, I always used Visual Studio on Windows even though I typically use macs. Then I switched over to using Xcode because I preferred several of itā€™s tools. Recently I needed to do similar debugging on linux and really enjoyed using Qt Creator. If most of your time is spent doing Qt and you work across platforms then Iā€™d think Creator would be the one tool to get used to. Otherwise itā€™s personal preference.

1 Like

@lassoan, @pieper, @sankhesh: OK, so it falls in the same category as VS. Is there a way to visually develop the forms that are represented by the .ui files. Or is that .ui generated by VS? I always assumed the ui files were generated by QT and only QT could read them.

Thanks have a great week end. I meet with Libby on Monday.

Qt designer is a standalone application that allows visual editing of Qt ui files. You donā€™t even need to compile the ui files, you can load them at runtime to create a GUI.

We use this extensively in Slicer Python scripted modules. Qt designer is shipped with Slicer installer (but nothing else from the Qt IDE). You can edit the ui and py source files and reload the module and its GUI without restarting the application, which makes development much easier.

Hello @Yongun_Lee cc @lassoan ā€¦ Did you fix the sagittal flip issue ? I am using VTK library for showing MPR and am stuck with the same issue. Please let me know if you were able to resolve this. Thanks.

The solution (at least for @dporter) was to use 3D Slicer as a viewer and hide all the GUI widgets that were not needed. This simplified viewer has been deployed to thousands of computers in a hospital network and works well.

Thanks for your inputs @lassoan . I was using a react version of vtk for building an online dicom viewer. Even the react version has the same issue of sagittal view flip hence I raised the issue at this forum. I am assuming Slicer3D is a desktop based viewer.

The same applies to browser and desktop medical image viewers: nowadays you should not build one from scratch. There are free, open-source, extensible frameworks that implement all basic medical imaging features, and use VTK or VTK.js as rendering backend. If you build on such a framework then you donā€™t need to worry about low-level things like orienting images correctly.

3D Slicer is a good choice for desktop applications and server-side rendering (when you need to handle large volumes, run heavy computations, or you donā€™t want your data to be downloaded to client computers). You can use 3D Slicer as a web service with a REST API, as a Jupyter kernel, you can use it as a remote renderer (you can try how Slicer runs in your browser by clicking here).

OHIF is a good lightweight medical image viewer which is good if you know that the clientā€™s browser will be able to the rendering and it is OK to download the images to the clientā€™s computer. Latest version uses VTK.js for rendering.

Often you end up with a heterogeneous solution: you set up a DICOMweb storage backend that is used by various frontends. You can use OHIF for quick viewing and minor editing and launch 3D Slicer (either in the web browser or by launching an instance locally) for more complex tasks.

1 Like

Thanks a lot @lassoan for your detailed explanation. Will use a combination of different frameworks as you suggested. Thanks.