Hi,
I'm having some problems with a custom FLIRT schedule file and need a sanity check.
Essentially I want to run with a very good initialisation matrix and just do a fine-scale (1mm) adjustment. My initialisation matrix seems to load OK.
Problem 1:
The optimise command can result in a worse result than doing nothing. It doesn't seem to start from the identity transform even with zero perturbation. Not sure if this is a consequence of using an init matrix, a bug, a feature or a misunderstanding on my part?
Fudge 1:
So I explicitly measure the cost for the identity transform and use sort to see whether this gives a better result than optimise.
Problem 2:
The sort command behaves as advertised by sorting in ascending order of similarity. However the first row (least similar) of the matrix gets passed back to flirt rather than the last row (most similar). So in my case it discards the best result.
Unfortunately I can't figure out a Fudge for 2. I need to either change the sort order or selectively delete matrix rows. Of course even better if optimise behaved better in the first place ...
Below is my schedule file and flirt command. I've tried it a number of different ways but always get the same result.
I tested this by commenting/uncommenting out the sort command below and varying the order of the optimise commands.
Are these real problems or have I just broken the schedule handler by doing something non-standard further up?
Any help greatfully received - this is driving me nuts!
Many Thanks
-Bill Crum
test.sch
---------------------------------------------------------------------
# 8mm scale
setscale 8
clear S
clear P
# 4mm scale
setscale 4
# 2mm scale
setscale 2
# 1mm scale
setscale 1
setoption smoothing 1
setoption boundguess 1
# Optimise from this position
clear UF
setrow UF 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
clear U
# Dummy optimise with 0 iterations
# I also tried just adding an identity row to UF directly but get the same result
optimise MAXDOF UF:1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 rel 0
# Optimise from this position
optimise MAXDOF UF:1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 rel 1
clear UF
copy U UF
clear U
measurecost MAXDOF UF:1-2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 rel
print U
sort U
print U
---------------------------------------------------------------------
flirt -cost normcorr -schedule ../test.sch -nosearch -v -dof 9 -refweight proc_NIMROD_1616-mask-norm-d2.nii.gz -ref proc_NIMROD_1616.nii.gz -in proc_TYPHOON_212212.nii.gz -init test_proc_TYPHOON_213213-to-1.mat -omat test-reg-213213.mat -out test-reg-213213.nii.gz
---
Dr Bill Crum, Senior Lecturer,
King's College London,
Centre for NeuroImaging Sciences (PO89)
Institute of Psychiatry, De Crespigny Park, London, SE5 8AF
|