Dicomread a File and Dicomwrite it results in different outputs...
Show older comments
I have a very weird problem.
I open a DicomFile and save it without changing a thing, but when I look at the dcm in synedra view, they are different.
The original files goes from -4096 to 4096 but the save file only from 0 to 4096. I then tried to stretch the file by myself i.o.:
x = (2.*x-4096);
But this was also not working, dicomwrite cuts the values below 0...
dinfo = dicominfo('testDicom.dcm');
x = dicomread(dinfo);
dicomwrite(x, 'testDicom2.dcm', dinfo)
Any ideas?
Best Ingo
6 Comments
Rik
on 28 Aug 2020
The PixelData field generally stores positive integers, which are then modified with the RescaleSlope and RescaleIntercept fields to cover the entire range. When reading the file Matlab doens't apply this transformation and will keep the data in a uint16 format. That is probably the direction to investigate.
Did you convert to double before rescaling?
Ingo Hermann
on 28 Aug 2020
Rik
on 28 Aug 2020
Strange. If the fields are in dinfo they should be written normally.
Matlab doesn't have a great track record for writing dicom. Reading dicom is fine, if a bit on the slow side due to all the error mitigation.
Ingo Hermann
on 29 Aug 2020
Ingo Hermann
on 29 Aug 2020
Rik
on 29 Aug 2020
Please post the solution as an answer and accept it. That way people with a similar problem can more easily find the solution.
Accepted Answer
More Answers (0)
Categories
Find more on Convert Image Type in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!