Как изменить Axis SimpleITK :: ImageSeriesWriter, используя? - PullRequest
0 голосов
/ 12 января 2019

SimpleITK :: ImageSeriesWriter по умолчанию нарезает заданный объем 3D по оси Z и записывает фрагменты 2D-изображений в режиме XY.

Как изменить ось так, чтобы вывод находился в режиме XZ или YZ?

Другими словами, если срезы оси Z по умолчанию находятся в осевом виде, как получить срезы коронального и сагиттального вида?

Я попробовал функцию GitHub: FNNDSC / med2image для вывода xyz. Но массив изображений написан вслепую, поэтому иногда X и Y транспонируются, или одна из осей переворачивается (переворачивается). Поэтому я чувствую необходимость написать свой собственный код, чтобы иметь полный контроль.

def slice(dcm_folder, output_stem):
    print('Reading Dicom directory:', path.abspath(dcm_folder))
    reader = sitk.ImageSeriesReader()

    dicom_names = reader.GetGDCMSeriesFileNames(dcm_folder)
    reader.SetFileNames(dicom_names)

    image = reader.Execute()

    # cast the bit depth to PNG compatible "unsigned char"
    image = sitk.Cast(sitk.RescaleIntensity(image), sitk.sitkUInt8)

    size = image.GetSize()
    print( "Image size:", size[0], size[1], size[2] )

    # need Z filenames to write
    series_filenames = list([output_stem + '-slice' + str(i).zfill(3) + '.png' for i in range(size[2])])

    print('Writing {} image slices'.format(size[2]))
    writer = sitk.ImageSeriesWriter()
    writer.SetFileNames( series_filenames )
    writer.Execute(image)

Приведенный выше код успешно запишет срезы оси Z. Как мне изменить код, чтобы я мог получить фрагменты еще двух представлений?

1 Ответ

0 голосов
/ 15 января 2019

Вы должны иметь возможность использовать PermuteAxesImageFilter для смены осей вашего тома. Вот документация для этого фильтра:

https://itk.org/SimpleITKDoxygen/html/classitk_1_1simple_1_1PermuteAxesImageFilter.html

Или, если вы предпочитаете процедурный интерфейс (как я), вы можете использовать функцию PermuteAxes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...