我安装了用于医学图像配准的SimpleITK。它对于3D CT/CT和3D CT/MRI图像配准非常有效。现在我想实现模型/图像配准。该模型是一个球体。在ITK中有空间对象,如Box,Ellipse,可用于模型/图像配准。但我在SimpleITK中找不到这些对象。我是否应该从模型创建一个假图像,并使用图像/图像配准来模拟模型/图像配准?
谢谢,
刘大伟
发布于 2016-12-03 03:55:09
将空间对象转换为图像,然后使用图像到图像的配准肯定是一种解决方案。套准精度在一定程度上取决于用于转换SpatialObject->Image的图像网格的分辨率。与其他图像相同的像素间距是一个合理的选择。
发布于 2016-12-05 22:47:39
SimpleITK目前不支持空间对象或空间对象注册。上一次我做空间对象到图像的配准时,它相当慢,我最终将空间对象“渲染”到一个图像上,以执行图像到图像的配准。有几个C++ ITK示例(SpatialObjectToImage0-3.cxx)可以用来生成此图像。
或者,在SimpleITK中有PhysicalPointImageSource,它生成点的图像。然后使用重载运算符,球体或超椭圆的方程可用于生成所需隐式对象的近似值。Here是生成的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))可以对其他隐式函数执行类似的操作。
https://stackoverflow.com/questions/40939765
复制相似问题