如何在 SimpleItk 中获取标签的中心坐标

How to get center coordinates of a label in SimpleItk

我正在为 C# 使用 SimpleITK 框架 (x64)。

在我做了一些操作和过滤后,我通过 LabelShapeStatisticsImageFilter 得到了一堆我感兴趣的标签。

如何获取特定标签的中心坐标? 当我使用函数 GetCentroid 时,我得到了部分负面结果,我不知道如何处理这些数据。

提前致谢。

LabelShapeStatisticsImageFilter::GetCentroid 方法 returns 物理 space 中的一个点,而不是索引 space 中的一个点。这考虑了可能导致负值的图像的原点、间距和方向矩阵。要将结果转换为索引 space,您可以根据需要使用 Image::TransformPhysicalPointToContinuousIndexImage::TransformPhysicalPointToIndex

感谢您的回答和评论。

我在示例的评论中找到了问题的解决方案:

 // NOTE: As of April 8, 2015 the filter does not work with non-zero origins

所以我保存了 Origin 数据,将 Origin 设置为 (0,0) - 得到了一个有用的 Centroid 并更改了原始 Origin 的 Centroid 结果,最终再次将其设置为以前的值。

这是我的解决方案:

roi,是一个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)