From 7daffe2e7b127697cd24e8c8310aeabea084fb6e Mon Sep 17 00:00:00 2001 From: Florian Ingels <florian.ingels@inria.fr> Date: Wed, 20 May 2020 15:32:54 +0200 Subject: [PATCH] Added hellinger distance between transformations --- src/geomtree/affine_transform.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/geomtree/affine_transform.py b/src/geomtree/affine_transform.py index fc4f30e..eb6b87b 100644 --- a/src/geomtree/affine_transform.py +++ b/src/geomtree/affine_transform.py @@ -8,7 +8,7 @@ from visu_core.vtk.actor import vtk_actor from visu_core.vtk.polydata import face_scalar_property_polydata from scipy.spatial.transform import Rotation as R -from scipy.linalg import svd, inv +from scipy.linalg import svd, inv, det from scipy.stats import chi2 class AffineTransform(object): @@ -194,4 +194,12 @@ def random_transform(translation=True,scale=True,rotation=True): tf.set_parameters(t,rot.as_matrix() @ np.diag(s)) return tf -#-----------------------------------------------------# \ No newline at end of file +#-----------------------------------------------------# + +def hellinger_distance(tf1,tf2): + t1 = tf1.translation + t2 = tf2.translation + sig1 = tf1.get_covariance_matrix() + sig2 = tf2.get_covariance_matrix() + sigm = (sig1+sig2)/2 + return 1 - (det(sig1)*det(sig2))**(1/4) / det(sigm)**(1/2)*np.exp((-1/8) * np.transpose(t1 - t2) @ inv(sigm) @ (t1 - t2)) \ No newline at end of file -- GitLab