以获取质心为例(以中心点为坐标原点,坐标含负数)
目录
目录
闭合曲面统计Closed surface statistics
3Dslicer
区段统计Segment statistics
这是一个用于计算与分割结构相关的统计数据的模块,例如体积、表面积、平均强度以及每个分割的各种其他指标。
标注图统计Labelmap statistics
标注图统计数据是使用段的二进制标注图表示形式计算的。
-
体素计数:片段中的体素数
-
体积 mm3 分段的体积(以 mm3 为单位)
-
体积 cm3 以 cm3 为单位的段的体积
-
质心:以 RAS 坐标表示的线段的质心
-
费雷特直径:可以包含整个段的球体的直径
-
表面积 mm2:以 mm2 为单位的段的表面积
-
圆度:段的圆度。根据球体的面积之比计算,从费雷特直径减去实际面积。值 1 表示球形结构。请参阅此处的详细定义。
-
平坦度:线段的平坦度。从第二个最小主力矩的比值的平方根乘以最小值计算。值 0 表示平面结构。请参阅此处的详细定义。
-
伸长率:刀头的伸长率。从第二大主力矩的平方根乘以第二小的比值计算。请参阅此处的详细定义。
-
主力矩:线段每个轴的主要惯性矩
-
主轴:线段旋转的主轴(Principal axis为径向坐标,Orientation about principal axis为轴向坐标)
-
定向边界框:包含线段的非轴对齐边界框。主轴方向用于定向边界框。
-
旋转主轴(或主方向)是相对于某个点(通常是质心)定义的惯性矩张量(在上一节中介绍)的特征向量。相应的特征值称为主惯性矩。由于惯性矩张量是相对于空间中的点定义的,因此主轴都通过该点
(通常是质心)。
-
径:半径,轴:中心轴,周:圆周
标量体积统计Scalar volume
-
体素计数:片段中的体素数
-
体积 mm3 分段的体积(以 mm3 为单位)
-
体积 cm3 以 cm3 为单位的段的体积
-
最小值:线段中的最小标量值
-
最大值:线段中的最大标量值
-
平均值:线段中的平均标量值
-
中位数:细分中的标量值中位数
-
标准偏差:线段中标量值的标准偏差(使用校正后的样本标准偏差公式计算)
闭合曲面统计Closed surface statistics
-
表面积 mm2:以 mm2 为单位的段的体积
-
体积 mm3 分段的体积(以 mm3 为单位)
-
体积 cm3 以 cm3 为单位的段的体积
python控制台
#used LabelmapSegmentStatistics to pull the centroid for each segment in the Segmentation
#Then I used the centroid coordinates to generate new spherical segments with a 1mm diameter (or radius?)
#These can be used with Segment statistics to query core lesion locations based on anatomical atlases
#用LabelmapSegmentStatistics为分割中的每个线段拉出质心,然后使用质心坐标生成直径为1 mm(或半径?)的新球形线段。
#这些数据可与分段统计数据结合使用,以根据解剖图谱查询核心位置
import numpy as np
import SegmentStatistics
segmentationNode = slicer.util.getNode("Segmentation")#
volume_node = slicer.util.getNode("Volume")
segmentation = segmentationNode.GetSegmentation()
segnum = segmentation.GetNumberOfSegments()
for i in range(segnum):
segment = segmentation.GetNthSegment(i)
segmentId = segmentationNode.GetSegmentation().GetSegmentIdBySegment(segment)
segmentName = segment.GetName()
segStatLogic = SegmentStatistics.SegmentStatisticsLogic()
segStatLogic.getParameterNode().SetParameter("Segmentation", segmentationNode.GetID())
segStatLogic.getParameterNode().SetParameter("LabelmapSegmentStatisticsPlugin.centroid_ras.enabled", str(True))
segStatLogic.computeStatistics()
stats = segStatLogic.getStatistics()
print(segmentName)
centroid_ras = stats[segmentId,"LabelmapSegmentStatisticsPlugin.centroid_ras"]
print(centroid_ras)
tumorCentroid = vtk.vtkSphereSource()
tumorCentroid.SetCenter(centroid_ras)
tumorCentroid.SetRadius(1)
tumorCentroid.Update()
CentroidSegmentName = segmentName + "-centroid"
segmentId = segmentationNode.AddSegmentFromClosedSurfaceRepresentation(tumorCentroid.GetOutput(), CentroidSegmentName, [1.0,0.0,0.0])
参考链接: