vtkImageReslice使用

切片提取
切片提取的关键是要给出ResliceAxes,实际上,它是一个4X4的矩阵。把这个矩阵看作是新坐标系在原坐标下的坐标表示,一个齐次坐标系。前三列分别表示新坐标系下x、y、z的向量坐标,第四列表示新坐标系下原点的坐标。需要注意到是x, y, z三个向量要符合右手法则

源码:

    reslice = vtkImageReslice()
    reslice.SetInputData(nrrdData)
    reslice.SetResliceAxes(resliceAxes)
    reslice.SetOutputExtent(extent)
    reslice.SetOutputDimensionality(2)
    reslice.SetInterpolationModeToLinear()
    reslice.Update()
    data = reslice.GetOutput()
    cols, rows, levels = data.GetDimensions()
    # print("维度:", cols, rows, levels)
    # 获取vtkDataArray类型变量
    sc = data.GetPointData().GetScalars()
    # 转为ndarray类型一维向量
    imageArr = numpy_support.vtk_to_numpy(sc)
    # 转维三维数据
    image3D = imageArr.reshape(levels, rows, cols)

矩阵计算举例:

如图,我以0点作为新的坐标系原点,0->2方向为x轴,0->4为y轴,0->5为z轴建系。通过两点计算向量,需要转化成方向向量。

取两维,设置02,04点的长度维xy的长度(setOutputExtent),于是就得到了0234这个切面


版权声明:本文为yinyiYi159原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。