Freesurfers --
This morning, I was trying to convert a 4 frame MPRAGE scan into a 1 frame RMS image. I wrote my own matlab code to do it ...
function err = rms_mprage(old,new)
%convert 4-frame mprage into 1 frame mprage by taking RMS of voxels
old_hdr = load_nifti(old);
new_hdr = old_hdr;
new_hdr.vol = sqrt((old_hdr.vol(:,:,:,1).^2+old_hdr.vol(:,:,:,2).^2+old_hdr.vol(:,:,:,3).^2+old_hdr.vol(:,:,:,4).^2)/4);
err = save_nifti(new_hdr,new);
So I ran >>> rms_mprage('MPRAGE1.nii','MPRAGE_new.nii')
Also, Bruce said I could do this ...
mri_average -noconform -sqr MPRAGE1.nii#0 MPRAGE1.nii#1 MPRAGE1.nii#2 MPRAGE1.nii#3 MPRAGE_rms.nii
However...
kerryave:002 $ ls -l
-rw-rw-r-- 1 sburns lingua 92275040 Dec 21 12:27 MPRAGE1.nii
-rw-rw-r-- 1 sburns lingua 24340 Dec 20 15:17 MPRAGE1.nii-infodump.dat
-rw-rw-r-- 1 sburns lingua 23069024 Apr 12 13:29 MPRAGE_new.nii
-rw-rw-r-- 1 sburns lingua 46137696 Apr 12 13:35 MPRAGE_rms.nii
So I was curious why the _rms.nii was twice as big. Probably a datatype issue, right?
kerryave:002 $ mri_info MPRAGE_new.nii
Volume information for MPRAGE_new.nii
type: nii
dimensions: 256 x 256 x 176
voxel sizes: 1.0000, 1.0000, 1.0000
type: FLOAT (3)
fov: 256.000
dof: 0
xstart: -128.0, xend: 128.0
ystart: -128.0, yend: 128.0
zstart: -88.0, zend: 88.0
TR: 2530.00 msec, TE: 0.00 msec, TI: 0.00 msec, flip angle: 0.00 degrees
nframes: 1
PhEncDir: UNKNOWN
ras xform present
xform info: x_r = 0.0055, y_r = 0.0068, z_r = -1.0000, c_r = -0.9523
: x_a = -0.9719, y_a = 0.2354, z_a = -0.0037, c_a = 2.8859
: x_s = -0.2354, y_s = -0.9719, z_s = -0.0079, c_s = 0.8822
Orientation : PIL
Primary Slice Direction: sagittal
voxel to ras transform:
0.0055 0.0068 -1.0000 85.4734
-0.9719 0.2354 -0.0037 97.4806
-0.2354 -0.9719 -0.0079 156.1061
0.0000 0.0000 0.0000 1.0000
voxel-to-ras determinant -1
ras to voxel transform:
0.0055 -0.9719 -0.2354 131.0176
0.0068 0.2354 -0.9719 128.1845
-1.0000 -0.0037 -0.0079 87.0654
0.0000 0.0000 0.0000 1.0000
And...
kerryave:002 $ mri_info MPRAGE_rms.nii
Volume information for MPRAGE_rms.nii
type: nii
dimensions: 256 x 256 x 176
voxel sizes: 1.0000, 1.0000, 1.0000
type: FLOAT (3)
fov: 256.000
dof: 0
xstart: -128.0, xend: 128.0
ystart: -128.0, yend: 128.0
zstart: -88.0, zend: 88.0
TR: 2530.00 msec, TE: 0.00 msec, TI: 0.00 msec, flip angle: 0.00 degrees
nframes: 1
PhEncDir: UNKNOWN
ras xform present
xform info: x_r = 0.0055, y_r = 0.0068, z_r = -1.0000, c_r = -0.9523
: x_a = -0.9719, y_a = 0.2354, z_a = -0.0037, c_a = 2.8859
: x_s = -0.2354, y_s = -0.9719, z_s = -0.0079, c_s = 0.8822
Orientation : PIL
Primary Slice Direction: sagittal
voxel to ras transform:
0.0055 0.0068 -1.0000 85.4734
-0.9719 0.2354 -0.0037 97.4806
-0.2354 -0.9719 -0.0079 156.1061
0.0000 0.0000 0.0000 1.0000
voxel-to-ras determinant -1
ras to voxel transform:
0.0055 -0.9719 -0.2354 131.0176
0.0068 0.2354 -0.9719 128.1845
-1.0000 -0.0037 -0.0079 87.0654
0.0000 0.0000 0.0000 1.0000
Weird that mri_info shows the datatype for both images as float. fslhd shows different things...
kerryave:002 $ fslhd MPRAGE_new.nii
filename MPRAGE_new.nii
sizeof_hdr 348
data_type INT16
dim0 4
dim1 256
dim2 256
dim3 176
dim4 1
dim5 1
dim6 1
dim7 1
vox_units mm
time_units ms
datatype 4
nbyper 2
bitpix 16
pixdim0 0.0000000000
pixdim1 1.0000000000
pixdim2 1.0000000000
pixdim3 1.0000000000
pixdim4 2530.0000000000
pixdim5 1.0000000000
pixdim6 1.0000000000
pixdim7 1.0000000000
vox_offset 352
cal_max 0.0000
cal_min 0.0000
scl_slope 1.000000
scl_inter 0.000000
phase_dim 0
freq_dim 0
slice_dim 0
slice_name Unknown
slice_code 0
slice_start 0
slice_end 0
slice_duration 0.000000
time_offset 0.000000
intent Unknown
intent_code 0
intent_name
intent_p1 0.000000
intent_p2 0.000000
intent_p3 0.000000
qform_name Scanner Anat
qform_code 1
qto_xyz:1 0.000000 0.000000 -1.000000 87.473366
qto_xyz:2 -0.976296 0.216439 -0.000000 100.261627
qto_xyz:3 -0.216439 -0.976296 -0.000000 153.275482
qto_xyz:4 0.000000 0.000000 0.000000 1.000000
qform_xorient Anterior-to-Posterior
qform_yorient Superior-to-Inferior
qform_zorient Right-to-Left
sform_name Aligned Anat
sform_code 2
sto_xyz:1 0.005469 0.006804 -0.999962 85.473358
sto_xyz:2 -0.971887 0.235419 -0.003714 97.480621
sto_xyz:3 -0.235385 -0.971870 -0.007900 156.106079
sto_xyz:4 0.000000 0.000000 0.000000 1.000000
sform_xorient Anterior-to-Posterior
sform_yorient Superior-to-Inferior
sform_zorient Right-to-Left
file_type NIFTI-1+
file_code 1
descrip FreeSurfer Dec 18 2010
aux_file
kerryave:002 $ fslhd MPRAGE_rms.nii
filename MPRAGE_rms.nii
sizeof_hdr 348
data_type FLOAT32
dim0 3
dim1 256
dim2 256
dim3 176
dim4 1
dim5 1
dim6 1
dim7 1
vox_units mm
time_units s
datatype 16
nbyper 4
bitpix 32
pixdim0 0.0000000000
pixdim1 1.0000000000
pixdim2 1.0000000000
pixdim3 1.0000000000
pixdim4 2.5299999714
pixdim5 1.0000000000
pixdim6 1.0000000000
pixdim7 1.0000000000
vox_offset 352
cal_max 0.0000
cal_min 0.0000
scl_slope 0.000000
scl_inter 0.000000
phase_dim 0
freq_dim 0
slice_dim 0
slice_name Unknown
slice_code 0
slice_start 0
slice_end 0
slice_duration 0.000000
time_offset 0.000000
intent Unknown
intent_code 0
intent_name
intent_p1 0.000000
intent_p2 0.000000
intent_p3 0.000000
qform_name Scanner Anat
qform_code 1
qto_xyz:1 0.005469 0.006804 -0.999962 85.473358
qto_xyz:2 -0.971887 0.235419 -0.003714 97.480621
qto_xyz:3 -0.235385 -0.971870 -0.007900 156.106079
qto_xyz:4 0.000000 0.000000 0.000000 1.000000
qform_xorient Anterior-to-Posterior
qform_yorient Superior-to-Inferior
qform_zorient Right-to-Left
sform_name Scanner Anat
sform_code 1
sto_xyz:1 0.005469 0.006804 -0.999962 85.473358
sto_xyz:2 -0.971887 0.235419 -0.003714 97.480621
sto_xyz:3 -0.235385 -0.971870 -0.007900 156.106079
sto_xyz:4 0.000000 0.000000 0.000000 1.000000
sform_xorient Anterior-to-Posterior
sform_yorient Superior-to-Inferior
sform_zorient Right-to-Left
file_type NIFTI-1+
file_code 1
descrip FreeSurfer Mar 19 2011
aux_file
fslhd shows different data types, which explains the difference in size. I think there's a bug in mri_info that is incorrectly reading MPRAGE_new.nii as float data. Not an earth shattering bug by any means, but I thought I'd let you know anyways.
Scott Burns
Kuperberg Lab
Martinos Center for Biomedical Imaging
The information in this e-mail is intended only for the person to whom it is addressed. If you believe this e-mail was sent to you in error and the e-mail contains patient information, please contact the Partners Compliance HelpLine at http://www.partners.org/complianceline . If the e-mail was sent to you in error but does not contain patient information, please contact the sender and properly dispose of the e-mail.