๐ฉปfMRI
4. Preprocessing
date
Aug 19, 2023
slug
fmri-glm-4
author
status
Public
tags
NI-edu
Dartbrain
summary
type
Post
thumbnail
category
๐ฉปfMRI
updatedAt
Aug 19, 2023 05:38 AM
์์ผ๋ก ํ์ ๋ 5. Modeling Single Subject Data~ ๋ถ๋ถ์์๋ ์ ์ฒ๋ฆฌ์ ๊ด๋ จ๋ ๋ด์ฉ์ด ์์
Temporal preprocessing
Slice-time correction
- MRI scan sequence๋ ๋์ volume์ sliceํด์ ์๋ฅธ๋ค๋ ํน์ง์ ๊ฐ์ง๊ณ ์์
- ์ธต๋ณ๋ก sliceํด์ ์ดฌ์ํ๋ค๋ณด๋, slice ๋ณ๋ก ์์ฃผ ์ฝ๊ฐ์ ์๊ฐ ์ฐจ๋ฅผ ์ง๋
- ์๋์ ์์๋ ๋ ์ ์ฒด ์ดฌ์ ์๊ฐ์ด 2์ด์ผ ๋, 40๊ฐ์ slice๋ฅผ ์ดฌ์ํ๋ค๋ฉด, ๊ฐ slice๋ 0.05 ์ด๋ฅผ ์ง๋ ๊ฒ์(0, 0.05, 0.10, โฆ , 1.95)
TR = 2
n_slices = 40
slice_onsets_within_volume = np.linspace(0, TR, n_slices, endpoint=False)
# np.arange(0, TR, TR / 40) ๋ ์๋ํจ
>>> [0. 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65
0.7 0.75 0.8 0.85 0.9 0.95 1. 1.05 1.1 1.15 1.2 1.25 1.3 1.35
1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95]
High-pass filtering of fMRI data
- fMRI ๋ฐ์ดํฐ๋ฅผ ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋จ
- ์ ์ฒ๋ฆฌ ๊ณผ์ ์ GLM ๋ชจ๋ธ ์ ์ ์์ ํ๊ธฐ
- ์ ์ฒ๋ฆฌ ํ์ง ์๊ณ , GLM ๋ชจ๋ธ์ noise predictors๋ฅผ ๋ฃ์ด์ ๋ชจ๋ธ๋งํ๊ธฐ
[๋ฐฉ๋ฒ1]
- ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ๋ณ๋๋ก ํ๋ ๋ฐฉ๋ฒ์์๋, โgaussian weighted running line smootherโ์ ์ฌ์ฉํด high-pass filter๋ฅผ ์งํํ์ฌ ์ค์ฐจ๋ฅผ ์ค์ผ ์ ์์
- fMRI ์ ํธ๋ ์ง๋์๊ฐ ๋ฎ์ ์ ํธ(drift)๋ก ์ธํด ์์ธก ๋ชจ๋ธ์ด ์ ์ข์ ๊ฒฐ๊ณผ๋ฅผ ๋ณ์ ์ ์์
- ์ง๋์๊ฐ ๋ฎ์ ์ ํธ๋ฅผ ์ ๊ฑฐํ๊ณ ์ง๋์๊ฐ ๋์ ์ ํธ๋ง ๋จ๊ธฐ๋ ๊ณผ์ ์ high-pass filter๋ผ๊ณ ๋ถ๋ฆ

- ์ด ๋, gaussial filter์ ๊ธฐ์ค์ high-pass filter๋ฅผ ํจ


[๋ฐฉ๋ฒ2]
- GLM ๋ชจ๋ธ์ noise predictors๋ฅผ ๋ฃ์ด์ ๋ชจ๋ธ๋งํ๋ ๋ฐฉ๋ฒ์์๋ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ค์ ์ธ์
- ์ด๋ฐ ์์ โnuisance regressionโ์ด๋ผ๊ณ ํจ
- ์์์ ์ฌ์ฉํ high-pass filter์ ๋์ผํ ํจ๊ณผ๋ฅผ ๊ฐ๊ฒ ํ๊ธฐ ์ํด์, ๋ค์ํ ์ง๋์์ ํด๋นํ๋ cosine ํจ์ ์งํฉ์ ํ์ฉํจ
Spatial preprocessing
Motion correction / realignment
- fMRI ์ดฌ์ ์ค์ ์ค์บ๋ ์์์ ์ฌ๋์ด ๋ฏธ์ธํ๊ฒ ์์ง์ผ ์ ์์
- ์ด๋ฌํ ์์ง์์ ์กฐ์ ํ๋ ๊ณผ์ ์ผ๋ก, ์ ์ฒ๋ฆฌ ๋จ๊ณ์์ ๊ฐ์ฅ ์ค์ํ ๋จ๊ณ์
ย
- ์ฐ์ ์ฒซ ๋ฒ์งธ ํน์ ์ค๊ฐ ๋ฒ์งธ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ณผ๋ฅจ์ ์ง์ ํจ
Affine registrations
- ์ด๋ฏธ์ง๋ฅผ ์กฐ์ ํ๋ ๊ฒ์ affine matrix์ ์ฐ๊ด์ด ์์
- ๋ง์ฝ superior โ inferior๋ก 3 voxels๋งํผ ์๋๋ก ์ด๋ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด affine matrix๋ฅผ ์์ง์ด๋ฉด ๋จ
A_example = np.array([
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 3],
[0, 0, 0, 1]
])
coord = np.array([0, 0, 0, 1]) # ์ค๊ฐ ์ขํ(๋ผ๊ณ ๊ฐ์ )
corr_coord = A_example @ coord
print(corr_coord[:3])
>>> [0 0 3]- ํ์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ์ด affine matrix๋ฅผ ์์ง์ด๋ฉด ๋จ
ย
Spatial filtering (blurring/smoothing)
- ์ด์ ์ temporal preprocessing์์ ๋ฎ์ ์ง๋์ ์ ํธ๋ ๋ฒ๋ฆผ(high-pass filtering)
- spatial preprocessing์์๋ ๋์ ์ง๋์ ์ ํธ๋ฅผ ๋ฒ๋ฆผ์ผ๋ก์จ blurring/smoothing์ ํ ์ ์์
- ์ด ๋, gaussial filter์ ๊ธฐ์ค์ low-pass filter๋ฅผ ํจ

from scipy.ndimage import gaussian_filter
fwhm = 10
voxelsize = 6
sigma = fwhm / (np.sqrt(8 * np.log(2)) * voxelsize)
smoothed_vol = gaussian_filter(vol, sigma=sigma)ย