|
"Eva " <kazaevan@uni-greifswald.de> wrote in message <i5gb6m$8ch$1@fred.mathworks.com>...
> Hello,
> I am using dicomread in MATLAB 7.0 to process medical MRI data. Although this command works fine for regular DICOM images with positive pixel values (magnitude reconstruction at the MRI scanner), it gives out wrong values for a set of data which contain positive and negative pixel values (real reconstruction at the MRI scanner). I think the problem emerges because the DICOM data are signed while dicomread reads them as uint16. Not only the minus sign is lost, but the values are wrong as well.
> I changed in the DICOM header the PixelRepresentation from 0 to 1 , hoping that dicom_read_native.m would treat the data as int16. The dicomread output were int16 indeed but again wrong positive or zero values.
> Can anybody suggest a way to extract the signed pixel values correctly?
> Thanks,
> Eva
Hi Eva,
It's quite possible that the values are stored in the file as unsigned values (as suggested by the PixelRepresentation value) but that some scaling was applied. Take a look at the RescaleSlope and RescaleIntercept values from DICOMINFO. These define a linear rescaling of pixel values (y=mx+b).
If that doesn't solve the discrepancy you're seeing, feel free to contact me directly.
Jeff Mather
Image Processing Group
MathWorks
|