Exemplo n.º 1
0
(BSplineInterpolationOrder 1)

(FinalBSplineInterpolationOrder 1)

(DefaultPixelValue 0)

(WriteResultImage "false")

// The pixel type and format of the resulting deformed moving image
(ResultImagePixelType "float")
(ResultImageFormat "mnc")
"""

if __name__ == '__main__':
    with mincTools() as minc:
        minc.register_elastix("data/ellipse_0_blur.mnc",
                              "data/ellipse_1_blur.mnc",
                              output_par="test_4mm_0_1_par.txt",
                              output_xfm="test_4mm_0_1.xfm",
                              parameters=elx_par1)

        minc.grid_magnitude("test_4mm_0_1_grid_0.mnc",
                            "test_4mm_0_1_grid_m.mnc")

        minc.register_elastix("data/ellipse_0_blur.mnc",
                              "data/ellipse_1_blur.mnc",
                              output_par="test_4mm_0_1_2_par.txt",
                              output_xfm="test_4mm_0_1_2.xfm",
                              parameters=elx_par1,
                              init_xfm="test_4mm_0_1.xfm")
def generate_xfm_direct_minctracc(i,
                                  j,
                                  mri1,
                                  mri2,
                                  mask1,
                                  mask2,
                                  seg1,
                                  seg2,
                                  output_base,
                                  step=2,
                                  baa=False):
    with mincTools(verbose=2) as minc:
        # normalize xfms
        minc.non_linear_register_full(mri1,
                                      mri2,
                                      output_base + '_map.xfm',
                                      level=step,
                                      source_mask=mask1,
                                      target_mask=mask2)

        # resample mris
        minc.resample_smooth(mri2,
                             minc.tmp('mri2.mnc'),
                             transform=output_base + '_map.xfm',
                             invert_transform=True)
        # resample segs
        minc.resample_labels(seg2,
                             minc.tmp('seg2.mnc'),
                             transform=output_base + '_map.xfm',
                             invert_transform=True,
                             baa=baa)
        minc.resample_labels(mask2,
                             minc.tmp('mask2.mnc'),
                             transform=output_base + '_map.xfm',
                             invert_transform=True,
                             baa=baa)
        # calculate CC, MI
        cc = minc.similarity(mri1,
                             minc.tmp('mri2.mnc'),
                             ref_mask=mask1,
                             sample_mask=minc.tmp('mask2.mnc'),
                             method='cc')
        nmi = minc.similarity(mri1,
                              minc.tmp('mri2.mnc'),
                              ref_mask=mask1,
                              sample_mask=minc.tmp('mask2.mnc'),
                              method='nmi')
        ncc = minc.similarity(mri1,
                              minc.tmp('mri2.mnc'),
                              ref_mask=mask1,
                              sample_mask=minc.tmp('mask2.mnc'),
                              method='ncc')
        msq = minc.similarity(mri1,
                              minc.tmp('mri2.mnc'),
                              ref_mask=mask1,
                              sample_mask=minc.tmp('mask2.mnc'),
                              method='msq')
        # calculate label overlap
        gtc = minc.label_similarity(seg1, minc.tmp('seg2.mnc'), method='gtc')

        # write out result
        with open(output_base + '_similarity.txt', 'w') as f:
            f.write("{},{},{},{},{},{},{}\n".format(i, j, cc, ncc, nmi, msq,
                                                    gtc))
def generate_xfm_direct_elastix_mi(i,
                                   j,
                                   mri1,
                                   mri2,
                                   mask1,
                                   mask2,
                                   seg1,
                                   seg2,
                                   output_base,
                                   baa=False,
                                   step=2):
    with mincTools(verbose=2) as minc:

        param_mi = """
(FixedInternalImagePixelType "float")
(MovingInternalImagePixelType "float")
(FixedImageDimension 3)
(MovingImageDimension 3)
(UseDirectionCosines "true")

(ShowExactMetricValue "false")

(Registration "MultiResolutionRegistration")
(Interpolator "BSplineInterpolator" )
(ResampleInterpolator "FinalBSplineInterpolator" )
(Resampler "DefaultResampler" )

(FixedImagePyramid  "FixedSmoothingImagePyramid")
(MovingImagePyramid "MovingSmoothingImagePyramid")

