SimpleITK: применить обратное преобразование

Недавно я начал использовать SimpleITK для регистрации изображений. Для моего текущего проекта мне нужно зарегистрировать рентгеновское изображение и изображение CT, а затем применить обратную матрицу к маске ROI, прослеженной на рентгеновском изображении.

Я получил обратную матрицу с этой строкой:

inverse_transform = final_transform.GetInverse()

Как я могу применить преобразование к маске ROI?

1 ответ

Решение

Добро пожаловать в SimpleITK!

Если предположить, что ваш рентгеновский снимок является фиксированным изображением при регистрации (CT - это движение), то результатом регистрации является преобразование точек преобразования из рентгеновского снимка в CT. Все, что вам нужно сделать, это повторно сэмплировать изображение маски ROI на КТ, используя обратное преобразование.

transformed_labels = sitk.Resample(xray_roi_mask, ct_image, inverse_transform, sitk.sitkNearestNeighbor, 0.0, #out of bounds pixel color xray_roi_mask.GetPixelID())

Последняя ячейка этого ноутбука Jupyter делает это.

Два дополнительных комментария:

  1. Не уверен, что вы подразумеваете под рентгеновской регистрацией. Это 2D/3D регистрация, которая в настоящее время не поддерживается SimpleITK, поэтому я предполагаю, что вы делаете 2D/2D или 3D/3D регистрацию.
  2. Поскольку вы новичок в SimpleITK, я бы порекомендовал ознакомиться с нашим основным репозиторием для ноутбуков Jupyter или более кратким руководством по IEEE ISBI'18, чтобы ознакомиться с инструментарием.
Другие вопросы по тегам