1

医用画像登録用にSimpleITKをインストールしました。3D CT/CT および 3D CT/MRI 画像登録に非常に適しています。今、モデル/画像の登録を実装したいと考えています。モデルは球です。ITK には、モデル/画像の登録に使用できるボックス、楕円などの空間オブジェクトがあります。しかし、SimpleITK でそれらのオブジェクトを見つけることができません。モデルから偽の画像を作成し、画像/画像レジストレーションを使用してモデル/画像レジストレーションをシミュレートする必要がありますか?

ありがとう、

デビッド・ラウ

4

2 に答える 2

0

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))

他の陰関数についても同様の操作を行うことができます。

于 2016-12-05T14:47:38.960 に答える