External Email - Use Caution Hello Freesurfer Experts, I am trying to use mri_robust_template (with its default 6 DOF registration) outside of the Freesurfer longitudinal pipeline to generate within-participant T1 templates from 2 time points. Unfortunately, I am coming up against a 'MyMatrix::RotationMean input(s) not rotation' error on images acquired on our GE 3T Discovery 750 system, but not our colleagues' Seimens 3T Prisma images. I have pasted the output from the --debug flag below (3rd row from bottom is the MyMatrix::RotationMean message).
Briefly: - the images I am using are skull-stripped niftis. - I am running Freesurfer 6.0 (freesurfer-Linux-centos6_x86_64-stable-pub-v6.0.0-2beb96c) on a WSL2 Ubuntu 18.04 installation. - the call is: mri_robust_template --mov 2001A_T1o_brain.nii.gz 2001B_T1o_brain.nii.mgz --lta 2001A2template.lta 2001B2template.lta --average 1 --template 2001_template.nii.gz --satit - I have tried the following with no success: 1) using the --iscale flag - same result as shown below. 2) using --inittp 0 - results in a 'Segmentation fault' 3) using --average 0 - same result as shown below 4) using Freesurfer v7.2 - same result as below 5) running mri_robust_template call on Catalina and Big Sur systems with FS v6.0 - same result as below. Currently, the only way to get mri_robust_template to work with our GE images is to run it with the --affine flag. I would prefer to use the rigid body registration but am at a loss for why these images are failing using the rigid body registration is failing. Any help/insights/recommendations are greatly appreciated. Thank you very much. Andrew ---- Andrew Beaudin, PhD | Postdoctoral Scholar University of Calgary | Cumming School of Medicine Department of Clinical Neurosciences HSC Rm 2935J, 3330 Hospital Drive N.W. | Calgary, AB | T2N 4N1 Phone: (403) 210-6273 DEBUG REPORT: $Id: mri_robust_template.cpp,v 1.54 2016/05/05 21:17:08 mreuter Exp $ --mov: Using 2001A_T1o_brain.nii.gz as movable/source volume. --mov: Using 2001B_T1o_brain.nii.gz as movable/source volume. Total: 2 input volumes --lta: Will output LTA transforms --average: Using method 1 for template computation. --template: Using 2001_template.nii.gz as template output volume. --satit: Will estimate SAT iteratively! --debug: Will output debug info and files! reading source '2001A_T1o_brain.nii.gz'... converting source '2001A_T1o_brain.nii.gz' to bspline ... MRItoBSpline degree 3 reading source '2001B_T1o_brain.nii.gz'... converting source '2001B_T1o_brain.nii.gz' to bspline ... MRItoBSpline degree 3 Will use TP 2 as random initial target (seed 108242 ). MultiRegistration::initializing Xforms (init 2 , maxres 0 , iterate 5 , epsit 0.01 ) : MultiRegistration Parameters Outdir: ./ TransOnly: false Rigid: true Robust: true Satit: true Iscale: false IscaleOnly: false NoMulti: false SubsampleSize: -1 HighIt: -1 FixVoxel: false KeepType: true Average: 1 DoublePrec: false BackupWeights: false SampleType: 5 CRASCenter: false Debug: 1 [init] ========================= TP 1 to TP 2 ============================== Register TP 1 ( 2001A_T1o_brain.nii.gz ) to TP 2 ( 2001B_T1o_brain.nii.gz ) Registration::setSourceAndTarget(MRI s, MRI t, keeptype = TRUE ) Type Source : 3 Type Target : 3 keeping type Mov: (1, 1, 1)mm and dim (176, 256, 256) Dst: (1, 1, 1)mm and dim (176, 256, 256) Asserting both images: 1mm isotropic - no Mov reslice necessary - no Dst reslice necessary Registration::findSaturation - computing centroids - computing initial transform -- using translation info - Get Gaussian Pyramid Limits ( min size: 16 max size: -1 ) - Build Gaussian Pyramid ( Limits min steps: 0 max steps: 3 ) - Build Gaussian Pyramid ( Limits min steps: 0 max steps: 3 ) - Max Resolution used: 2 -- gpS ( 44 , 64 , 64 ) -- gpT ( 44 , 64 , 64 ) - running loop to estimate saturation parameter: -- Iteration: 1 trying sat: 16 min sat: 16 ( 0.729941 ), max sat: 0 ( -1 ), sat diff: -16, (wlimit=0.16) -- Iteration: 2 trying sat: 32 min sat: 32 ( 0.713406 ), max sat: 0 ( -1 ), sat diff: -32, (wlimit=0.16) -- Iteration: 3 trying sat: 64 min sat: 64 ( 0.692689 ), max sat: 0 ( -1 ), sat diff: -64, (wlimit=0.16) -- Iteration: 4 trying sat: 128 min sat: 128 ( 0.666858 ), max sat: 0 ( -1 ), sat diff: -128, (wlimit=0.16) -- Iteration: 5 trying sat: 256 min sat: 256 ( 0.637119 ), max sat: 0 ( -1 ), sat diff: -256, (wlimit=0.16) -- Iteration: 6 trying sat: 512 min sat: 512 ( 0.591624 ), max sat: 0 ( -1 ), sat diff: -512, (wlimit=0.16) -- Iteration: 7 trying sat: 1024 min sat: 1024 ( 0.550606 ), max sat: 0 ( -1 ), sat diff: -1024, (wlimit=0.16) -- Iteration: 8 trying sat: 2048 min sat: 2048 ( 0.485668 ), max sat: 0 ( -1 ), sat diff: -2048, (wlimit=0.16) -- Iteration: 9 trying sat: 4096 min sat: 4096 ( 0.370434 ), max sat: 0 ( -1 ), sat diff: -4096, (wlimit=0.16) -- Iteration: 10 trying sat: 8192 min sat: 8192 ( 0.19981 ), max sat: 0 ( -1 ), sat diff: -8192, (wlimit=0.16) -- Iteration: 11 trying sat: 16384 min sat: 8192 ( 0.19981 ), max sat: 16384 ( 0.0606314 ), sat diff: 8192, (wlimit=0.16) -- Iteration: 12 trying sat: 12288 min sat: 8192 ( 0.19981 ), max sat: 12288 ( 0.103499 ), sat diff: 4096, (wlimit=0.16) -- Iteration: 13 trying sat: 10240 min sat: 8192 ( 0.19981 ), max sat: 10240 ( 0.142423 ), sat diff: 2048, (wlimit=0.16) -- Iteration: 14 trying sat: 9216 min sat: 9216 ( 0.16727 ), max sat: 10240 ( 0.142423 ), sat diff: 1024, (wlimit=0.16) -- Iteration: 15 trying sat: 9728 min sat: 9216 ( 0.16727 ), max sat: 9728 ( 0.155264 ), sat diff: 512, (wlimit=0.16) -- Iteration: 16 trying sat: 9472 min sat: 9472 ( 0.160488 ), max sat: 9728 ( 0.155264 ), sat diff: 256, (wlimit=0.16) -- Iteration: 17 trying sat: 9600 min sat: 9472 ( 0.160488 ), max sat: 9600 ( 0.157199 ), sat diff: 128, (wlimit=0.16) -- Iteration: 18 trying sat: 9536 min sat: 9472 ( 0.160488 ), max sat: 9536 ( 0.159131 ), sat diff: 64, (wlimit=0.16) -- Iteration: 19 trying sat: 9504 min sat: 9472 ( 0.160488 ), max sat: 9504 ( 0.159604 ), sat diff: 32, (wlimit=0.16) -- Iteration: 20 trying sat: 9488 min sat: 9472 ( 0.160488 ), max sat: 9488 ( 0.159903 ), sat diff: 16, (wlimit=0.16) -- Iteration: 21 trying sat: 9480 min sat: 9480 ( 0.160034 ), max sat: 9488 ( 0.159903 ), sat diff: 8, (wlimit=0.16) -- Iteration: 22 trying sat: 9484 min sat: 9484 ( 0.160123 ), max sat: 9488 ( 0.159903 ), sat diff: 4, (wlimit=0.16) -- Iteration: 23 trying sat: 9486 min sat: 9484 ( 0.160123 ), max sat: 9486 ( 0.159831 ), sat diff: 2, (wlimit=0.16) -- Iteration: 24 trying sat: 9485 min sat: 9484 ( 0.160123 ), max sat: 9485 ( 0.159908 ), sat diff: 1, (wlimit=0.16) -- Iteration: 25 trying sat: 9484.5 - final SAT: 9485 ( it: 25 , weight check 0.159908 <= 0.16 ) Registration::computeMultiresRegistration - computing centroids - computing initial transform -- using translation info - Get Gaussian Pyramid Limits ( min size: 16 max size: -1 ) - initial transform: Ti = [ ... 1.0000000000000 0 0 -2.0251428914711 0 1.0000000000000 0 6.0311902437196 0 0 1.0000000000000 2.8105113695639 0 0 0 1.0000000000000 ] - initial iscale: Ii =1 Resolution: 3 S( 22 32 32 ) T( 22 32 32 ) Iteration(f): 1 -- diff. to prev. transform: 2.97694 Iteration(f): 2 -- diff. to prev. transform: 0.0903233 Iteration(f): 3 -- diff. to prev. transform: 0.0191757 Iteration(f): 4 -- diff. to prev. transform: 0.0116139 Iteration(f): 5 -- diff. to prev. transform: 0.00140989 <= 0.01 :-) Resolution: 2 S( 44 64 64 ) T( 44 64 64 ) Iteration(f): 1 -- diff. to prev. transform: 1.81202 Iteration(f): 2 -- diff. to prev. transform: 0.199033 Iteration(f): 3 -- diff. to prev. transform: 0.00925469 <= 0.01 :-) Resolution: 1 S( 88 128 128 ) T( 88 128 128 ) Iteration(f): 1 -- diff. to prev. transform: 1.02247 Iteration(f): 2 -- diff. to prev. transform: 0.0229168 Iteration(f): 3 -- diff. to prev. transform: 0.000719712 <= 0.01 :-) Resolution: 0 S( 176 256 256 ) T( 176 256 256 ) Iteration(f): 1 -- diff. to prev. transform: 0.664624 Iteration(f): 2 -- diff. to prev. transform: 0.0108463 Iteration(f): 3 -- diff. to prev. transform: 0.000585613 <= 0.01 :-) - final transform: Tf = [ ... 0.9994709868827 -0.0113151175724 -0.0304912199489 4.8530791096303 0.0126622658755 0.9989355014916 0.0443568583483 2.1370162587100 0.0299568590234 -0.0447194809223 0.9985503265352 5.4716006804225 0 0 0 1.0000000000000 ] - final iscale: If = 1 CentroidT = [ 86.5860705940972 104.6067830299094 138.6676688710562 1.0000000000000 ] CentroidSinT = [ 88.1595712077722 107.7558909090270 139.3780739549505 1.0000000000000 ] Centroid = [ 87.3728209009347 106.1813369694682 139.0228714130033 1.0000000000000 ] MyMatrix::RotationMean input(s) not rotation meant = [ -1.2248131651588 1.2892456671960 3.1420193014715 ] Input rotation's max deviation from rotation is: 0.000393411 Andrew ---- Andrew Beaudin, PhD | Postdoctoral Scholar University of Calgary | Cumming School of Medicine Department of Clinical Neurosciences HSC Rm 2935J, 3330 Hospital Drive N.W. | Calgary, AB | T2N 4N1 Phone: (403) 210-6273
_______________________________________________ Freesurfer mailing list Freesurfer@nmr.mgh.harvard.edu https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer 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 Mass General Brigham Compliance HelpLine at https://www.massgeneralbrigham.org/complianceline <https://www.massgeneralbrigham.org/complianceline> . Please note that this e-mail is not secure (encrypted). If you do not wish to continue communication over unencrypted e-mail, please notify the sender of this message immediately. Continuing to send or respond to e-mail after receiving this message means you understand and accept this risk and wish to continue to communicate over unencrypted e-mail.