Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
FSL
fslpy
Commits
6d1802e6
Commit
6d1802e6
authored
Nov 30, 2017
by
Paul McCarthy
🚵
Browse files
new transform function rmsdev for calculating distance between two
transformations
parent
9bcb32c6
Changes
1
Hide whitespace changes
Inline
Side-by-side
fsl/utils/transform.py
View file @
6d1802e6
...
...
@@ -23,6 +23,7 @@ spaces. The following functions are provided:
axisBounds
flirtMatrixToSform
sformToFlirtMatrix
rmsdev
And a few more functions are provided for working with vectors:
...
...
@@ -593,3 +594,49 @@ def sformToFlirtMatrix(srcImage, refImage, srcXform=None):
refWorldToVoxMat
,
srcVoxToWorldMat
,
srcScaledVoxToVoxMat
)
def
rmsdev
(
T1
,
T2
,
R
=
None
,
xc
=
None
):
"""Calculates the RMS deviation of the given affine transforms ``T1`` and
``T2``. This can be used as a measure of the 'distance' between two
affines.
The ``T1`` and ``T2`` arguments may be either full ``(4, 4)`` affines, or
``(3, 3)`` rotation matrices.
See FMRIB technical report TR99MJ1, available at:
https://www.fmrib.ox.ac.uk/datasets/techrep/
:arg T1: First affine
:arg T2: Second affine
:arg R: Sphere radius
:arg xc: Sphere centre
:returns: The RMS deviation between ``T1`` and ``T2``.
"""
if
R
is
None
:
R
=
1
if
xc
is
None
:
xc
=
np
.
zeros
(
3
)
# rotations only
if
T1
.
shape
==
(
3
,
3
):
M
=
np
.
dot
(
T2
,
invert
(
T1
))
-
np
.
eye
(
3
)
A
=
M
[:
3
,
:
3
]
t
=
np
.
zeros
(
3
)
# full affine
else
:
M
=
np
.
dot
(
T2
,
invert
(
T1
))
-
np
.
eye
(
4
)
A
=
M
[:
3
,
:
3
]
t
=
M
[:
3
,
3
]
Axc
=
np
.
dot
(
A
,
xc
)
erms
=
np
.
dot
((
t
+
Axc
).
T
,
t
+
Axc
)
erms
=
0.2
*
R
**
2
*
np
.
dot
(
A
.
T
,
A
).
trace
()
+
erms
erms
=
np
.
sqrt
(
erms
)
return
erms
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment