How to get same voxel values in Matlab as in Slicer

Thanks a lot. It works now. I should have read about it.

Just as I am writing here…somebody can me explain why the intensity in the slicer 3D is different than for example in Matlab? Where I can read about it? Thank!

Voxel value depends on imaging modality. For example, in CT voxel values are in Hounsfield unit.

Have you tried Segment Editor? With that you won’t need things like manual model making.

Do you run your Matlab functions using MatlabBridge? If yes, then Slicer takes care of image scaling, such as converting to Hounsfield unit; and has many other advantages.

I am writing a program which is apart from 3D slicer. Just I was wondering why it is difference. For example the gray level intensity in Matlab is between 0-32767 for the voxel while 3D slicer shows me -8604.1 to 24163. Does it actually connected to the RescaleIntercept value which seems to be the same as minimum value which shows 3D slicer -8.6041e+03?

It seems that Matlab you get the stored value of the voxel, not the actual physical value. To compute the physical value, you need to apply linear scaling (defined by rescale intercept and slope fields) or modality LUT transformation. For display, you need to apply additional transformation (either linear scaling by window width/center, or arbitrary transformation defined by VOI LUT). Additional transforms may be defined by photometric interpretation or presentation LUT.

See exact specification in the DICOM standard. Slicer can use GDCM or DCMTK libraries for image loading, which implement the intensity scaling. Some information about scaling can be found on GDCM website.

1 Like

Yes, I found something similar. Thanks!

Matlab