2016-12-02 37 views
1

我安裝了SimpleITK進行醫學圖像註冊。它適用於3D CT/CT和3D CT/MRI圖像配準。現在我想實現模型/圖像註冊。該模型是一個球體。在ITK中,有Box,Ellipse等空間對象可用於模型/圖像註冊。但我無法在SimpleITK中找到這些對象。我應該從模型創建一個假圖像並使用圖像/圖像註冊來模擬模型/圖像註冊?如何在SimpleITK中實現模型到圖像的註冊?

謝謝,

大衛劉

回答

0

轉換空間對象的圖像,並且然後使用圖像到圖像配準肯定一個解決方案。配準精度將在一定程度上取決於圖像網格的分辨率,用於轉換SpatialObject - >Image。與其他圖像相同的像素間距是合理的選擇。

+0

謝謝Dzenan。你的回答非常有幫助。 SimpleITK中是否有可以將SpatialObject轉換爲Image的過濾器? ITK中有一些可以進行轉換的過濾器。 –

0

SimpleITK目前不支持空間對象或空間對象註冊。上次我做空間對象到圖像配準時,速度相當慢,我最終將空間對象「渲染」爲圖像以執行圖像到圖像配準。有幾個C++ ITK示例(SpatialObjectToImage [0-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)) 

類似的操作可以用於其它隱函數來完成。

相關問題