#c# #itk
#c# #itk
Вопрос:
Я использую фреймворк SimpleITK (x64) для C #.
После того, как я выполнил некоторые операции и фильтрацию, я получил кучу меток через LabelShapeStatisticsImageFilter, где меня интересует.
Как мне получить координаты центра конкретной метки? Когда я использую функцию GetCentroid
, я получаю частичные отрицательные результаты, и я не понимаю, как поступить с этими данными.
Заранее спасибо.
Комментарии:
1. Какова матрица косинусов расстояния и направления вашего изображения? Каково значение центроида?
2. используя GetOrigin(), GetSpacing(), вы можете определить, где находится центр тяжести в пространстве. посмотрите в руководстве по программному обеспечению ITK советы по работе в 3D (?) пространстве
Ответ №1:
вот мое решение:
roi — это an itk image file
, значение переднего плана равно 1.
import SimpleITK as sitk
foreground_value = 1
label_statistic = sitk.LabelIntensityStatisticsImageFilter()
label_statistic.Execute(roi == foreground_value)
center_gravity = label_statistic.GetCenterGravity(1)
center_gravity_coordiate = roi.TransformPhysicalPointToIndex(center_gravity)
Комментарии:
1. Это не работает, sitk. LabelIntensityStatisticsImageFilter нуждается в исходном изображении и изображении метки. Вы все равно должны использовать LabelShapeStatisticsImageFilter.
Ответ №2:
LabelShapeStatisticsImageFilter::GetCentroid
Метод возвращает точку в физическом пространстве, а не в пространстве индексов. При этом учитывается матрица происхождения, расстояния и направления изображения, что может привести к отрицательным значениям. Чтобы преобразовать результат в индексное пространство, вы можете использовать Image::TransformPhysicalPointToContinuousIndex
или Image::TransformPhysicalPointToIndex
по мере необходимости.
Ответ №3:
спасибо за ваши ответы и комментарии.
Я нашел решение проблемы в комментарии к примеру:
// NOTE: As of April 8, 2015 the filter does not work with non-zero origins
Итак, я сохранил исходные данные, установил для начала координат значение (0,0) — получил полезный центроид и изменил результат центроида для исходного начала координат, чтобы, наконец, снова установить его на прежнее значение.