5분이면 ANTs 이미지로 등록 가능

개시하다


이 글은 SyN(Symmetric image Normalization method)을 목적으로 등록되었습니다. 이미지 등록은 두 이미지 사이의 적절한 변형 장소를 찾는 것입니다.

ANTsPy


등록, 분리 도구, 최고의 정밀도를 자랑하는 ANTs (Advanced Normalization Tools) 는 C++에서 썼습니다. ANTsPy는 ANTs의 wrapper Python 라이브러리입니다. 이번에는 이것을 사용합니다.

사용할 데이터


ANTsPy에 포함된 데이터를 사용합니다.
fix = ants.image_read(ants.get_ants_data('r16'))
mov = ants.image_read(ants.get_ants_data('r64'))
이미지는 아래의 2차원 뇌다.
ants.get_ants_data('r16') 추가 이미지의 경로를 반환합니다.
fix
ANTsImage
Pixel Type : float (float32)
Components : 1
Dimensions : (256, 256)
Spacing : (1.0, 1.0)
Origin : (0.0, 0.0)
Direction : [1. 0. 0. 1.]
ANTs의 입력과 출력은 ANTsImage 형식으로 진행되며 fix.numpy()처럼 쓰면 ndarray로 변환할 수 있습니다.

Registration


ANTs의 변형,
  • Translation(평행 이동)
  • Righid(회전과 평행 이동)
  • Affine(Righid 및 확대 축소)
  • 게다가
  • SyN
  • TVMSQ
  • 등등1. 이 글은 SyN을 사용하여 등록합니다.
    tx = ants.registration(fix, mov, type_of_transform = 'SyN', outprefix = 'SyN_r16_r64_')
    warp = tx['warpedmovout']
    tx
    
    {'warpedmovout': ANTsImage
    Pixel Type : float (float32)
    Components : 1
    Dimensions : (256, 256)
    Spacing : (1.0, 1.0)
    Origin : (0.0, 0.0)
    Direction : [1. 0. 0. 1.],
    'warpedfixout': ANTsImage
    Pixel Type : float (float32)
    Components : 1
    Dimensions : (256, 256)
    Spacing : (1.0, 1.0)
    Origin : (0.0, 0.0)
    Direction : [1. 0. 0. 1.],
    'fwdtransforms': ['SyN_r16_r64_1Warp.nii.gz', 'SyN_r16_r64_0GenericAffine.mat'],
    'invtransforms': ['SyN_r16_r64_0GenericAffine.mat',
    'SyN_r16_r64_1InverseWarp.nii.gz']}
    변형tx은 사전으로 값을 되돌려줍니다. tx['warpedmovout'] 이미지mov를 이동했습니다. ANTsImage는 이번에 사용한 변형장입니다. tx['fwdtransforms']에서 Affine 변환을 한 후 Syn에 따라 변형합니다.
    type_of_transform = 'SyN'fix의 CC 평균치warp

    Registration의 parameter


    파라메터로서 교체 횟수,metric, 샘플링, 다중 해상도 등을 변경할 수 있습니다. 구체적인 예를 참조하십시오.
    ANTs의 SyN의 metric은 기본적으로 MI로 설정되지만, 기존 논문2에 따라 CC를 사용합니다.
    tx = ants.registration(fix, mov, type_of_transform = 'SyN', syn_sampling = 4, shrinkfactors = (8,4,2,1), smoothingsigmas = (3,2,1,0), reg_iterations = (1000,1000,100,20), syn_metric = 'CC')
    

    이때 CC는 0.688입니다.

    총결산


    이 기사는 Syn 알고리즘의 사용 방법을 설명하고 이번에 2차원 이미지를 사용했지만 3차원 이미지도 마찬가지로 사용할 수 있다.

    Reference


    ANTsPy github
    공식git입니다. 지금부터 설치하세요.
    ANTsPy Documentation
    사람들에게 넓고 심오한 인상을 주다.
    ANTsPy Source code for ants.registration.interface
    이 상세한 정보는 C++ 코드에 있다는 것을 쉽게 이해할 수 있습니다.

    Appendix: Affine의 Parameter


    등록 과정에서 일반적으로 Affine 변환을 먼저 한 다음에 비선형 변환을 선택한다. 최초에 등록된 Affine 변환의 정밀도는 매우 중요하다. 그러나0.883 Affine을 선택하더라도 교체 횟수와 다해상도 변수를 변경할 수 없다.소스 코드로 볼 때 ANTsPy는 안 될 것 같아요.
    이 해결 방법으로 선택type_of_transform = 'Affine'. TRSAA는 Translation, Righid, Similarity, Affine, Affine 전환 전략이다. 앞부분 Translation, Righid, Similarity 부분은 파라메터를 변경할 수 없고 뒷부분 Affine, Affine 부분의parameter는 더욱 바뀔 수 있다.
    tx = ants.registration(fix, mov, type_of_transform = 'TRSAA', grad_step = 0.2, shrinkfactors = (8,4,2,1), smoothingsigmas =(3,2,1,0), reg_iterations = (500,500,200,50))
    

    이때 CC는 type_of_transform = 'TRSAA'입니다.
    Bspline의 변형에 따라 ANTs에서는 이루어지지 않았습니다. Elastix 등을 사용하세요B-spline registration~비선형 이미지 등록의 입문~
    Symmetric diffeomorphic image registration with cross-correlation: evaluating automated labeling of elderly and neurodegenerative brain  

    좋은 웹페이지 즐겨찾기