1

我安装了 SimpleITK 用于医学图像配准。它非常适用于 3D CT/CT 和 3D CT/MRI 图像配准。现在我想实现模型/图像注册。模型是一个球体。在 ITK 中有空间对象,如 Box、Ellipse,可用于模型/图像配准。但我在 SimpleITK 中找不到这些对象。我应该从模型创建一个假图像并使用图像/图像配准来模拟模型/图像配准吗?

谢谢,

刘大卫

4

2 回答 2

0

SimpleITK 目前不支持空间对象或空间对象注册。上次我进行空间对象到图像配准时速度相当慢,我最终将空间对象“渲染”到图像以执行图像到图像配准。有几个 C++ ITK 示例 (SpatialObjectToImage[0-3].cxx) 可用于生成此图像。

或者在 SimpleITK 中有PhysicalPointImageSource,它生成点图像。然后使用重载运算符,球体或超椭圆方程可用于生成所需隐式对象的近似值。下面是正在生成的 Marschner Lobb 函数的示例:

def marschner_lobb(size=40, alpha=0.25, f_M=6.0):
  img = sitk.PhysicalPointSource( sitk.sitkVectorFloat32, [size]*3, [-1]*3, [2.0/size]*3)
  imgx = sitk.VectorIndexSelectionCast(img, 0)
  imgy = sitk.VectorIndexSelectionCast(img, 1)
  imgz = sitk.VectorIndexSelectionCast(img, 2)
  del img
  r = sitk.Sqrt(imgx**2 + imgy**2)
  del imgx, imgy
  pr = sitk.Cos((2.0*math.pi*f_M)*sitk.Cos((math.pi/2.0)*r))
  return (1.0 - sitk.Sin((math.pi/2.0)*imgz) + alpha*(1.0+pr))/(2.0*(1.0+alpha))

可以对其他隐式函数进行类似的操作。

于 2016-12-05T14:47:38.960 回答
0

将空间对象转换为图像,然后使用图像到图像配准当然是一种解决方案。配准精度在一定程度上取决于用于转换SpatialObject->的图像网格的分辨率Image。与其他图像相同的像素间距是合理的选择。

于 2016-12-02T19:55:09.300 回答