-
MR Image preprocessing (2) : N4 bias field correction전반적인 딥러닝 기법 2022. 2. 3. 20:47
2022.01.26 - [전반적인 딥러닝 기법] - MR Image preprocessing (1) : histogram equalization
MR Image 는 ( 이전 포스트에서 다뤘던 것처럼) natural image와는 다른 전처리 작업을 해줘야 하지만, CT image와도 약간 다른 전처리 과정을 가진다. 예를 들어 CT image에서는 픽셀 값을 기준으로 windowing (일종의 thresholding) 작업을 시켜 줄 수 있지만, windowing 기법은 hounsfield unit에 기반하기 때문에 MR image에서는 불가하다.
MR image는 크게 1) Registration, 2) Bias field correction, 3) intensity normalization을 가장 많이 해준다. 우선 registration에 대해 간략하게 설명하자면 이는 MR image를 align 시켜주는 기법이다. (특히 segmentaion 분야에서 ) 일관된 voxel wise function을 시켜주기 위해 registration 작업을 거쳐 준다고 한다. (
근데 이건 딥러닝이 해결해 줘야할 문제 아닌가..?)오늘 포스트에서는 bias field correction에 대해 설명하고자 한다.
N4 Bias Field Correction
본론부터 말하자면 MRI에서 bias field correction은 3D image의 intensity inhomogeneity를 고쳐준다. MR image들은 bias field distortion에 영향을 받을 수 있기 떄문에 같은 조직인데도 불구하고 intensity가 서로 달라지므로 이 기법이 필요하다. ---distortion이 생기는 이유는 imaging을 찍는 object의 모든 면에 대해 B1 field가 동일하게 도달하지 못하거나(표면에는 B1 field의 영향이 강하고, 내부 중앙은 B1 field 영향이 약해지는..) Receive coil 내에서 coil이 마찬가지로 object 모든 지점에 대해 동일하게 미치지 못할 수 있기 때문이다. 이때문에 부피가 큰 복부 MR image등에서 B field distortion이 더 크게 생긴다고 한다.---
특히 N4 bias field correction algorithm은 MRI image data에서 흔히들 bias 혹은 gain field라고 알려져 있는 low frequency intensity non-uniformity를 고쳐주는 방법이다. SimpleITK에서는 N4BiasFieldCorretionImageFilter를 제공하여 보다 쉽게 python 환경에서 implementation할 수 있다. 초기 input은 sitkFloat32(or 64)의 실제 pixel 값으로 이루어져 있으며, 추가적으로 "MaskImage" input을 넣어줄 수 있다. (MaskImage란 bias-field를 추정하기 위해 어떤 pixel들이 사용될건지를 명시하며 pixel들을 0에 가깝게 supression 시켜준다. 이떄 main input image와 mask image는 pixel간의 일대일대응을 위해 같은 크기의 physical space를 차지하고 있어야 한다. 아래 코드를 참고하여 나의 데이터에 적용시켜 보았다.
https://simpleitk.readthedocs.io/en/master/link_N4BiasFieldCorrection_docs.html
train_path = './T1_smth0/' file_list = [f for f in os.listdir(train_path) if 'nii' in f] output_path = './preprocessed/' file_list.sort() for files in file_list: inputimg = sitk.ReadImage(train_path+files) maskimg = sitk.OtsuThreshold(inputimg, 0, 1,200) corrector = sitk.N4BiasFieldCorrectionImageFilter() output = corrector.Execute(inputimg, maskimg) sitk.WriteImage(output, output_path+files)
3D brain image에 대해 n4 bias field correction을 적용해보았을때의 모습이다(왼쪽 : original, 오른쪽 : processed). 자세히 살펴보면 original data에서의 low frequency를 갖는 region들이 향상이 된 부분을 볼 수 있다. (그림의 A 부분 참고)
'전반적인 딥러닝 기법' 카테고리의 다른 글
Warning message 무시하는 방법 (0) 2022.03.28 Mixed Precision Training (0) 2022.02.16 MR Image preprocessing (1) : histogram equalization (0) 2022.01.26 resample이란? (0) 2021.11.03 Style Transfer과 Cycle Gan에 대하여 : "화풍 따라하기" (0) 2021.10.20