當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy distance.directed_hausdorff用法及代碼示例


本文簡要介紹 python 語言中 scipy.spatial.distance.directed_hausdorff 的用法。

用法:

scipy.spatial.distance.directed_hausdorff(u, v, seed=0)#

計算兩個二維數組之間的有向 Hausdorff 距離。

對之間的距離使用歐幾裏得度量來計算。

參數

u (M,N) 數組

輸入數組,在 N 維中具有 M 個點。

v (O,N) 數組

N 維中包含 O 點的輸入數組。

seed int 或無

本地 numpy.random.RandomState 種子。默認值為 0,即 u 和 v 的隨機改組,保證可重複性。

返回

d 雙倍的

數組 u 和 v 之間的有向 Hausdorff 距離,

index_1 int

u 中對 Hausdorff 對有貢獻的點的索引

index_2 int

v 中對 Hausdorff 對有貢獻的點的索引

拋出

ValueError

如果 u 和 v 的列數不同,則會引發異常。

注意

使用 [1] 中說明的早期中斷技術和隨機抽樣方法。盡管最壞情況下的性能是O(m * o)(與蠻力算法一樣),但這在實踐中不太可能,因為輸入數據必須要求算法探索每個單點交互,並且在算法將輸入點打亂之後.最佳情況下的性能是 O(m),通過選擇小於 cmax 的內環距離來滿足這一要求,並盡可能多地導致早期中斷。作者已經正式表明平均運行時間更接近 O(m)。

參考

[1]

A. A. Taha 和 A. Hanbury,“一種計算準確 Hausdorff 距離的有效算法。” IEEE 模式分析和機器智能匯刊,第一卷。 2015 年,第 37 頁,第 2153-63 頁。

例子

求兩個二維坐標數組之間的有向 Hausdorff 距離:

>>> 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)])
>>> directed_hausdorff(u, v)[0]
2.23606797749979
>>> directed_hausdorff(v, u)[0]
3.0

求兩個二維坐標數組之間的一般(對稱)豪斯多夫距離:

>>> max(directed_hausdorff(u, v)[0], directed_hausdorff(v, u)[0])
3.0

求生成 Hausdorff 距離(Hausdorff 對)的點的索引:

>>> directed_hausdorff(v, u)[1:]
(3, 3)

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.spatial.distance.directed_hausdorff。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。