Image 如何在SimpleTk中实现模型到图像的配准?

Image 如何在SimpleTk中实现模型到图像的配准?,image,itk,simpleitk,Image,Itk,Simpleitk,我安装了SimpleTk用于医学图像注册。它适用于3D CT/CT和3D CT/MRI图像配准。现在我想实现模型/图像注册。模型是一个球体。ITK中有一些空间对象,如长方体、椭圆,可用于模型/图像配准。但我在SimpleTk中找不到这些对象。我是否应该从模型中创建一个假图像,并使用图像/图像注册来模拟模型/图像注册 谢谢 David Lau将空间对象转换为图像,然后使用图像到图像的配准肯定是一种解决方案。配准精度在某种程度上取决于用于转换空间对象的图像栅格的分辨率。与其他图像相同的像素间距是一个

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

谢谢


David Lau

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

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

SimpleTk目前不支持空间对象或空间对象注册。上次我做空间对象到图像的配准时,速度相当慢,最后我将空间对象“渲染”到一个图像以执行图像到图像的配准。有几个C++ ITK例子(SuthalObjtotoMeto[0-3],CXX)可以用来生成这个图像。 或者,在SimpleTk中,有一个生成点图像的。然后,使用重载运算符和球体或超椭圆的方程可以生成所需隐式对象的近似值。是生成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))

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

SimpleTk目前不支持空间对象或空间对象注册。上次我做空间对象到图像的配准时,速度相当慢,最后我将空间对象“渲染”到一个图像以执行图像到图像的配准。有几个C++ ITK例子(SuthalObjtotoMeto[0-3],CXX)可以用来生成这个图像。 或者,在SimpleTk中,有一个生成点图像的。然后,使用重载运算符和球体或超椭圆的方程可以生成所需隐式对象的近似值。是生成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))

其他隐式函数也可以执行类似的操作。

谢谢Dzenan。你的回答很有帮助。SimpleIK中是否有可以将空间对象转换为图像的过滤器?ITK中有一些过滤器可以进行转换。谢谢Dzenan。你的回答很有帮助。SimpleIK中是否有可以将空间对象转换为图像的过滤器?ITK中有一些过滤器可以进行这种转换。