Dicomread a File and Dicomwrite it results in different outputs...
Mostra commenti meno recenti
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 Commenti
Rik
il 28 Ago 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
il 28 Ago 2020
Rik
il 28 Ago 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
il 29 Ago 2020
Ingo Hermann
il 29 Ago 2020
Rik
il 29 Ago 2020
Please post the solution as an answer and accept it. That way people with a similar problem can more easily find the solution.
Risposta accettata
Più risposte (0)
Categorie
Scopri di più su Convert Image Type in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!