5분이면 ANTs 이미지로 등록 가능
5752 단어 PythonANTsPyregistrationitkSYN
개시하다
이 글은 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의 변형,
등록, 분리 도구, 최고의 정밀도를 자랑하는 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의 변형,
fix = ants.image_read(ants.get_ants_data('r16'))
mov = ants.image_read(ants.get_ants_data('r64'))
fix
ANTs의 변형,
tx = ants.registration(fix, mov, type_of_transform = 'SyN', outprefix = 'SyN_r16_r64_')
warp = tx['warpedmovout']
tx
{'warpedmovout': ANTsImagePixel 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 ↩
Reference
이 문제에 관하여(5분이면 ANTs 이미지로 등록 가능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/39MIFU/items/717e5a8ec38123884e79
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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 ↩
Reference
이 문제에 관하여(5분이면 ANTs 이미지로 등록 가능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/39MIFU/items/717e5a8ec38123884e79
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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))
Reference
이 문제에 관하여(5분이면 ANTs 이미지로 등록 가능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/39MIFU/items/717e5a8ec38123884e79텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)