fireholder.github.io

伪文艺女青年,状高冷,话少爱热闹


Blog | Archive | About

Neuro Image Preprocessing using FSL

30 May 2018 | neuroscience

本笔记主要记录神经图像的大致预处理流程与使用FSL库进行处理的方法。

FSL(FMRIB Software Library)

FSL is a comprehensive library of analysis tools for FMRI, MRI and DTI brain imaging data.

相关处理(structural MRI)

预处理

我们将神经图像的预处理分为4个步骤:

library(fslr)
nim=readNIfTI("~/公共/dataset/113-01-MPRAGE.nii.gz", reorient=FALSE) 
options(fsl.path="/opt/fsl")
have.fsl()

Inhomogeneity correction

The probability distribution function of tissue class intensities should not depend on the spatial localization of the tissue

fslr::fsl_biascorrect calls fast from FSL which incorporates the bias field correction by Guillemaud and Brady This takes a while: be patient

fast_img = fsl_biascorrect(nim, retimg=TRUE)
orthographic(nim)
orthographic(fast_img)

Skull stripping

Skull-stripping removes extra-cerebral voxels from the volume, automatic segmentation of brain & non-brain tissue

原理

  1. histogram-based threshold t estimation
  2. t-based binarization center of gravity (COG)
  3. spherical surface initialization

FSL’s Brain Extraction Tool (BET) can be used for skull stripping BET: fast, robust, and popular

fslr::fslbet is used to call the FSL commands

bet2: does brain extraction

bet: does brain extraction with additional options

bet_fast = fslbet(infile=fast_img, retimg=TRUE)
bet_fast_mask <- niftiarr(bet_fast, 1)
is_in_mask = bet_fast>0
bet_fast_mask[!is_in_mask]<-NA
orthographic(bet_fast)
orthographic(fast_img,bet_fast_mask)

改进

Possible solution:

cog = cog(bet_fast, ceil=TRUE)
cog = paste("-c", paste(cog, collapse= " "))
bet_fast2 =fslbet(infile=fast_img,retimg=TRUE,opts=cog)
orthographic(bet_fast2)

Registration

图像配准:在做医学图像分析时 ,经常要将同一患者几幅图像放在一起分析 ,从而得到该患者的多方面的综合信息 ,提高医学诊断和治疗的水平。对几幅不同的图像作定量分析 ,首先要解决这几幅图像的严格对齐问题 ,这就是我们所说的图像的配准。医学图像配准 [1] 是指对于一幅医学图像寻求一种 (或一系列 )空间变换 ,使它与另一幅医学图像上的对应点达到空间上的一致。 这种一致是指人体上的同一解剖点在两张匹配图像上有相同的空间位置。 配准的结果应使两幅图像上所有的解剖点 ,或至少是所有具有诊断意义的点及手术感兴趣的点都达到匹配。

对于在不同时间或 /和不同条件下获取的两幅图像配准 [3] ,就是寻找一个映射关系P ,使图像1上的每一个点在图像2 上都有唯一的点与之相对应。 并且这两点应对应同一解剖位置。 映射关系 P表现为一组连续的空间变换。

分类

按复杂度

rigid(刚体变换):6个自由度

所谓刚体 ,是指物体内部任意两点间的距离保持不变。例如 ,可将人脑看作是一个刚体。处理人脑图像 ,对不同方向成像的图像配准常使用刚体变换。 刚体变换可以分解为旋转和平移

T(v) = Rv+t
affine(仿射变换):12个自由度

仿射变换将直线映射为直线 ,并保持平行性。具体表现可以是各个方向尺度变换系数一致的均匀尺度变换或变换系数不一致的非均匀尺度变换及剪切变换等。 均匀尺度变换多用于使用透镜系统的照相图像 ,在这种情况下 ,物体的图像和该物体与成像的光学仪器间的距离有直接的关系 ,一般的仿射变换可用于校正由 CT 台架倾斜引起的剪切或 MR梯度线圈不完善产生的畸变。

T(v) = Av+t
nonlinear:>12df

非线性变换也称做弯曲变换 (curved transformation) ,它把直线变换为曲线。 使用较多的是多项式函数 ,如二次、三次函数及薄板样条函数。 有时也使用指数函数。 非线性变换多用于使解剖图谱变形来拟合图像数据或对有全局性形变的胸、腹部脏器图像的配准。

Co-registration (within the same person)

Works better and requires fewer degrees of freedom

  1. Cross-sectional between-modalities
  2. Longitudinal within-modality
  3. Longitudinal between-modalities
Registration to a template

A template image is necessary

One Subject to another

医学图像配准

FSL 处理

From FSL: “FLIRT (FMRIB’s Linear Image Registration Tool) is a automated and robust tool for linear (rigid, affine) intra- and inter-modal brain image registration”

rigid

template<-readNIfTI(file.path( "~/公共/dataset/MNI152_T1_1mm_brain.nii.gz"), reorient=FALSE)
registered_fast = flirt(infile=bet_fast2, reffile =template, dof = 6,retimg = TRUE)
orthographic(template)
orthographic(registered_fast)

affine

reg_fast_affine = flirt(infile=bet_fast2, reffile =template, dof = 12,retimg = TRUE)
orthographic(reg_fast_affine)

nolinear

FNIRT performs non-linear registration. An affine registration must be performed before using FNIRT

fslr::fnirt_with_affine: affine registration + FNIRT perform this on skull-stripped images

fnirt_fast = fnirt_with_affine(infile=bet_fast2,reffile = template, outfile = "FNIRT_to_Template",retimg=TRUE)
orth
comments powered by Disqus

Older · View Archive (56)

Manjaro linux 的一些问题解决

Newer

基于CNN的视线跟踪系统