zoukankan      html  css  js  c++  java
  • MeVisLab fMRI数据处理学习1

    任务:在MeVisLab平台完成fMRI数据的预处理

    难点:对MeVisLab平台的不熟悉;平台本身关于fMRI的可用内容少(多了就不用我做了 = =);语言障碍,好多专业词汇根本翻译不过来,或者翻译不过去……

    具体流程:

      功能核磁数据的导入

      参数自动提取

      层面时间校正

      头动校正(刚体变换)

      图像配准

      去基线漂移

      带通滤波

      时间延时(暂时不了解)

    进展:

      0.对不认识的模块(Modules)右键 show help。[安装目录下Packages/MeVisLab/Standard/Documentation/Publish/ModuleReference/genre.html 可按类显示核心Modules]

      1.关于数据导入,要求为dicom格式导入,可以文件夹识别什么的,尝试了众多导入方法,最终确定DirectDicomImport,选择文件夹,可识别文件信息。在此,导入的文件为mosaic排列后的,为了后期的正常处理,需要将其一张slice中的z取出来,使用Demosaic模块,得到参数为[x,y,z,t,c,u]的图像集。这里x,y,z为图像的空间坐标,t为时间坐标,也即多少个dicom文件,多少个TR, c=color,指的是图像的色彩显示方法,MRI数据为灰度显示(Gary)。U好像是user,可是我尝试导入多个被试的数据,u并没有改变,可能是理解错误,还需要进一步确认。

      2.参数提取比较简单,直接通过Info实现,如果后期需要实现GUI,可直接引用其中的参数;

      3.时间层面校正(选作),暂时还没有发现相关的Module,可以通过自己开发Module实现,在生成的cpp工程中利用LOOP中的t的循环,实现对时间层面的校正,另外,在info信息中也有对时间信息的显示,后经确认并非是层面时间信息。还需要继续学习SPM中层面时间校正的内容。

      4.头动校正,利用刚体变换模型实现。具体模块为MERIT,变换类型为rigid.在进行头动校正时,选择t=1的图像作为模板图像,利用subImage从导入的dicom文件中选取一张子图,subImage可以对六个坐标都进行重新选择,这里我只对t进行选择,在SPM Manual里好像看到说以首帧做基础,进行头动校正,则用subImage选出首帧。可利用MERIT对图像进行刚体变换,得到变换矩阵(MERIT/output/Transformation Matrix).可是问题在于,MERIT一次只能将一幅图像变换到模板图像的变换矩阵得到,而fMRI-BOLD数据绝对不止一副,如何实现多图像的校正,我还是没有想到合适的方法,在我现有的理解中在MeVisLab中,模块与模块的链接只能传输数据,而非数据流,也就是说,我无法在模块外实现对某些环节的循环引用,难道我要基于MERIT重新开发Module吗?或者还有其他的方法可以实现,可我还没发现?

      另外RegistrationManual 模块,可以通过overlay显示配准效果,在调试过程中作为检验工具。

      5.图像配准,同样利用MERIT模块实现,变换类型为rigid.模板图像为T1像,进行配准操作,具体问题与头动校正相同。在配准过程中,需要对结构像进行重构,利用Resample3D调整分辨率和坐标信息。[在spm中是先进行完分割再配准的,如果不分割是否有影响,需要分割吗?]

      6.去基线漂移&带通滤波处理  直接使用FFTbandpassFilter 实现滤波。其核心算法即通过FFT→加滤波模板→IFFT实现。

      对于基线漂移的改善情况,不知道怎么检验效果,以及如何改善,还需要学习。

      7.时间延时相关特性

      8.归一化到标准脑模板(选做)  与头动校正和图像配准相同,都属于空间变换,变换形式不同,需要利用整体变换仿射变换affine实现,模板图像为SPM提供的标准脑模板,利用MERIT,变换类型为affine.

    其他积累:

      1.论坛学习:http://forum.mevis.fraunhofer.de/index.php

      2.可能用到的模块

    ImagePropertyConvert 调整图像参数,包括分辨率,大小等
    SoView2Doverlay 用于比较图片
    Imagespector 沿某一坐标将图像分隔开,但最多只有6个输出……
    reshape x*y*z*C*T*U保持不变
    soGVRVolumeRender 对3D、4D进行渲染呈现
    MinMaxSCan 调整大小,在变换过程中可能会用到
    Affinetransformation3D 进行3D仿射变换
    Fiter类 进行滤波和平滑等

     

  • 相关阅读:
    c++ 单例模式
    c++ 时间格式化
    c++ read
    c++ 时间与字符串转换
    c++ switch case
    HIVE Transform using 用法
    python安装模块
    pip install psutil出错-You are using pip version 10.0.1, however version 18.0 is available.
    centos下安装Loadrunner
    svn-checkout后,循环遍历查找包含某字符串的文件
  • 原文地址:https://www.cnblogs.com/deepcanvas/p/5121664.html
Copyright © 2011-2022 走看看