Print

Print


Dear William,

>
> I'm using FNIRT to register an FSE T2-weighted image to an EPI T2- 
> weighted image.  The
> EPI image is not diffusion-weighted, so its contrast  
> characteristics are pretty similar to
> that of the FSE image.  The EPI image is a little bit warped by  
> susceptibility artifacts, and
> I'm trying to use FNIRT to apply a similar warping to the FSE image.
>
> I got great results using FNIRT's default settings, adding -- 
> intmod=global_non_linear.  But
> execution time was about 30-40 minutes on my machine, and it would  
> really help me if I
> could cut that down substantially.

The thing that would really help here is if fnirt was aware that your  
displacements are really 1D (all in the phase-encode direction). We  
are working on a version like that (to use precisely for distortion  
correction), but it is still a little while away.

>
> I have cropped down my reference image, and that helped a bit.  I  
> tried --
> subsamp=8,4,2,2, but that produced this error message when I ran  
> FNIRT:
>
> New Lambda: 240
> New FWHM (mm) for --ref: 4
> New FWHM (mm) for --in: 6
> New Matrix Size: 33 33 3
> New Voxel Size: 6.875 6.875 48
> Error occurred when preparing to fnirt
> Exception thrown with message: St9bad_alloc
>

This is the same problem that was described a couple of days ago.  
What you can do here is to instead set your warp-resolution to  
10,10,12 rater than 10,10,10 as is now in the configuration file.  
This happens because your voxel-size is 6mm in the z-direction, so  
the highest resolution you can get in that direction is 2*6 (where  
the 2 here refers to the final level of sub-sampling).

Another option is that you upsample your reference image by a factor  
of 2 in the z-direction before you run fnirt. That way you could  
still have a 10mm warp-resolution in all directions.

> Using --numproc=float, --splineorder=2, and --intmod=global_linear  
> all at once produced
> time savings that were nice, but not really impressive, and the  
> resulting fit wasn't nearly
> as good.  I'm now in the process of restoring settings back to  
> their defaults, to see which
> one messed up my fit.  But that'll just make execution time longer.

The --numproc=float should NOT make a difference to your quality. I  
would be very surprised if it did. Going from cubic to quadratic  
splines may affect things a little, but you may be able to "fix" that  
by slightly increasing the regularisation for each of the sub- 
sampling steps.


>
> I'd really like to achieve the 60% time savings that I can  
> supposedly get by fixing that --
> subsamp bug.  Any suggestions?

See above.

> For what it's worth, both my input and reference images have 22 cm  
> FOV, 256x256
> matrix, 6 mm slice thickness (although I have cropped down the  
> reference image).

In general I would advice you to try and use more isotropic voxels.  
Those voxels of yours are almost match-shaped. Great when you are eye- 
balling an image in the original resolution, not so great as soon as  
you start to perform some kind of processing on the 3D volume.

Good luck Jesper