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