Edit this page

NA-MIC Project Weeks

Back to Projects List

Interoperability of DICOM SEG between cornerstonejs/vtkjs/dcmjs

Key Investigators

Project Description

This project aims to work on interoperability of DICOM SEG within the cornerstonejs and vtkjs frameworks, utilizing dcmjs for IO. This project is the logical continuation of a previous Project Week project

Objective

  1. Visualization of DICOM SEG segmentation data in both cornerstonejs and vtkjs frameworks. This will also facilitate cornerstone integration with ePAD.
  2. Provide easy interoperability between segmentations visualized using both libraries.
  3. Provide an example implementation as plugins to the OHIF viewer, utilizing both cornerstonejs and vtkjs.

Approach and Plan

  1. Build an easy to use, fast interface for loading DICOM SEG into native cornerstone brush annotation format.
  2. Build a bridge between the cornerstoneTools canvas, and vtkjs methods of rendering.
  3. Implement an example in a fully fledged web viewer (OHIF Viewer), such that annotations in a vtkjs-enabled window automagically display the relevant cornerstoneTools data related to that series in an appropriate fashion.
  4. Bonus goal: use vtkjs to show real-time 3D visualization of the SEG

Progress

  1. Added adapters to dcmjs that wrap the Segmentation class for easy IO in Cornerstone. These adapters switch between cornerstoneTools formatted data and DICOM SEG, without adding Cornerstone as a dependency for dcmjs. Only binary SEGs for now.
  2. Built a bridge in a simple example viewer that shares a common buffer for segmentation data between Cornerstone and vtkjs viewports.
  3. Synced interactive painting of segmentation data (labelmap) between Cornerstone and vtkjs.
  4. We have 3D visualisation of the the SEG leveraging vtkjs, rendering the shared vtkjs/Cornerstone seg buffer.

Next Steps

  1. Make sure the SEG adapters can handle edge cases, including common, but interpretable abuse and/or violation of the standard e.g.:
    • abuse: “fractional” SEGs which only have min and max value, 0 and 255, effectively being binary SEGs wasting 8x the storage.
    • violation: “binary” SEGs which contain fractional data.
  2. Finish the vtkjs SEG adapters.
  3. Further develop the OHIF plugin framework and incorporate the progress we made on syncronisation.

Illustrations

Background and References