关于OASIS-1数据集全脑MRI配准问题

最近我在做人脑MRI配准的事情,我想把数据集OASIS-1的freesurfer处理后的brainmask.mgz配准到MNI152 1mm(182,218,182)空间上,但是我发现用ANTs的仿射+非线性配准一个要四五个小时,这太慢了。于是我打算用深度学习模型去进行配准。

于是我搜集了很多医学图像配准模型,发现TransMorph在这方面性能不错,于是我打算用它来训练。我的计划是用ANTs的仿射配准(仅仅只有仿射配准,无非线性)把所有被试的brainmask.mgz配准到MNI152空间,下面是我的具体配准命令:
antsRegistration -d 3
-r [ fsl/data/standard/MNI152_T1_1mm_brain.nii.gz, brainmask.nii, 1 ]
-m mattes[ fsl/data/standard/MNI152_T1_1mm_brain.nii.gz, brainmask.nii, 1, 32, regular, 0.25 ]
-t affine[ 0.05 ]
-c [ 1000x500x250, 1e-6, 10 ]
-s 2x1x0vox
-f 4x2x1
-o [ affine_, affine_Warped.nii.gz ]

然后我去用这些数据训练模型,发现loss不减,训练了20多轮还是很差,像是学不到东西,按理来说TransMorph学的就是非线性配准,我已经进行了仿射配准了,不应该呀?

而且在 Learn2Reg 2021挑战赛,官方给出了OASIS-1的训练集,我看了下他们的处理方法,以下是他们提供的预处理方法:

  1. Install FreeSurfer from DownloadAndInstall - Free Surfer Wiki
  2. export FREESURFER_HOME=/your_freesurfer_directory
  3. source $FREESURFER_HOME/SetUpFreeSurfer.sh
  4. export SUBJECTS_DIR=/dataset_directory
  5. recon-all -parallel -i dataset_directory/img_name.nii -autorecon1 -subjid img_name → This step does motion correction, skull stripping, affine transform comuptation, and intensity normalization.
  6. mri_convert dataset_directory/img_name/mri/brainmask.mgz dataset_directory/img_name/mri/brainmask.nii.gz → This step converts the preprocessed image from .mgz into .nii format.
  7. mri_convert dataset_directory/img_name/mri/brainmask.mgz --apply_transform dataset_directory/img_name/mri/transforms/talairach.xfm -o dataset_directory/img_name/mri/brainmask_align.mgz → This step does affine tranform to Talairach space.
  8. mri_convert dataset_directory/img_name/mri/brainmask_align.mgz dataset_directory/img_name/mri/brainmask_align.nii.gz → This step converts the transformed image from .mgz into .nii format.
  9. recon-all -parallel -s dataset_directory/img_name.nii -subcortseg -subjid img_name → This step does subcortical segmentation.
  10. mri_convert dataset_directory/img_name/mri/aseg.auto.mgz dataset_directory/img_name/mri/aseg.nii.gz → This step converts label image from .mgz into .nii format.
  11. mri_convert -rt nearest dataset_directory/img_name/mri/aseg.auto.mgz --apply_transform dataset_directory/img_name/mri/transforms/talairach.xfm -o dataset_directory/img_name/mri/aseg_align.mgz → This step does affine tranform to Talairach space using nearest neighbor interpolation for label image.
  12. mri_convert dataset_directory/img_name/mri/aseg_align.mgz dataset_directory/img_name/mri/aseg_align.nii.gz → This step converts the transformed label image from .mgz into .nii format.

Note that these steps may take up to 12-24 hours per image base on our experience. Therefore running these commands in parallel on a server or a cluster is recommended.

我觉得唯一的区别就是我仿射配准到MNI152,它是用的Talairaco呀?为啥他的训练模型之后效果很不错,我的就是一点用没有,这差别太大了。而且我没看出有啥区别。

brainmask.nii(我和他们用的brainmask.nii一模一样,这里就放一个了)

仿射配准到MNI152 1mm

他们配准到Talaicaro,应该配准完还裁剪过

有没有老师,大佬们帮我检查下是不是我哪一步预处理的不对????十分感谢 :sob:

  1. 你的ANTs要4-5个小时还是挺奇怪的,我一般单核少于2个小时。我建议用ANTs提供的antsRegistrationSyN.sh脚本,而不是直接调用antsRegistration,除非你想要调试参数。
  2. 我没有用过基于深度学习的配准方法,不过我建议可以试试FreeSurfer的SynthMorph,毕竟FreeSurfer的工具还是值得期待的。

但是我用的是仿射配准,不需要非线性呀,这个antsRegistrationSyN.sh不是非线性吗?

可以的,这个脚本可以做仿射变换,你注意看选项。

被试10、20、30图片中左侧为我自己进行最大最小归一化的结果,而右侧是挑战赛提供好的

被试30

谢谢老师,我目前改用了这个。然后我刚发现了一个问题,就是我在挑战赛数据集下载出来的norm.nii.gz文件,也就是用freesurfer处理好的,发现它的像素值都已经做好归一化了,背景是0,其他值都是小于1的小数,但是我在OASIS-1上下载的norm.mgz却没有做归一化,于是我对每个norm.mgz转为norm.nii.gz以后进行了最大最小归一化。发现不同个体的的同一部位,例如不同个体的白质部分,我自己归一化后数值差别很大,有的是0.4左右,而有的能到0.6左右,然而挑战赛提供的版本里,同一部位差别很小。我想请教下老师有没有能让标准化后,不同个体间同一组织或部位像素值差不多的方法?

被试10

被试20

我确实不太清楚这两者的差异来源。不过我注意到左右两张图里的脑图也不完全一样,比如被试10,左边的图明显skull-stripping要干净一些。所以我想可能不是归一化的原因,也许是FreeSurfer本身的结果就不同或者有其他后处理步骤。