Code Monkey home page Code Monkey logo

volview's Introduction

VolView

A screenshot of a sample VolView session

Try it

Try VolView online: https://volview.kitware.app/

Introduction

VolView is an open source radiological viewer developed for clinical professionals. With VolView, you can have a deeper visual understanding of your data through interactive, cinematic volume rendering and easily visualize your DICOM data in 3D. Since VolView runs in your browser, you don’t need to install software and your data stays securely on your machine.

Major features of VolView include:

  1. Drag-and-drop DICOM: Drag DICOM images onto VolView, and they will be quickly parsed and presented as thumbnails. Click on a thumbnail, and the data is quickly loaded and presented as 2D slices and a 3D cinematic volume rendering.

  2. Cinematic Volume Rendering: Create beautiful renderings and gain new insights into your data with only a few clicks. VolView provides three cinematic volume rendering modes and intuitive controls for each. We've also provides simple ways to control lighting and multiple presets to get you started.

  3. Annotations and measures: We have provided a small set of tools for painting, measuring, and cropping, and that toolset will be rapidly expanding. If you have suggestions for new tools or for improving VolView in general, please leave feedback at our Issue Tracker.

  4. Simple, Scalable, and Secure: Simply visit a website to install VolView. Once it is running, all data handling, processing, and visualization occurs on your machine. Data you load into VolView never leaves your machine. And VolView is designed to run on any web browser: from the one on your phone to the one running on your most powerful workstations. It will take advantage of local GPU resources to accelerate its rendering processes, but if none is available, it will still generate the same high quality renderings, albeit a bit slower.

  5. A foundation for the future: VolView is meant to serve as a foundation for your future projects and products. It is open-source and free for commercial and academic use. You may modify it yourself, or Kitware can help you customize it to support client-server workflows, provide streamlined interfaces and tools, and carry your brand.

Documentation

Visit: https://kitware.github.io/VolView to read the documentation.

Citation

If you find VolView to be useful for your work, please cite our paper on cinematic rendering:

Jiayi Xu, Gaspard Thevenon, Timothee Chabat, Matthew McCormick, Forrest Li,Tom Birdsong,Ken Martin, Yueh Lee, and Stephen Aylward, "Interactive, in-browser cinematic volume rendering of medical images", MICCAI 2022 AE-CAI Workshop, Singapore, Sept 19, 2022, Journal version accepted for publication in Computer Methods in Computer Methods in Biomechanics and Biomedical Engineering:

To include a reference to the source code of VolView 4.0, please use this DOI: DOI

Customizing VolView

See the Contributing.md document.

Acknowledgements

This work was funded, in part, by the NIH via NIBIB and NIGMS R01EB021396, NIBIB R01EB014955, NCI R01CA220681, and NINDS R42NS086295.

volview's People

Contributors

aylward avatar bnmajor avatar bruyeret avatar cjh1 avatar dependabot[bot] avatar drewlazzerikitware avatar floryst avatar jackie733 avatar jadh4v avatar paulhax avatar sankhesh avatar tbirdso avatar timthirion avatar tomsuchel avatar yeonhojeong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

volview's Issues

Cropping enhancements

  • saving cropping tool state
  • changing camera's center of rotation to be the cropping bounds center
    • this won't make sense if there is geometry/uncropped labelmaps
  • reset crop doesn't trigger a render when crop tool is not enabled

Delete Patient gives errors

  1. Load Sample Data -> Abdomen-MRI
  2. Click 3 dots and "Delete Patient"
  3. Get errors, more errors on loading Abdomen-MRI again
vue.runtime.esm.js:619 [Vue warn]: Cannot delete reactive property on undefined, null, or primitive value: undefined
warn	@	vue.runtime.esm.js:619
del	@	vue-composition-api.mjs:1077
_delete	@	useDoubleRecord.ts:54
(anonymous)	@	common.ts:22
removeData	@	view-configs.ts:27
(anonymous)	@	pinia.esm-browser.js:1305
(anonymous)	@	datasets-images.ts:95
deleteData	@	datasets-images.ts:94
(anonymous)	@	pinia.esm-browser.js:1305
store.<computed>	@	pinia.esm-browser.js:887
deleteVolume	@	datasets-dicom.ts:263
(anonymous)	@	pinia.esm-browser.js:1305
store.<computed>	@	pinia.esm-browser.js:887
(anonymous)	@	datasets-dicom.ts:282
deleteStudy	@	datasets-dicom.ts:281
(anonymous)	@	pinia.esm-browser.js:1305
store.<computed>	@	pinia.esm-browser.js:887
(anonymous)	@	datasets-dicom.ts:298
deletePatient	@	datasets-dicom.ts:297

