itk::NeighborhoodIterator обертка Python

Я использую оболочку ITK python (ITK не simpleITK) для создания прототипа автоматической обработки вывода µCT. Мне нужно вычислить карту толщины 3D-объекта, но эта функция не существует как есть в ITK. Конвейер прост:

  • Бинаризировать объект
  • Вычислить преобразование расстояния
  • Извлеките среднюю ось как карту расстояний local-max

Моя проблема в том, что itk::RegionalMaximaImageFilter ведет себя не так, как ожидалось (не сохраняет ветки). Поэтому я хотел написать пользовательскую функцию, которая проверяет, является ли центральный пиксель >= своей окрестности со скользящим ядром 3x3x3.

Моя идея состоит в том, чтобы воспользоваться преимуществами оптимизированного итератора itk::RegionalMaximaImageFilter (см. здесь). Однако, даже если это отлично работает с C++, мне не удастся найти обходной путь с Python (без обертывания кода c с помощью cython).


person Thomas Janvier    schedule 29.03.2018    source источник


Ответы (2)


Обертка Python предназначена не для доступа к итераторам, а для вызова существующих классов. Что вы можете сделать, так это написать класс на C++ и следовать этому, чтобы создать модуль, который можно обернуть и использовать из Python.

person Dženan    schedule 29.03.2018
comment
Хорошо, я так и подозревал... Спасибо - person Thomas Janvier; 29.03.2018

«Я хотел написать пользовательскую функцию, которая проверяет, находится ли центральный пиксель >= своей окрестности со скользящим ядром 3x3x3».

Это связано с расширением морфологии оттенков серого, которое является максимальным из всех пикселей в окрестности. В SimpleITK (поскольку вы отметили сообщение) вы можете просто написать:

isMaximumImg = (sitk.GrayscaleDilateImageFilter(inImg, 1) == inImg)

Это приведет к изображению, в котором, если пиксель равен максимальному в окрестности, то выходное значение равно 1, в противном случае оно будет равно 0. Это также должно быть реализовано с помощью ITK Python путем составления аналогичного конвейера фильтров. .

person blowekamp    schedule 02.04.2018