[ITK] image registration using ITK + Python

import SimpleITK as sitk
 
#read the images
fixed_image =  sitk.ReadImage('training_001_ct.mha', sitk.sitkFloat32)
moving_image = sitk.ReadImage('training_001_mr_T1.mha', sitk.sitkFloat32) 
 
#initial alignment of the two volumes
transform = sitk.CenteredTransformInitializer(fixed_image,
                                                moving_image,                                               sitk.Euler3DTransform(),                                               sitk.CenteredTransformInitializerFilter.GEOMETRY) #multi-resolution rigid registration using Mutual Informationregistration_method = sitk.ImageRegistrationMethod()registration_method.SetMetricAsMattesMutualInformation(numberOfHistogramBins=50)registration_method.SetMetricSamplingStrategy(registration_method.RANDOM)registration_method.SetMetricSamplingPercentage(0.01)registration_method.SetInterpolator(sitk.sitkLinear)registration_method.SetOptimizerAsGradientDescent(learningRate=1.0,                                                   numberOfIterations=100,                                                   convergenceMinimumValue=1e-6,                                                   convergenceWindowSize=10)registration_method.SetOptimizerScalesFromPhysicalShift()registration_method.SetShrinkFactorsPerLevel(shrinkFactors = [4,2,1])registration_method.SetSmoothingSigmasPerLevel(smoothingSigmas=[2,1,0])registration_method.SmoothingSigmasAreSpecifiedInPhysicalUnitsOn()registration_method.SetInitialTransform(transform)registration_method.Execute(fixed_image, moving_image) 
sitk.WriteTransform(transform, 'ct2mrT1.tfm')

댓글

이 블로그의 인기 게시물

파이썬으로 Homomorphic Filtering 하기

파이썬으로 2D FFT/iFFT 하기: numpy 버전