Жесткая регистрация SimpleElastix 3D не может найти такое же изображение

Я некоторое время пытался получить базовую регистрацию, работающую с SimpleElastix, но я не могу заставить ее работать вообще, независимо от используемых настроек. Обратите внимание, что я пытаюсь сравнить SimpleElastix с другими методами, поэтому использование другой библиотеки не вариант.

Вот задача, которую я сейчас пытаюсь выполнить:

  1. Сделать 3D УЗИ плода (img_scan)
  2. Замаскируйте часть сканирования и примените жесткое преобразование (img_structure).
  3. Используйте SimpleElastix для регистрации img_structure в img_scan.

Так как img_structure был создан из img_scan, я точно знаю, что есть идеальное решение для регистрации. Однако, если img_structure не находится очень близко к своему исходному положению, SimpleElastix, кажется, вообще ничего не делает. Например, если я перевожу img_structure только по одной оси, это работает. Но если я поверну его только на 90 градусов, он выйдет из строя, хотя их центры в основном одинаковы. Чтобы уточнить, под отказом я подразумеваю, что он возвращает слегка преобразованную структуру img_structure, но далеко не фактическое решение]

Это основной код, с которого я начал:

      elastixImageFilter = sitk.ElastixImageFilter()
elastixImageFilter.SetFixedImage(fixed)
elastixImageFilter.SetMovingImage(moving)
elastixImageFilter.SetMovingMask(mask_moving)
elastixImageFilter.SetFixedMask(mask_fixed)
elastixImageFilter.SetParameterMap(sitk.GetDefaultParameterMap("rigid"))
elastixImageFilter.Execute()

Что я пробовал:

  1. С/без масок (или их комбинация)
  2. Различная максимальная длина шага
  3. Другой ImageSampler
  4. Аффинный вместо жесткого
  5. Различные оптимизаторы

Что я мог упустить?

0 ответов

Другие вопросы по тегам