Hi all, we’re excited to announce dash-slicer, a library to visualize 3D image data! It provides slice views along a given dimension, and allows multiple such views to be linked, to help with navigation. There is support for anisotropic data, mask overlays, and more. Check out the guide or the Github repo.
With dash-slicer, complex 3D visualization and annotation apps such as the COVID-19 chest X-ray annotation app
can be written with very little code, thanks to the interactions already embedded in the DashSlicer components.We hope that dash-slicer can be a game changer for practioners developing interactive apps in radiology or quality inspection, for example.
This work is part of the “Interactive image processing with Scikit-Image and Dash” open-source project funded by the Chan-Zuckerberg Initiative and its Essential Open-Source Software for Science program. I’m happy to lead this project with a wonderful team! The creator of dash-slicer is Almar Klein, one of the leaders of the scientific Python ecosystem. At plotly we’re super happy to collaborate with experts such as Almar to push the possibilities offered by Dash even further!
This looks very promising. And much needed. Thanks for your work on this! A couple questions about current functionality and possible future functionality.
Does the tool support user window/leveling? (i.e. dynamically adjusting the mapping between image pixel values, and displayed grayscale intensity). Such functionality is ubiquitous in medical image viewers and would be great to have here.
Most medical image viewers will do real-time image interpolation so that the displayed image matches your screen resolution. For example if you’re displaying a 256x256 MRI image over a screen area of 512x512 pixels, it would upsample the displayed image to show at 512x512. Thus you don’t see the pixelation (just a somewhat blurry image). Based on the demos, I doesn’t appear that this tool is doing that. Do you think this might be possible in the future? Or are there fundamental plotly limitations that would prevent that?