Question about Nifti stategy for derivated value

Hi there,

I have a question for Orthanc teams, I saw the new plugin to generate Nifti files from dicoms, which is a real good feature of Orthanc.

The challenge I want to raise here is that Dicom => Nifti conversion is not always expected to be as raw Dicom value. The issue is especially true for PET series.

In PET series, dicom matrix are labelled into different kind of value depending of the manufacturer : Bqml, SUV, Counts…

Usually to perform image processing for PET series we translate the matrix into SUV (or SUL) unit.

I think the issue raised here is maybe not specific only to PET series, the more global question is how to export images to Nifti with applying an image normalization, stantardization etc…

it’s an open question about the best strategy.

I saw several to think about the problem :

  • Is there a way to supercharge the NIFTI generation, adding custom logic to modify the image matrix before NIFTI generation. Can we build some custom plugin to calculate the SUV matrix and then benefit to NIFTI output ? I think one issue will appear, the actual implementation is Nifti1 which is 16 bits encoding while custom matrix (like SUV) will be in float value (32 bits) so probably the custom export will need an Nifti2 export pipeline.

  • Generate Nifti using a python plugin, by using the /numpy API to get raw value and then use python to generate the final Nifti with custom logic. This way the default generate Nifti of orthanc remains only on exporting raw value and higher level logic will use a different pipeline but yet could be integrated to Orthanc as a python plugin

  • Say “this is not a PACS job to handle such image transformation” and so keep a post processing pipeline outside orthanc.

I wanted to have opinions about the best way to address this challenge.

This will help us to define the best way to contribute, we should be able to generate this PET export pipeline as we already have the SUV calculation logic that we contributed to OHIF (https://github.com/cornerstonejs/calculate-suv) and so we want to bring into (or near) orthanc ecosystem.

Best regards,

Salim

Hi Salim,

Thanks for your interest and for sharing your insights!

NIfTI support is currently under intensive development. For the moment, only rescale slope/intercepts are taken into consideration by the plugin. PET data is clearly in the target (including SUV computations according to the related BIDS standard), but this is still in prototyping.

Announcements will be made on the forum once I am ready to accept external contributions to this plugin, which is clearly not possible right now.

Note that we could certainly discuss possible scientific collaborations around this topic if this is of interest to you.

Kind Regards,
Sébastien-

Dear Sebastien,

Thank you for the answer, that’s really a good news your working on it,

Just for information, you have our implementation of SUV calculation here : https://github.com/wendyrvllr/Dicom-To-CNN/blob/56619b47877ad912d7fe33616d6596ce542705bb/dicom_to_cnn/model/reader/SeriesPT.py#L90 (that OHIF had reproduced in the repo i mentioned)
I have also a testing dataset of the different scenario of SUV calculation i have found in my data (different manufacturer etc) the days you will want to validate the SUV calculation against a real dataset.

Yes sure if you have idea of scientific collaboration around this, it will get my intereset (i don’t see so much on just the SUV calculation, but maybe if we describe a full automated pipeline for algorithm training on PET/CT)

Thanks again for this amazing new feature of Orthanc (another one).

Best regards,

Salim