Why Slicer automatically scales a MultiVolume by a factor

Hi !!!

I have a MRI sequence which consist of a number of images in the time. When I upload it to Slicer the pixel values are scaled with respect to the original values. I plotted the image with matplotlib in python and the values are different. I would like to upload my image without this scaling, is there ant way?

Thank you very much.

What kind of MRI image is this? What did you use to create it? What is the range of values that you see in Slicer and what range would you expect? What DICOM reader did you use when you displayed it using matplotlib?

This is a look locker sequence for CMR. I used pydicom to extract the matrix of the image. It seems that some times the values in Slicer are scaled by 8 or 16 with respect to the values I get with matplotlib.

  • I get with pydicom.

For clinical images, Slicer applies the appropriate intensity scaling. Pydicom just provides raw values that you need to rescale yourself.

Ok. Is there any way to don’t apply this scaling when loading images?

Or is this scaling value saved in some part of the VolumeNode?

Scaling is necessary, because this is how DICOM encodes values in byte or word data type. You can reverse engineer it from the appropriate DICOM fields.

In MRML nodes you can only change the displayed window/level (in the volume’s display node).

Why are you interested in the raw values? What are you trying to achieve?

I’m developing a module which extract the signal from a MRI ROI and fit some functions. The problem is that the fitting is sensitive to the change of value scales and I would like to this module works well in the most general cases. The fact is that different images from the same MR have different order of magnitude because of this auto-scaling.

That’s exactly why you need to take into account the scaling. You get meaningful/standardized values after you apply the proper scaling.