Dicomread a File and Dicomwrite it results in different outputs...
Mostrar comentarios más antiguos
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 comentarios
Rik
el 28 de Ag. de 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
el 28 de Ag. de 2020
Rik
el 28 de Ag. de 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
el 29 de Ag. de 2020
Ingo Hermann
el 29 de Ag. de 2020
Rik
el 29 de Ag. de 2020
Please post the solution as an answer and accept it. That way people with a similar problem can more easily find the solution.
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Convert Image Type en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!