SimpleITK は現在、空間オブジェクトまたは空間オブジェクトの登録をサポートしていません。前回空間オブジェクトから画像への登録を行ったときはかなり遅く、画像から画像への登録を実行するために空間オブジェクトを画像に「レンダリング」することになりました。このイメージの生成に使用できる C++ ITK の例 (SpatialObjectToImage[0-3].cxx) がいくつかあります。
あるいは、SimpleITK には、ポイントのイメージを生成するPhysicalPointImageSourceがあります。次に、オーバーロードされた演算子を使用し、球または超楕円の方程式を使用して、目的の暗黙的なオブジェクトへの近似を生成できます。生成されるマーシュナー ロブ関数の例を次に示します。
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))
他の陰関数についても同様の操作を行うことができます。