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