본문 바로가기
데이터과학/데이터 분석 실습

뇌영상 데이터 분석 - Create Brain Mask

by 경성현 2015. 7. 10.

MATLAB을 이용하여 뇌영상 데이터를 분석하다 보면, 뇌영역에 해당되는 부분의 마스크Mask를 만들어야 하는 경우가 있습니다. 이러한 경우에는 뇌영상 데이터 분석 - Matlab Index scheme 강의에서 처럼 MATLAB의 index 기능을 이용하면 회색질, 백색질, 뇌척수액 등에 해당되는 뇌 영역을 indices 값을 얻을 수 있고, 각각의 인덱스 값의 합집합을 이용하면 전체 뇌영역에 해당되는 마스크Mask를 얻을 수 있습니다.

위에 그림은 회색질(Grey Matter, GM), 백질(White Matter, WM), 뇌척수액(Cerebro-spinal Fluid, CSF)의 3차원 공간에서의 확률 분포를 보여주고 있습니다. 각각의 영상은 SPM (Statistical Parametric Mapping)을 설치하면 자동으로 설치되는 영상파일 입니다.

이제 다음의 MATLAB 명령어를 통해서 뇌마스크(Brain Mask)를 만들어 보겠습니다. 다음과 같이 한줄씩 MATLAB 명령창(Command Window)에 입력해 보시면서, 각각의 명령어가 의미하는바가 무엇인지 결과를 확인해 보시면 많은 공부가 될것 같습니다. 

>> % Specify file path >> fn_GM = fullfile(spm('dir'),'tpm', 'grey.nii'); >> fn_WM = fullfile(spm('dir'), 'tpm', 'white.nii'); >> fn_CSF = fullfile(spm('dir'), 'tpm', 'csf.nii'); >> >> % read volume header information >> vo_GM = spm_vol(fn_GM); >> vo_WM = spm_vol(fn_WM); >> vo_CSF = spm_vol(fn_CSF); >> >> % read 3D volume image data >> GM = spm_read_vols(vo_GM); >> WM = spm_read_vols(vo_WM); >> CSF = spm_read_vols(vo_CSF); >> >> % find indices of brain matter mask (idbrainmask) >> idx_gm = find(GM>0.5); % GM mask with Prob(GM>0.5); >> idx_wm = find(WM>0.5); % WM mask with Prob(WM>0.5); >> idx_csf = find(CSF>0.5); % CSF mask with Prob(CSF>0.5); >> >> % Set operation to compute union of two indices >> idbrainmask = union(idx_gm, idx_wm); >> idbrainmask = union(idbrainmask, idx_csf); >> >> % Fill ones for ROI >> IMG = zeros(size(GM)); % create zeros matrix >> IMG(idbrainmask) = 1; >> >> % Write 3D image >> vout = vo_GM; % copy header information >> vout.fname = 'brainmask.nii'; >> spm_write_vol(vout,IMG);

ex1.m

위의 프로그램을 실행하기 위해서는 확률맵(grey.nii, white.nii, csf.nii)이 필요한데, 이 파일들은 위에 설명되어 있듯이 SPM을 설치하고 MATLAB에서 Set Path로 SPM의 경로를 설정해 주어야 접근 가능한 파일들입니다.