Dear Christopher,
When you say that they are very close, but not exactly
the same, how close are they? We see a difference of
about 1 in 10000 when we do the same procedure that
you described, which is most likely due to the finite
number of decimal places that is used to output the
affine matrix. However, typical registration accuracy
is such that these differences are negligible with respect
to typical sub-voxel offsets (which is 1 in 100 at the
very best) and so we feel that this is sufficient accuracy
for the affine matrix and subsequent resampling.
Note that if you have an integer datatype you may also
see integer round-off errors in the intensity which makes
the differences bigger than the above. To solve this
use the "-datatype float" option in flirt to force the
output to have floating point values (and hence be more
accurate).
I hope this answers your question.
If you are seeing differences (with -datatype float) which
are significantly greater than I've described then please
email us back with more details.
All the best,
Mark
P.S. you're right that the cost and search options will not
affect this issue.
On 14 Oct 2005, at 19:27, JC May wrote:
> Greetings, I've run into a curious problem that I could use some
> advice on.
> I'm using flirt for a within-subject struct-to-struct registration.
> When I
> run flirt I give it a input-image, a reference-image, and ask for 6
> dof. I
> get out a transformation-file and an output-image. If I apply the
> transformation-file back onto the input-image, I would expect to get an
> output-image identical to that from the first run. But I don't. They
> are
> very close, but they are not the same image. Why is this the case, or
> more
> to the point, which is more accurate: the output-image of the first
> run or
> the output of a 2nd run where I apply the transformation-file back
> onto the
> original input-image? Below are examples of the 2 run sequence I'm
> asking
> about. I don't think that cost or search functions would have an
> impact on
> this problem, but perhaps so.
>
> 1st run:
> flirt -in inputA.img -ref ref.img -omat inputA_to_ref.mat -out
> inputA_to_ref.img -dof 6
>
> 2nd run:
> flirt -in inputA.img -ref ref.img -applyxfm -init inputA_to_ref.mat
> -out
> check_inputA_to_ref.img
>
> weirdness:
> inputA_to_ref.img does not equal check_inputA_to_ref.img
>
> Much thanks for any help, cheers
>
> -christopher
|