Я действительно работаю с данными dicom. Следующий код описывает, как я читаю и преобразовываю файлы. В этом случае я беру только центральный срез:
dcm_list = glob('./folder_path' + '/*.dcm')
imgp = np.zeros((len(dcm_list), 512, 512), dtype='float32')
z = []
# For each dcm file, get the corresponding slice, normalize HU values, and store the Z position of the slice
for i, f in enumerate(dcm_list):
dcm = dcmread(f)
imgp[i] = float(dcm.RescaleSlope) * dcm.pixel_array.astype('float32') + float(dcm.RescaleIntercept)
z.append(dcm.ImagePositionPatient[-1])
imgp = imgp[np.argsort(z)]
print(imgp.shape)
index = int(imgp.shape[0]/2) # take central slice
im = imgp[index,:,:]# elemento centrale della serie letta; è gia in hu value
im = np.clip(im, -1024, 3071) # clip values not in range [-1024,3071]
После этого я визуализирую im
, но результат полностью отличается от визуализации с помощью таких инструментов, как Horos. Я также сообщаю код для визуализации:
im = (im + 1024.) / (3071 + 1024.) # 0-1
plt.imshow(im, cmap='gray' ); plt.title('central slice');
Я хотел бы знать, неправильный ли мой код, и в случае, если я сделал не так, поскольку я не понимаю причин этих различий.