現在、SimpleITKは空間オブジェクトまたは空間オブジェクトの登録をサポートしていません。前回私が画像登録に空間オブジェクトをしたのはむしろ遅かったので、空間オブジェクトを画像に「レンダリング」して、画像から画像の登録を実行しました。このイメージを生成するために採用できるC++ ITKの例がいくつかあります(SpatialObjectToImage [0-3] .cxx)。
また、SimpleITKにはPhysicalPointImageSourceがあり、ポイントのイメージが生成されます。次に、オーバーロードされた演算子を使用して、球または超楕円の方程式を使用して、暗黙のオブジェクトの近似を生成することができます。 Hereが生成さマルシュナーロブ関数の例である:
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。あなたの答えはとても役に立ちます。 SpatialObjectをImageに変換できるSimpleITKのフィルタはありますか?その変換を行うことができるITKにはいくつかのフィルタがあります。 –