Hausdorff 距离的替代度量
Alternative metric for Hausdorff distance
对于我的项目,我需要根据 OBJ 文件测量两个 3D 网格之间的距离。
我必须实施两个不同的指标并进行比较。
在我的文献研究过程中,到目前为止,我只找到了 Hausdorff 距离作为度量。显然,Hausdorff距离可以用来计算3D网格的距离。
Hausdorff 距离是否有合适的替代方法?
这个主题和我的很相似,但我想实现两个不同的指标。
Measure distance between meshes
很多。视情况而定。
Hausdorff 距离是“它是从一组中的一个点到另一组中最近的点的所有距离中最大的”。来自 wikipedia
考虑以下两个二维集合(u 和 v)的示例:
from scipy.spatial.distance import directed_hausdorff
import numpy as np
u = np.array([(1.0, 0.0),
(0.0, 1.0),
(-1.0, 0.0),
(0.0, -1.0)])
v = np.array([(2.0, 0.0),
(0.0, 2.0),
(-2.0, 0.0),
(0.0, -4.0)])
print(directed_hausdorff(u, v))
(2.23606797749979, 3, 0)
取决于您拥有的组:2.23606797749979 或 3.
回到定义,我可以使用欧氏距离轻松重现该结果。
print(euclidean_distances(u, v).min(axis = 0).max(axis = 0))
print(euclidean_distances(u, v).min(axis = 1).max(axis = 0))
3.0
2.23606797749979
让我们看看两组所有点之间的所有距离:
print(euclidean_distances(u, v))
[[1. 2.23606798 3. 4.12310563]
[2.23606798 1. 2.23606798 5. ]
[3. 2.23606798 1. 4.12310563]
[2.23606798 3. 2.23606798 3. ]]
如您所见,例如,最排序距离为 1,最长为 5。我可以将其形式化如下:
print(np.max(euclidean_distances(u, v)))
print(np.min(euclidean_distances(u, v)))
5
1
我也可以取平均值:
print(np.mean(euclidean_distances(u, v)))
2.603913694764629
如您所见,那里有不同的选择。
对于我的项目,我需要根据 OBJ 文件测量两个 3D 网格之间的距离。 我必须实施两个不同的指标并进行比较。 在我的文献研究过程中,到目前为止,我只找到了 Hausdorff 距离作为度量。显然,Hausdorff距离可以用来计算3D网格的距离。
Hausdorff 距离是否有合适的替代方法?
这个主题和我的很相似,但我想实现两个不同的指标。 Measure distance between meshes
很多。视情况而定。
Hausdorff 距离是“它是从一组中的一个点到另一组中最近的点的所有距离中最大的”。来自 wikipedia
考虑以下两个二维集合(u 和 v)的示例:
from scipy.spatial.distance import directed_hausdorff
import numpy as np
u = np.array([(1.0, 0.0),
(0.0, 1.0),
(-1.0, 0.0),
(0.0, -1.0)])
v = np.array([(2.0, 0.0),
(0.0, 2.0),
(-2.0, 0.0),
(0.0, -4.0)])
print(directed_hausdorff(u, v))
(2.23606797749979, 3, 0)
取决于您拥有的组:2.23606797749979 或 3.
回到定义,我可以使用欧氏距离轻松重现该结果。
print(euclidean_distances(u, v).min(axis = 0).max(axis = 0))
print(euclidean_distances(u, v).min(axis = 1).max(axis = 0))
3.0
2.23606797749979
让我们看看两组所有点之间的所有距离:
print(euclidean_distances(u, v))
[[1. 2.23606798 3. 4.12310563]
[2.23606798 1. 2.23606798 5. ]
[3. 2.23606798 1. 4.12310563]
[2.23606798 3. 2.23606798 3. ]]
如您所见,例如,最排序距离为 1,最长为 5。我可以将其形式化如下:
print(np.max(euclidean_distances(u, v)))
print(np.min(euclidean_distances(u, v)))
5
1
我也可以取平均值:
print(np.mean(euclidean_distances(u, v)))
2.603913694764629
如您所见,那里有不同的选择。