如何在 SimpleItk 中获取标签的中心坐标
How to get center coordinates of a label in SimpleItk
我正在为 C# 使用 SimpleITK 框架 (x64)。
在我做了一些操作和过滤后,我通过 LabelShapeStatisticsImageFilter 得到了一堆我感兴趣的标签。
如何获取特定标签的中心坐标?
当我使用函数 GetCentroid
时,我得到了部分负面结果,我不知道如何处理这些数据。
提前致谢。
LabelShapeStatisticsImageFilter::GetCentroid
方法 returns 物理 space 中的一个点,而不是索引 space 中的一个点。这考虑了可能导致负值的图像的原点、间距和方向矩阵。要将结果转换为索引 space,您可以根据需要使用 Image::TransformPhysicalPointToContinuousIndex
或 Image::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)
我正在为 C# 使用 SimpleITK 框架 (x64)。
在我做了一些操作和过滤后,我通过 LabelShapeStatisticsImageFilter 得到了一堆我感兴趣的标签。
如何获取特定标签的中心坐标?
当我使用函数 GetCentroid
时,我得到了部分负面结果,我不知道如何处理这些数据。
提前致谢。
LabelShapeStatisticsImageFilter::GetCentroid
方法 returns 物理 space 中的一个点,而不是索引 space 中的一个点。这考虑了可能导致负值的图像的原点、间距和方向矩阵。要将结果转换为索引 space,您可以根据需要使用 Image::TransformPhysicalPointToContinuousIndex
或 Image::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)