(Optimizer "AdaptiveStochasticGradientDescent")
(Transform "BSplineTransform")
(Metric "AdvancedMattesMutualInformation")

(FinalGridSpacingInPhysicalUnits 4)

(HowToCombineTransforms "Compose")

(ErodeMask "false")

(NumberOfResolutions 3)

(ImagePyramidSchedule 8 8 8  4 4 4 2 2 2)

(MaximumNumberOfIterations 2000 2000 2000 )
(MaximumNumberOfSamplingAttempts 3)

(NumberOfSpatialSamples 1024 1024 4096 )

(NewSamplesEveryIteration "true")
(ImageSampler "Random" )

(BSplineInterpolationOrder 1)

(FinalBSplineInterpolationOrder 3)

(DefaultPixelValue 0)

(WriteResultImage "false")

// The pixel type and format of the resulting deformed moving image
(ResultImagePixelType "float")
(ResultImageFormat "mnc")
"""
        # normalize xfms
        minc.register_elastix(mri1,
                              mri2,
                              output_xfm=minc.tmp('transform.xfm'),
                              source_mask=mask1,
                              target_mask=mask2,
                              parameters=param_mi)
        minc.xfm_normalize(minc.tmp('transform.xfm'),
                           mri1,
                           output_base + '_map.xfm',
                           step=step)

        # resample mris
        minc.resample_smooth(mri2,
                             minc.tmp('mri2.mnc'),
                             transform=output_base + '_map.xfm',
                             invert_transform=True)
        # resample segs
        minc.resample_labels(seg2,
                             minc.tmp('seg2.mnc'),
                             transform=output_base + '_map.xfm',
                             invert_transform=True,
                             baa=baa)
        minc.resample_labels(mask2,
                             minc.tmp('mask2.mnc'),
                             transform=output_base + '_map.xfm',
                             invert_transform=True,
                             baa=baa)
        # calculate CC, MI
        cc = minc.similarity(mri1,
                             minc.tmp('mri2.mnc'),
                             ref_mask=mask1,
                             sample_mask=minc.tmp('mask2.mnc'),
                             method='cc')
        nmi = minc.similarity(mri1,
                              minc.tmp('mri2.mnc'),
                              ref_mask=mask1,
                              sample_mask=minc.tmp('mask2.mnc'),
                              method='nmi')
        ncc = minc.similarity(mri1,
                              minc.tmp('mri2.mnc'),
                              ref_mask=mask1,
                              sample_mask=minc.tmp('mask2.mnc'),
                              method='ncc')
        msq = minc.similarity(mri1,
                              minc.tmp('mri2.mnc'),
                              ref_mask=mask1,
                              sample_mask=minc.tmp('mask2.mnc'),
                              method='msq')
        # calculate label overlap
        gtc = minc.label_similarity(seg1, minc.tmp('seg2.mnc'), method='gtc')

        # write out result
        with open(output_base + '_similarity.txt', 'w') as f:
            f.write("{},{},{},{},{},{},{}\n".format(i, j, cc, ncc, nmi, msq,
                                                    gtc))
def generate_xfm_direct_ANTS_MI(i,
                                j,
                                mri1,
                                mri2,
                                mask1,
                                mask2,
                                seg1,
                                seg2,
                                output_base,
                                baa=False,
                                step=2):
    with mincTools(verbose=2) as minc:
        # normalize xfms
        param_mi = {
            'cost_function': 'MI',
            'iter': '40x40x40x00',
            'cost_function_par': '1,32'
        }

        minc.non_linear_register_ants(mri1,
                                      mri2,
                                      minc.tmp('transform.xfm'),
                                      target_mask=mask2,
                                      parameters=param_mi)
        minc.xfm_normalize(minc.tmp('transform.xfm'),
                           mri1,
                           output_base + '_map.xfm',
                           step=step)

        # resample mris
        minc.resample_smooth(mri2,
                             minc.tmp('mri2.mnc'),
                             transform=output_base + '_map.xfm',
                             invert_transform=True)
        # resample segs
        minc.resample_labels(seg2,
                             minc.tmp('seg2.mnc'),
                             transform=output_base + '_map.xfm',
                             invert_transform=True,
                             baa=baa)
        minc.resample_labels(mask2,
                             minc.tmp('mask2.mnc'),
                             transform=output_base + '_map.xfm',
                             invert_transform=True,
                             baa=baa)
        # calculate CC, MI
        cc = minc.similarity(mri1,
                             minc.tmp('mri2.mnc'),
                             ref_mask=mask1,
                             sample_mask=minc.tmp('mask2.mnc'),
                             method='cc')
        nmi = minc.similarity(mri1,
                              minc.tmp('mri2.mnc'),
                              ref_mask=mask1,
                              sample_mask=minc.tmp('mask2.mnc'),
                              method='nmi')
        ncc = minc.similarity(mri1,
                              minc.tmp('mri2.mnc'),
                              ref_mask=mask1,
                              sample_mask=minc.tmp('mask2.mnc'),
                              method='ncc')
        msq = minc.similarity(mri1,
                              minc.tmp('mri2.mnc'),
                              ref_mask=mask1,
                              sample_mask=minc.tmp('mask2.mnc'),
                              method='msq')
        # calculate label overlap
        gtc = minc.label_similarity(seg1, minc.tmp('seg2.mnc'), method='gtc')

        # write out result
        with open(output_base + '_similarity.txt', 'w') as f:
            f.write("{},{},{},{},{},{},{}\n".format(i, j, cc, ncc, nmi, msq,
                                                    gtc))
def generate_xfm_model(i,
                       j,
                       xfm1,
                       xfm2,
                       mri1,
                       mri2,
                       mask1,
                       mask2,
                       seg1,
                       seg2,
                       output_base,
                       step=2,
                       baa=False):
    with mincTools(verbose=2) as minc:
        # all xfms are mapping subject to common space, so to map one subject to another it will be xfm1 * xfm2^1
        minc.xfminvert(xfm2, minc.tmp('xfm1.xfm'))
        # concatenate xfms
        minc.xfmconcat([xfm1, minc.tmp('xfm1.xfm')],
                       minc.tmp('xfm1_dot_xfm2_inv.xfm'))
        # normalize xfms
        minc.xfm_normalize(minc.tmp('xfm1_dot_xfm2_inv.xfm'),
                           mri1,
                           output_base + '_map.xfm',
                           step=step)

        # resample mris
        minc.resample_smooth(mri2,
                             minc.tmp('mri2.mnc'),
                             transform=output_base + '_map.xfm',
                             invert_transform=True)
        # resample segs
        minc.resample_labels(seg2,
                             minc.tmp('seg2.mnc'),
                             transform=output_base + '_map.xfm',
                             invert_transform=True,
                             baa=baa)
        minc.resample_labels(mask2,
                             minc.tmp('mask2.mnc'),
                             transform=output_base + '_map.xfm',
                             invert_transform=True,
                             baa=baa)
        # calculate CC, MI
        cc = minc.similarity(mri1,
                             minc.tmp('mri2.mnc'),
                             ref_mask=mask1,
                             sample_mask=minc.tmp('mask2.mnc'),
                             method='cc')
        nmi = minc.similarity(mri1,
                              minc.tmp('mri2.mnc'),
                              ref_mask=mask1,
                              sample_mask=minc.tmp('mask2.mnc'),
                              method='nmi')
        ncc = minc.similarity(mri1,
                              minc.tmp('mri2.mnc'),
                              ref_mask=mask1,
                              sample_mask=minc.tmp('mask2.mnc'),
                              method='ncc')
        msq = minc.similarity(mri1,
                              minc.tmp('mri2.mnc'),
                              ref_mask=mask1,
                              sample_mask=minc.tmp('mask2.mnc'),
                              method='msq')
        # calculate label overlap
        gtc = minc.label_similarity(seg1, minc.tmp('seg2.mnc'), method='gtc')

        # write out result
        with open(output_base + '_similarity.txt', 'w') as f:
            f.write("{},{},{},{},{},{},{}\n".format(i, j, cc, ncc, nmi, msq,
                                                    gtc))
Exemplo n.º 6
0
#! /usr/bin/env python

from iplMincTools import mincTools

if __name__ == '__main__':
    m = mincTools()
    m.non_linear_register_increment('ellipse_1.mnc',
                                    'ellipse_2.mnc',
                                    'test.xfm',
                                    source_mask='mask.mnc',
                                    target_mask='mask.mnc',
                                    level=8)