Freesurfer uses a tool called mritotal in the package called mni_autoreg [].

It uses the MNI average_305 template volume to create the linear talairach affine transform. The transform file talairach.xfm is deposited in $subject/mri/transforms directory. The template volume average_305.mnc resides in /usr/pubsw/packages/mni/1.2/share/mni_autoreg directory in the MGH environment.

Because the mritotal method uses the correlation method, the resulting transform can be bad (The documentation for mritotal says that it works well for T1 dominant images). The last resort would be the manual registration, but that means that the variability of the transform from one person to next would become an issue.

The first step may try using other volumes to get a better transform, using the same method. My suggestion is to try "T1" and then "brain". Here is the steps you take:

$ ["mri_convert"] T1 T1.mnc

$ mritotal -protocol icbm T1.mnc T1.xfm

Check the transform, using tkmedit. If still bad, try

$ ["mri_convert"] brain brain.mnc

$ mritotal -protocol icbm brain.mnc brain.xfm

Check the transform, using tkmedit.

If you find a good transform during the step above, replace mri/transforms/talairach.xfm with the good one. You must use the same name talairach.xfm.

If it is still bad, you can try using a manual registration tool to create the transform. Note that you have to create the MNI compatible talairach.xfm to go along with further freesurfer processes.

There exist a few manual registration tools.

The MNI GUI tool called register [] allows you to get the linear transform manually by specifying the corresponding points and produces the xfm compatible with the process. The catch is that you have to convert your volume into MINC format, using ["mri_convert"] as shown above.

When you use ["tkregister"] or ["tkregister2"], you are advised to convert register.dat to the xfm, using ["regdat2xfm"].