[Neuroimaging] Affine transformations

Stefan Hoffmann stefan.hoffmann at uni-jena.de
Thu Sep 6 10:17:20 EDT 2018


No worries,

thanks for still caring after all this time.

And thanks for your help in first place!

best regards,
Stefan

Zitat von Matthew Brett <matthew.brett at gmail.com>:

> Oops,
>
> On Fri, Aug 31, 2018 at 2:15 PM, Matthew Brett  
> <matthew.brett at gmail.com> wrote:
> [snip]
>> I think you'll find that the center doesn't matter for the zooms
>> because, if Z is a zooming affine, and hence of this form:
>>
>> Z = [[a, 0, 0, 0],
>>        [0, b, 0, 0],
>>        [0, 0, c, 0],
>>        [0, 0, 0, 1]]
>>
>> then Tinv.dot(Z).dot(T) == Z for any translations in T.
>
> How silly of me.  For some reason, as I woke up, I realized that's
> obviously not true, and the zooms do change the translations, as would
> have been obvious if I'd done the multiplication properly:
>
> In [22]: import sympy as sy
> In [23]: a, b, c, x, y, z = sy.symbols('a, b, c, x, y, z')
> In [24]: T = Matrix([[1, 0, 0, x],
>     ...:             [0, 1, 0, y],
>     ...:             [0, 0, 1, z],
>     ...:             [0, 0, 0, 1]])
>     ...:
> In [25]: Z = Matrix([[a, 0, 0, 0],
>     ...:             [0, b, 0, 0],
>     ...:             [0, 0, c, 0],
>     ...:             [0, 0, 0, 1]])
>     ...:
> In [26]: T.inv() * Z * T
> Out[26]:
> Matrix([
> [a, 0, 0, a*x - x],
> [0, b, 0, b*y - y],
> [0, 0, c, c*z - z],
> [0, 0, 0,       1]])
>
> So - yes - it does make a difference (to the origin) whether you zoom
> after a translation, or not.
>
> Sorry about that,
>
> Cheers,
>
> Matthew
> _______________________________________________
> Neuroimaging mailing list
> Neuroimaging at python.org
> https://mail.python.org/mailman/listinfo/neuroimaging





More information about the Neuroimaging mailing list