豪斯多夫(Hausdorff)距离

简介: 豪斯多夫距离量度度量空间中真子集之间的距离。Hausdorff距离是另一种可以应用在边缘匹配算法的距离,它能够解决SED方法不能解决遮挡的问题。

一、定义

给定欧氏空间中的两点集 $A= \{a_1,a_2,...\},B= \{b_1,b_2,...\}$ ,豪斯多夫(Hausdorff)距离就是用来衡量这两个点集间的距离。定义公式如下:
$$ H(A,B)=\max[h(A,B),h(B,A)] $$其中,
$$ h(A,B)=\max_{a\in A}\min_{b\in B} ||a-b||\\ h(B,A)=\max_{b\in B}\min_{a\in A} ||b-a|| $$
$H(A,B)$ 称为双向 Hausdorff 距离, $h(A,B)$ 称为从点集A到点集B的单向 Hausdorff 距离。相应地 $h(B,A)$ 称为从点集B到点集A的单向 Hausdorff 距离。

二、例子

下面从一个例子来理解 Hausdorff 距离:

2020032216470419.png

上图中,给出了 A,B,C,D 四条路径,其中路径 A 具体为(16-17-18-19-20),路径 B 具体为(1-2-3-4-9-10)。要求 Hausdorff 距离 $H(A,B)$,则需要先求出单向 Hausdorff 距离 $h(A,B)$ 和 $h(B,A)$。

  对于$h(A,B)$,以 A 中的点 16 为例,在路径 B中的所有点中,距离点 16 最近的是点 1 ,距离为 3。即: $$\min_{b\in B} ||a_{(16)}-b||=3$$

同理由图可得:
$$ \min_{b\in B} ||a_{(17)}-b||=3\\ \min_{b\in B} ||a_{(18)}-b||=3\\ \min_{b\in B} ||a_{(19)}-b||=2\\ \min_{b\in B} ||a_{(20)}-b||=2\\ $$
在它们中,值最大的为 3,故 $h(A,B)=3$ 。

同理可得,$h(B,A)=4$ 。

所以 $H(A,B)=max[h(A,B),h(B,A)]=4$ 。

  同理可求出上图中四条路径间的单向 Hausdorff 距离如下表所示:

20200322170043657.png

三、性质

  • 双向 Hausdorff 距离 $H(A,B)$ 是单向 Hausdorff 距离 $h(A,B)$ 和 $h(B,A)$ 两者中较大者,显然它度量了两个点集间的最大不匹配程度。

20200322172603598.png

  • 如上图,当 A 和 B 都是闭集的时候,Hausdorff 距离满足度量的三个定理:
  1. $H(A,B)\geq0$ ,当且仅当 $A=B$ 时,$H(A,B)=0$
  2. $H(A,B)=H(B,A)$
  3. $H(A,B) + H(B,C)\geq H(A,C)$
  • 若凸集 $A,B$ 满足 $A\not\subset B$ 且 $B\not\subset A$,并记 $\partial A,\partial B$ 分别为 $A,B$ 边界的点集合,则 $A,B$ 的 Hausdorff 距离等于 $\partial A,\partial B$ 的 Hausdorff 距离。

  • Hausdorff 距离易受到突发噪声的影响。

    20200324115150423.png

当图像受到噪声污染或存在遮挡等情况时,原始的 Haudorff 距离容易造成误匹配。所以,在1933年,Huttenlocher 提出了部分 Hausdorff 距离的概念。
简单地说,包含 $q$ 个点的集合 $B$ 与集合 $A$ 的部分 Hausdorff 距离就是选取 $B$ 中的 $K(K\geq1且K\leq{q})$ 个点,然后求这 $K$ 个点到 $A$ 集合的最小距离,并排序,则排序后的第 $K$ 个值就是集合 $B$ 到集合 $A$ 的部分单向 Hausdorff 距离。定义公式如下:
$$ h_K(A,B)=K^{th} \max_{a\in A}\min_{b\in B}||a-b|| $$
相应地,部分双向 Hausdorff 距离定义为:
$$ H_K(A,B)=\max[h_K(A,B),h_K(B,A)] $$

参考:

https://www.cnblogs.com/xlz10/p/3929119.html

相关文章
|
3月前
|
C++
已知线段上某点与起点的距离,求该点的坐标
已知线段上某点与起点的距离,求该点的坐标
38 1
五种常用距离的代码实现:欧式距离、曼哈顿距离、闵可夫斯基距离、余弦相似度、杰卡德距离
五种常用距离的代码实现:欧式距离、曼哈顿距离、闵可夫斯基距离、余弦相似度、杰卡德距离
|
6月前
|
机器学习/深度学习 算法 前端开发
公交站间的距离
公交站间的距离
76 0
|
6月前
|
存储 C++ 容器
[C++] 点到直线的最大、最小距离
[C++] 点到直线的最大、最小距离
102 0
|
机器学习/深度学习 搜索推荐 数据挖掘
常见的几种距离量度(欧式距离、曼哈顿距离、切比雪夫距离等)
在机器学习和数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离。本文介绍几种常用的距离量度方法。
838 0
|
编译器 C语言 C++
移动距离
X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3... 当排满一行时,从下一行相邻的楼往反方向排号。 比如:当小区排号宽度为6时,开始情形如下:
151 1
移动距离
|
算法
曼哈顿距离和欧式距离
曼哈顿距离和欧式距离
516 0
曼哈顿距离和欧式距离
平面上给定n条线段,找出一个点,使这个点到这n条线段的距离和最小。
题目:平面上给定n条线段,找出一个点,使这个点到这n条线段的距离和最小。 源码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 ...
1108 0
根据经纬度计算距离
#region 计算经纬度 private const double EARTH_RADIUS = 6378137; /// /// 计算两点位置的距离,返回两点的距离,单位 米 /// 该公式为GOOGLE提供,误差小于0.
1110 0