0

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

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

1 回答 1

0

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

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

于 2018-10-24T12:30:58.590 回答