【问题标题】:Image registration with SimpleITK使用 SimpleITK 进行图像配准
【发布时间】:2018-05-09 16:32:12
【问题描述】:

我想做多模态图像配准(mri/ct)但我没有完全对齐的图像,用 simpleITK 获得的results 非常糟糕。即使我尝试对齐它们,results 仍然非常糟糕。 我能做些什么来解决这个问题?我的注册码如下:

import SimpleITK as sitk
def fusion(ct, mr):
    fixed = sitk.GetImageFromArray(ct, isVector=True)       
    moving = sitk.GetImageFromArray(mr, isVector=True) 


    numberOfBins = 24
    samplingPercentage = 0.10

    R = sitk.ImageRegistrationMethod()
    R.SetMetricAsMattesMutualInformation(numberOfBins)
    R.SetMetricSamplingPercentage(samplingPercentage,sitk.sitkWallClock)
    R.SetMetricSamplingStrategy(R.RANDOM)
    R.SetOptimizerAsRegularStepGradientDescent(1.0,.001,200)
    R.SetInitialTransform(sitk.TranslationTransform(fixed.GetDimension()))
    R.SetInterpolator(sitk.sitkLinear)

    #R.AddCommand( sitk.sitkIterationEvent, lambda: command_iteration(R) )

    outTx = R.Execute(fixed, moving)

    def get_result():                                                            
        resampler = sitk.ResampleImageFilter()                                                       
        resampler.SetReferenceImage(fixed);                                                          
        resampler.SetInterpolator(sitk.sitkLinear)    
        resampler.SetDefaultPixelValue(100)
        resampler.SetTransform(outTx)                                                                
        out = resampler.Execute(moving)                                                              
        simg1 = sitk.Cast(sitk.RescaleIntensity(fixed), sitk.sitkUInt8)                              
        simg2 = sitk.Cast(sitk.RescaleIntensity(out), sitk.sitkUInt8)                                
        cimg = sitk.Compose(simg1, simg2, simg1//2.+simg2//2.)  
        cimg = sitk.Compose(simg1, simg2, simg1//2.+simg2//2.)                                       
        return sitk.GetArrayFromImage(cimg)
        #sitk.Show( cimg, "ImageRegi

    return get_result()

【问题讨论】:

  • 您的注册是否收敛?能否请您包括优化过程的输出。

标签: algorithm image-processing registration simpleitk


【解决方案1】:

我认为您忘记在开始时对图像进行初始对齐。

trans = sitk.CenteredTransformInitializer(固定、移动、sitk.Euler3DTransform()、sitk.CenteredTransformInitializerFilter.GEOMETRY)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多