У меня есть файл маски в формате nifti.nii
.Который имеет boolean
3d массив, состоящий из подключенных компонентов.Также поставляется с матрицей преобразования affine
в заголовке с дополнительной информацией.
У меня есть другая маска в формате dicom
.Который также является 3D-массивом.
Что я хочу сделать, так это вычислить счет костей, накладывая их nifti
mask на dicom
mask.Но так как маска nifti
и маска dicom
находятся в разных системах координат и имеют разный интервал между пикселями, я должен выровнять их, прежде чем вычислять счет костей.Для этого я использую simpleITK.Ниже приведен мой код
transform = sitk.CenteredTransformInitializer(ref_dicom_series,
nifti_mask,
sitk.Euler3DTransform(),
sitk.CenteredTransformInitializerFilter.GEOMETRY)
resampledMask = sitk.Resample(nifti_mask,
ref_dicom_series,
transform,
sitk.sitkNearestNeighbor,
0.0, #out of bounds pixel color
nifti_mask.GetPixelID())
После повторной выборки масштабированная маска имеет то же происхождение и интервал.Но когда я наношу корональные, осевые и сагиттальные срезы, наложив маски с повторной выборкой и с помощью дикомы, видно, что они не перекрываются.
Так что мой вопрос в том, как мне достичь своей цели.Пример кода будет высоко ценится.Спасибо