widget infrastructure

Need a cleaner widget infrastructure that supports:

  • serializing and restoring measurements
  • sufficient hooks for a rich array of widget functionality
  • versioned serialization format

Add Cascading Delete in the UI

Ensure that deleting data doesn't result in an empty parent element.

Examples:

  • Deleting the last study should delete the series
  • Deleting the last series should delete the dataset

Coloring geometry resets colormap

To reproduce:

  1. Load geometry + volume
  2. Change the shift of the color transfer function
  3. Change geometry colorBy

What we expect: the geometry color changes, and the colormap stays the same.

What actually happens: colormap shift resets.

Light moves with camera

In addition to flipping the light position, there should be a fixed/moving light option.

Fixed/moving are perhaps confusing terms. How about a three-way toggle, or menu choice: "Lighting: ( ) anterior ( ) posterior ( ) camera"

s

Line Widget: accept serialized state

@timthirion

Creation of widgets can be found in widgetProvider. We can probably add a new optional parameter that is a widget's serialized state.

The widget constructor is where we can pass in initial widget state. We will have to add an optional method that subclasses must implement if they want to accept serialized state.

There isn't any way to save widget state in paraview-medical (yet), but you can check out the ruler's onWidgetChange. This gives you an idea of what the widgetState object looks like. In our importState method (or whatever we name it), simply need to update the widget state to match the serialized state.

Paint bugs and features

  • world-space brush
  • lerp between points
  • can't click once to erase on axial view with abdomen mri dataset in certain spots. Probably an issue with the determining of whether to paint?
  • auto-show annotations pane

Set window level and width based on dicom tags (w/l)

When dicom rescale values are provided, every slice should default to the provided dicom rescale values.

Note: this does mean the non-axial slices have window/level values based on the current slice's rescale values. Changing W/L in the non-axial slices will change the W/L in the axial slice, setting it to "manual W/L" mode.

Packaging as a downloadable standalone distribution

It would be useful to allow users to download/install a local copy of VolView as a desktop application (via Electron). This will pair nicely with integration with external python scripts for inference, segmentation, etc.

Volume cropping

We want to support cropping the volume in both the 2D and 3D views.

Impossible to load STL and VTP files

When loading STL or VTP files (ex: ConeSources generated from Paraview), the interface freezes and the following logs show in the debug console:

[Vue warn]: Error in getter for watcher "function () {

            // preventing the watch callback being call in the same execution

            if (running_1) {

                return;

            }

            try {

                running_1 = true;

                source(registerCleanup);

            }

            finally {

                running_1 = false;

            }

        }": "TypeError: curImageMetadata.value is undefined"

found in

---> <VtkTwoView> at src/components/VtkTwoView.vue
       <LayoutGrid> at src/components/LayoutGrid.vue... (1 recursive calls)
         <VMain>
           <VApp>
             <DragAndDrop> at src/components/DragAndDrop.vue
               <App> at src/components/App.vue
                 <Root> vue.runtime.esm.js:619

TypeError: curImageMetadata.value is undefined
    node_modules index.js:9051
    getter_1 vue-composition-api.mjs:1301
    get VueJS
    node_modules chunk-vendors.js:148968
    flushQueue vue-composition-api.mjs:1186
    node_modules chunk-vendors.js:148876
    VueJS 5
    fallbackFlush vue-composition-api.mjs:1193
    queueFlushJob vue-composition-api.mjs:1204
    node_modules chunk-vendors.js:148967
    VueJS 9
    setterHandler vue-composition-api.mjs:932
    set vue-composition-api.mjs:686
    useSceneBuilder useSceneBuilder.ts:44
    applyCb vue-composition-api.mjs:1372
    node_modules chunk-vendors.js:148968
    flushQueue vue-composition-api.mjs:1186
    node_modules chunk-vendors.js:148876
    VueJS 5

This issue can be reproduced directly on the VolView demo. I have trouble understanding where the error comes from, but I assume it's not related to the files I'm using, since I can load them in PVGlance.

Selecting layouts resets the camera views

Problem: when selecting a layout, camera settings reset. This is undesired behavior.

Expected: when selecting a layout, the views should visually remain the same.

This issue stems from the view components generating their own IDs. Instead, IDs should be provided by the layout, allowing for view config persistence.

Transform camera rather than scene objects

Instead of transforming scene objects into image-space, transform the camera to make the scene look like image space. This has the added benefit of avoiding the extra work of transforming each dataset.

2D LPS Labels

We can use Alexis' more robust labeling code for the 2D views.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.