参考:https://qinqianshan.com/math/algorithm/geometric-hashing/
几何哈希(geometry hashing)最初是在计算机视觉中开发的一种技术,用于将几何特征与此类特征的数据库进行匹配。即使可识别的数据库对象已经经过转换,或者只有部分信息存在,匹配也是可能的。该方法效率高,多项式复杂度低。
目标识别是大多数计算机视觉研究的最终目标。理想的物体识别系统应该能够识别图像中被部分遮挡或经历了几何变换的物体。 大多数系统将使用大型模型数据库并应用基于模型的识别。
假设您想让机器人能够识别工厂车间的所有物体和工具。 如果只有几百个对象,您可以设计这些对象的数据库并将其存储在机器人的内存中。 当机器人从摄像机或距离传感器接收其环境的感官图像时,它应该能够从存储器中快速检索出现在图像中的对象。 虽然在人类视觉中很自然,但机器人中的这项任务需要解决几个复杂的问题:
- 获取场景中的对象相对于其初始数据库位置显示为旋转和平移,并且整个场景经历依赖于传感器的变换,例如摄像机的投影变换。
- 场景中的对象可能部分地相互遮挡,并且场景可能包括未包括在数据库中的其他对象。
- 从数据库中检索每个单独的对象并将其与搜索匹配的观察场景进行比较在计算上是低效的。 例如,如果场景仅包含圆形对象,则检索与其匹配的矩形对象没有意义。
我们需要一种允许直接访问相关信息的方法 - 例如基于索引的方法。 例如,如果要查找长文本字符串中的单词,则可以使用由作为单个单词的函数的索引访问的表。 该表包含单词出现的字符串以及单词在字符串中的位置。 通过从表中检索所有出现情况来定位单词很容易。
这种方法最初被提出用于几何对象识别,利用基于局部几何特征的指数,这些指数对于对象变换保持不变。 这些特征是处理部分遮挡的局部特征,并且它们的索引函数对于相关变换是不变的,因为与文本中的单词不同,几何特征具有位置和方向。 十多年来,基于索引的方法已成为构建可与大型模型数据库一起运行的工作识别系统的首选方法。
在其现代化的形式中,几何散列是一种基于索引方法的方法,起源于Schwartz和Sharir的工作。这些第一步努力集中在使用边界曲线匹配技术从轮廓中识别旋转,平移和部分遮挡的二维物体。与简化的文本类比相反,实现技术更复杂,需要形状信息而不仅仅是局部特征的位置。 两种形状可以具有相同的局部特征,但在外观上完全不同。 如果形状的刚性是保守的,那么不仅局部特征而且它们的相对空间配置也很重要。
为了利用几何一致性并在二维和三维环境中处理基于模型的物体识别,Schwartz,Wolfson和Lamdan开发了一种新的几何散列技术,适用于任意点集或星座,在各种几何变换下。 他们开发了有效的算法,用于识别由点集或由透视变换的仿射近似下的曲线表示的平面刚体,并且它们扩展了在任意变换下识别点集的技术,并将刚性3D对象与单个2D图像区分开来。
由于这项早期工作,许多研究小组已经建立和使用几何哈希系统。大多数实现都像经典的基于模型的视觉系统一样工作,总体上实现了更高的效率。其中一个优点是几何哈希本质上是并行的。事实上,由于通信和维护成本很低,底层数据结构可以很容易地在多个协作处理器之间构造和共享,并且该技术已经在连接机器上得到了应用。
研究人员也很快发现,不变量空间上的指数分布是不均匀的。(然而,这种非一致性并不特定于几何散列,但似乎是所有索引方案的特有特性。)从实际角度看,非均匀分布导致哈希条目列表的长度不同。由于最长列表的长度决定了算法执行直方图相位所需的时间,不均匀的分布将对算法的性能产生不利影响。然而,均匀的分布不仅可以减少执行时间,而且可以使哈希表数据结构的存储效率大大提高。此外,在并行实现中,所有散列箱的或多或少的恒定共存会导致处理器之间的负载平衡得到改善。对不变量空间上的索引分布表达式的了解,极大地促进了哈希表占用率的均衡。
此外,对于模型经历相似或仿射变换的情况,可以将噪声模型合并到几何散列框架中,并分析确定其对不变量的影响。该分析详细描述了该方法在存在噪声时的行为。
有了这个增强框架,你就可以用贝叶斯方法来进行几何哈希的目标识别。传统的几何哈希算法在误差模型层和贝叶斯层的基础上进行了扩展,从而可以创建能够处理真实照片和大型模型数据库的工作系统。
Underlying ideas
在目标识别中,几何哈希法和索引法是一种高效且易于并行的方法。这些方法在基于模型的方案中特别有效,但由于它们也能处理部分遮挡的对象,因此在两两对象场景比较中也具有显著的优势。但是,这很困难,因为不知道将出现哪些数据库对象以及它们的姿态。模型信息在预处理步骤中编码并存储在大内存中,在本例中是一个哈希表。哈希表的内容与场景无关,可以离线计算,不影响识别时间。对内存的访问基于几何信息,该信息不受对象姿态的影响,并直接从场景中计算出来。
在识别阶段,当呈现一个场景时,该方法访问先前构建的哈希表,索引从场景中提取的特征的几何特性,以便与候选模型匹配。仍然需要搜索所有场景特性,但是几何哈希避免了搜索所有模型及其特性。
在识别阶段,当呈现一个场景时,该方法访问先前构建的哈希表,索引从场景中提取的特征的几何特性,以便与候选模型匹配。
场景特征包括点、直线段、曲线段、角点等,都是在特征提取阶段积累起来的。特征集合由一组点表示,每个点表示特征的位置。与每个点关联的是一个或多个属性的列表,具体取决于要素的类型。
假设我们希望在模拟线性变换的存在下对点特征模式进行识别,即点特征可以平移、旋转或缩放。(几何哈希可以处理其他转换,如刚性和仿射转换,但是相似性转换的难度适中,并且有效地展示方法。)
图1左侧为模型 M 1 M_1 M1,模型 M 1 M_1 M1由5个点组成,点的位置向量分别为 p 1 、 p 2 、 p 3 、 p 4 和 p 5 p_1、p_2、p_3、p_4和p_5 p1、p2、p3、p4和p5。我们希望对这个点信息进行适当的编码,并将其存储到一个表中。这样,如果系统在一个场景中检测到这种点的集合,就可以断定它们属于模型 M 1 M_1 M1。
如果我们假设每个点都有一个唯一的、独特的颜色,那么一个可能的索引方案(尽管过于简单)将使用该颜色作为点的索引:哈希箱中的一个条目将包括该点所属模型的标识。在识别阶段,系统将简单地扫描这些点,使用每个点的颜色访问哈希表,并增加被访问的表箱中出现的模型的数量。累积高计数的模型出现在场景中的概率很高。这种方案的计算复杂度与场景点的数量成线性关系。
然而,在信息最少的情况下,属于模型的点除了几何配置外没有其他属性,这时会发生什么呢?是否有一种独特的几何“颜色”?是的,一个点的自然几何“颜色”是它的坐标集合,但是坐标依赖于一个参照系。那么问题就变成了一个模型是否有一个自然的参照系,在部分遮挡下仍然存在。一个直接的选择是属于模型的一对点,并定义一个明确的参考系,如果模型经历旋转、平移和/或缩放,该参考系将保持不变。
让我们把点
(
p
4
,
p
1
)
(p_4, p_1)
(p4,p1)对作为一个有序基到这样一个参照系。如图1所示,我们缩放模型
M
1
M_1
M1,使
O
x
y
Oxy
Oxy系统中
p
4
p
1
→
\overrightarrow{p4p1}
p4p1的大小等于1。假设现在我们把点4和点1之间的中点放在坐标系
O
x
y
Oxy
Oxy的原点这样
p
4
p
1
→
\overrightarrow{p4p1}
p4p1就有了正x轴的方向。
M
1
M_1
M1的其余三个点将在三个地点着陆。让我们在三个容器中的每个容器中记录一个量化的哈希表,在这个表中,其余的点会得到这样一个事实:带有basis“(4,1)”的
M
1
M_1
M1模型在这个容器中产生一个条目。
由于我们的目标是在局部遮挡下进行识别,因此不能保证在模型
M
1
M_1
M1出现的每个场景中同时出现基本点p1和p4。同时,我们用所有可能的有序基对来编码模型点的信息。也就是说,哈希表包含三个表单条目(
M
1
M_1
M1,(4,2)),三个表单条目(
M
1
M_1
M1,(4,3))等等。每个条目的三元组是通过首先缩放模型
M
1
M_1
M1生成的,这样相应的基在
O
x
y
Oxy
Oxy坐标系中具有单位长度,然后,通过将基的中点放置在哈希表的原点处,使得基向量具有正x轴的方向。对数据库中的每个模型重复相同的过程。当然,一些哈希表容器可能会接收多个条目。因此,最终的哈希表数据结构将在每个哈希表bin中包含表单(模型、基)的条目列表。图2显示了M1模型的所有哈希表条目的位置。
本质上,我们所做的是用一对向量
p
x
s
≜
(
p
μ
2
−
p
μ
1
)
p^s_x\triangleq (p_{\mu _2}-p_{\mu_1})
pxs≜(pμ2−pμ1)和
p
y
s
≜
R
o
t
90
(
p
y
s
)
p^s_y \triangleq Rot_{90}(p^s_y)
pys≜Rot90(pys)来定义坐标系Oxy的标准正交基。
μ
1
\mu_1
μ1和
μ
2
\mu_2
μ2表示从模型
M
1
M_1
M1中取的不同点。对于每一个基的选择,其余的模型
M
1
M_1
M1中的点
p
p
p用这个方程表示在这个基中:
其中
p
0
s
=
(
p
μ
2
+
p
μ
1
)
/
2
p_0^s=(p_{\mu _2}+p_{\mu_1})/2
p0s=(pμ2+pμ1)/2是
p
μ
2
p_{\mu _2}
pμ2和
p
μ
1
p_{\mu_1}
pμ1的中点。标量
u
u
u和
v
v
v在
M
1
M_1
M1的相似性变换下保持不变,它们的量化允许我们确定一个索引
(
u
q
,
v
q
)
(u_q, v_q)
(uq,vq),该索引将带我们进入一个二维哈希表数据结构的位置。在通过
(
u
q
,
v
q
)
(u_q,v_q)
(uq,vq)访问的hash bin中,我们输入信息
(
m
,
(
p
μ
2
,
p
μ
1
)
)
(m,(p_{\mu _2},p_{\mu_1}))
(m,(pμ2,pμ1))。
在识别阶段,从图像中选择一对点(
p
μ
1
,
p
μ
2
p_{μ1},p_{μ2}
pμ1,pμ2)作为候选基。如前所述,该有序基定义一个坐标系Oxy,其中心与对的中点重合;基向量
p
μ
1
−
p
μ
2
p_{μ1}-p_{μ2}
pμ1−pμ2的方向与正x轴的方向重合。基向量的大小定义了Oxy的“单位”长度。然后,所有其他点的坐标在所选基定义的坐标系中计算。如图3所示,在访问的bin中找到的每一对(模型、基础)都有一个投票。
如果我们选择一对场景点,它们对应于其中一个模型上的一个基,我们期望它从属于这个模型的所有其他未包含的点获得的选票累积为它的得分。如果对于一个或多个(模型、基)组合有足够的选票,那么接下来的阶段将尝试验证一个模型的存在,该模型的指定基与所选的基点匹配。在模型点由于模糊而从图像中丢失的情况下,只要有足够数量的点散列到正确的存储箱中,识别仍然是可能的。每个bin中的条目列表可能很大,但由于存在许多可能的模型和基集,除非转换点的配置与模型或其一部分重合,否则单个模型和基集获得多个投票的可能性很小。
一般来说,我们不期望投票制度只提供一个候选人的解决办法。投票方案的目标是作为一个筛子,大大减少验证步骤的候选假设的数量。该算法的成功之处在于,可以选择任意一组属于某一模型的图像点作为基元组。没有必要假设特定模型点和特定场景点之间存在对应关系,因为所有模型和基对都冗余地存储在哈希表中。特征的分类或感知分组可以使场景特征的搜索更加有效——例如,只使用特定的基元组。
构成几何哈希系统核心的两个阶段如图4所示。
我们已经看到,当模型允许进行二维相似变换时,两个点足以定义一个基。然而,几何哈希表示一种统一的方法,也适用于在对象识别问题中遇到的许多其他有用的转换。一种应用程序与另一种应用程序的唯一不同之处在于必须用于构成参考系基础的特性的数量。当然,这在不同的情况下都会影响算法的计算复杂度,仍然是多项式。
下面的列表给出了一些应用这个通用范例的例子。几乎所有的情况都涉及点匹配。其他特征的使用,比如线条,可以通过类比来理解。第一个列表包括从2D数据中识别2D对象:
- 二维平移:该技术适用于使用单点基,该点被视为坐标系的原点。
- 2d中的平移和旋转:可以使用两点基,但有一个方向的点(例如,从边缘段获得)为基的唯一定义提供了足够的信息。
- 2D中的平移、旋转和缩放:前面已经讨论过。
- 二维仿射变换:三点基定义一个明确的参考系。
- 二维射影变换:恢复两个平面之间的射影变换需要四点基。
当三维数据(如物体的距离或立体数据)可用时,必须考虑从三维图像中识别三维物体。这种情况下技术的发展在工业环境中尤其重要,因为在工业环境中可以很容易地获得和使用三维数据。三维刚性变换(平移和旋转)的几何散列已经应用于cad/cam、医学成像以及分子生物学中的蛋白质比较和对接(如本期其他文章所述)。以下是三维转换的示例:
- 3D平移:如同在2D情况下,一个点的基础就足够了。
- 三维平移和旋转:这是刚体运动的有趣例子。由两条非共线组成的基就足够了。另外,可以使用带有附加三角边长度信息的三个点来定义基。
- 3D中的平移、旋转和缩放:由两条非共线和非平面线组成的基底就足够了。或者,可以使用点和线。
一般来说,如果:
- 数据库包含M个已知模型,每个模型包含n个特征
- 识别过程中的场景包含S个特征
- c特征是需要形成一个基础
那么预处理阶段的时间复杂度为 O ( M n c + 1 ) O(Mn^{c+1}) O(Mnc+1)。识别阶段的复杂度为 O ( H S c + 1 ) O(HS^{c+1}) O(HSc+1),其中H表示处理哈希表bin的复杂度。与所有哈希技术一样,H依赖于哈希表占用率和bin分布。如果表的大小是它所包含元素的顺序,并且分布是均匀的,那么访问复杂度H将等于O(1)。另一方面,如果表很小,或者所有特性都散列到几个箱子中,那么访问时间可能由表中元素的数量决定,即 M n c + 1 Mn^{c+1} Mnc+1。
然而,这种情况不太可能发生。需要注意的是,哈希表及其结构在重新编码阶段之前就已经知道了。因此,您可以评估这个结构,并决定是否需要应用重哈希过程、将表拆分为多个表,或者将索引结构更改为高维结构。同样重要的是要提到占用率高的箱子,这导致了大量的计算工作,可以简单地忽略——它们的信息内容不够突出,不足以帮助识别。因此,您可以预先确定要处理的哈希表桶的大小的上限。这一思想的扩展导致加权投票,其中仓的信息与仓的大小成反比。
在从单个二维图像中识别三维物体时,还存在不同维数的附加问题。提出了利用几何哈希来解决这一问题的几种方法;看其他地方。
Index distribution
其中一个特别重要的问题是当已知且固定的低阶变换时,不变量空间上的指数分布。该方法的基本原理是,所有的点特征都是恒等的、独立分布的,并遵循一个已知概率密度函数f()的随机过程。回想一下,用于访问哈希表的索引是方程1的量子化解(u, v)。由于生成点特征的随机过程的性质是已知的,因此可以用该表达式计算u和v的联合概率密度函数f(u, v)
其中
F
F
F是变换的雅可比(如方程式1所示)。对该积分的计算得到了所考虑的变换不变量空间上的指数分布。
例如,在由高斯随机过程生成的相似变换和特征点的情况下:
2的积分产额的计算
综合生成的索引的不变量在空间上的分布,以及它的几个轮廓,如图5所示,被编码为高度的哈希表被占据。
当产生包含各种数据库模型的特征点的随机过程未知时,通常可以使用数值技术获得概率密度函数的近似f*():可以在方程2中使用f*()而不是f()。或者,可以使用f*(u, v)的数值近似。
From hashing to rehashing
如果在不变量空间上分布索引的概率密度函数可用,则可以有效地使用它来提供存储需求和性能方面的实质性改进。概述的方法通常适用于所有基于索引的对象标识方法。
哈希表的非均匀占用导致了包含大量条目的表。由于最长的这样的列表支配了在直方图阶段所花费的时间,所以条目的单形式分布是可取的。通过变换点位置的坐标,使等步长量化器在不变量空间中得到期望的均匀分布,从而得到均匀分布。为此目的,需要知道未变换坐标(即不变量的元组)分布的期望联合概率密度函数f(u, v)(或其近似值)。
本质上,我们寻求一个映射 H : R 2 → R 2 H:\mathbb{R}^2 \rightarrow \mathbb{R}^2 H:R2→R2,它在一个矩形哈希表上均匀分布哈希bin条目。注意,函数h的范围是经过变换的不变量的空间,而不是从输入中提取的特征的空间。
对于上面的相似度变换例子,其中一个映射如下:
在这个表达式中,atan(⋅,⋅)返回区间
(
−
π
,
π
)
(−π,π)
(−π,π)中的相位。值得注意的是,计算出来的重哈希函数没有将特征生成过程的标准差s作为参数。图6显示了对合成数据进行哈希表均衡的结果。哈希表左上角的参考峰值从图5中复制,并提供了重哈希操作带来的好处的度量。显然,重新映射非常有效。该表的bins与图5中的相同。
Exploiting exixting symmetries
除了使用重哈希函数所节省的开销之外,还可以节省更多的计算开销和存储开销。对称通常存在于哈希表中条目的存储模式中;这些对称独立于重哈希函数的使用,因此可以与重哈希函数一起使用。
对于刚性和相似性变换,对称关系是关于一点的:为每一个条目的形式 ( µ ( µ 1 , µ 2 ) ) (µ(µ_1,µ_2)) (µ(µ1,µ2))在位置 ( u , v ) (u, v) (u,v)的哈希表,将会有一个条目 ( µ ( µ 2 , µ 1 ) ) (µ(µ_2,µ_1)) (µ(µ2,µ1))在位置 ( − u , − v ) (−u, -v) (−u,−v)。仿射变换的对称性对轴:每个条目的形式 ( µ ( µ 1 , µ 2 ) ) (µ(µ_1,µ_2)) (µ(µ1,µ2))在哈希表的位置 ( u , v ) (u, v) (u,v)将有一个同行 ( µ ( µ 2 , µ 1 ) ) (µ(µ2,µ1)) (µ(µ2,µ1))在位置 ( v , u ) (v, u) (v,u)。这一点的实际重要性在于,我们可以以最少的额外记帐为代价处理一半的哈希表。这将导致条目列表的长度平均为现有处理器集的一半,从而导致预期的速度提高2倍。
Noise modeling
到目前为止,我们一直含蓄地假设预处理和识别阶段的特征点都是无噪声的,这一假设在实践中并不成立。图7显示了该方法的性能作为噪声量的函数。输入噪声会导致位置误差,而位置误差又转化为计算不变量中的误差。“小”输入误差将产生相同的计算不变量,从而产生与无噪声输入相同的索引。小的语义直接依赖于不变量空间量化的粗糙性。一旦确定了这种粗度,就会隐式地在哈希表中构建一个相关的容忍度。
位置错误通常转化为“错误”哈希表索引的计算。但是,由于所使用的哈希函数的性质,如果输入是无噪声的,则相应的“错误”桶与“正确”桶是相邻的(在欧几里德意义上)。这个问题的其他解决方案包括访问表的一个矩形区域,而不是一个箱子或加权投票。
在识别阶段要访问的邻域的精确形状是非常复杂的。特别是,需要访问的区域的大小、形状和方向直接取决于所选的基元组,以及计算出的哈希位置。图8显示了特定点排列和相似变换之间的这种依赖关系。当允许仿射变换时,区域形状的变化更为明显。
由于最终目标是创建能够在有噪声存在的情况下令人满意地工作的系统,因此该方法通过合并噪声模型得到了增强。推导出的公式,除了在量化观察到的行为,证明也兼容贝叶斯解释几何哈希。
首先,将传感器噪声作为加性高斯扰动进行建模。各特征点的扰动被认为是统计独立的和分布式的高斯分布标准差 σ σ σ,集中在“真”值的变量。这些错误通过选择的哈希函数传播,并删除二阶和高阶错误项。
推导出的表达式使我们得出以下定性结论:
- 两个基点的分离越大,误差存在时不变量在空间中的扩散越小。
- 对于给定的基分离,我们在基坐标系中计算其坐标的点的距离也会影响扩散:这个点到坐标系中心的距离越小,不变量空间中的扩散越小。
- 不变量元组的索引能力与其对噪声的敏感性之间存在着一种权衡:不变量空间中相对未填充区域对应的索引值包含更多信息,但对噪声非常敏感——反之亦然。
Bayesian formulation
回想一下,给定包含 S S S点 S = { p l } l = 1 S S=\{ p_l\}^S_{l=1} S={pl}l=1S的场景 S S S,几何散列方法选择两个点作为基对,例如 B = { p μ , p ν } B=\{p_μ,p_ν\} B={pμ,pν},并尝试确定场景中是否存在模型。知识库由M个模型的数据库{ M k M _k Mk}组成,其中 k = 1 , … , M k = 1,…,M k=1,…,M。有时,验证步骤将无法找到一个获得足够支持的模型,此时将选择另一个基对并重复整个分析。每次分析的唯一证据来源是场景点的集合 S ′ = S − B S ' = S - B S′=S−B,但构成基础的那些点除外。
我们希望计算模型mk存在的概率 P r ( ( M k , i , j , ) ∣ S ′ ) Pr((M_k,i,j,)|S') Pr((Mk,i,j,)∣S′),模型的点 i i i和 j j j分别匹配基集 B B B的 p μ p_μ pμ和 p ν p_ν pν,基于由场景点 S ′ S' S′相对于基集计算的散列位置的信息。特别地,我们希望找到这个表达式在所有可能的 M k 、 i 、 j 和 B M _k、i、j和B Mk、i、j和B上的最大值——对象识别的最大似然方法。给定从 S ′ S ' S′生成的哈希值集合,使表达式最大化的模型/基组合是最有可能匹配的。一个合理的假设是,在没有任何匹配的情况下,即使最大赢家的概率值也不会很大。另一方面,如果存在匹配,那么对于B的某个选项(或者,很有可能是多项选择),对于某些选项 ( M k , i , j , B ) (M_k, i, j, B) (Mk,i,j,B)将有一个很大的概率值。如果存在多个模型,那么多个模型/基组合将共享很大的概率。确定那些导致最大概率的少数组合就足够了。的确,人们总是可以将这些“赢家”置于验证阶段。它只决定相对概率,而不是实际值。
需要额外的条件独立性假设:假设在表中出现 ( M k , i , j ) (M_k,i,j) (Mk,i,j)散列项的点附近期望有大量散列值,而在别处期望有均匀密度(或某些固定密度)。不管已知会发生什么其他散列值。如果特征选择得当,这些假设是合理的。
利用贝叶斯定理,上面的公式等价于最大化所有可能的模型/基组合和基选择。
这种最大化捕获了贝叶斯框架中几何散列方法的本质:使用场景中的点定义了基B之后,使用场景中各个点所携带的信息计算所有模型/基组合的投票,散列位置是相对于基B计算的。积累了大量选票(或大量加权选票)的模型/基组合可能是模型的实例:来自该模型的基组合将匹配所选的基B。已知模型的冗余表示消除了在得到答案之前对所有模型/基组合和基选择进行全面考虑的需要。此外,第二个和的每一项的分母都是附加到哈希空间中给定位置的期望概率密度值(其计算在前面已经概述过)。
我们可以量化场景点 p x \mathbf{p}_x px产生的特定哈希值对模型/基组合的贡献,从而将几何哈希方法扩展到贝叶斯最大似然模型匹配系统,具体如下:
在预处理过程中,每个模型 M k M _k Mk,以及由 M k M_ k Mk个点组成的每个基对,计算 M M M内每个点的哈希位置。在每一个这样的散列位置(x, y)我们可一个条目,其中包含的信息模型,基于对(i, j),模型指出,(除了基点),和预测协方差归一化半径,例如在相似变换的情况下是 τ = ( 4 ( x 2 + y 2 ) + 3 ) σ 2 τ=(4(x^2+y^2)+3)\sigma^2 τ=(4(x2+y2)+3)σ2。包含此信息的条目的组织方式是这样的:给定一个位置(u, v),所有在附近具有(x, y)值的记录都可以很容易地访问。
在识别、特征点是引起,从现场和试点形成使用一双这些点的例子,
p
µ
和
p
ν
p_µ和p_ν
pµ和pν。然后相对于基集计算S中剩余点的坐标,并对哈希域中的位置(u, v)进行哈希访问。访问表单的所有邻近记录
(
x
、
y
、
M
k
、
i
、
j
、
l
、
t
)
(x、y、M k、i、j、l、t)
(x、y、Mk、i、j、l、t)。对于每一个这样的邻近记录,我们对模型/基组合
(
M
k
,
i
,
j
)
(M_k, i, j)
(Mk,i,j)进行加权表决,对于相似性变换,表决的数量确定如下:
邻域被定义为一个包含z的表达式:如果相关z的值大于某个阈值,则认为某个东西在邻域中。注意,上面的表达式包含σ的值、场景点定位的预期误差、场景点的数量、
S
S
S和基对分离距离。z值只是表达式(方程4)的一个近似,它是哈希(u, v)对模型/基(Mk, i, j)的总贡献,通过忽略f中的除(x, y)项以外的所有项得到。
几何哈希方法允许系统识别对象,即使对象已经经历了任意的转换,并且其中的一部分可能被遮挡。该技术的优点在于它的效率,它在只存在部分信息的情况下进行操作的能力,以及它几乎适用于任何需要几何匹配的领域;它不需要任何领域特定的知识-边缘-只需要某些几何特征的位置。该方法已成功地应用于计算机视觉、CAD/CAM和医学成像等领域的模式匹配问题,其中一些问题已在本期专题中讨论。努西诺夫(Nussinov)和沃尔夫森(Wolfson)提出了一个有点出人意料的应用,19是在结构分子生物学20-21和药物化学方面的问题。
我们已经演示了该方法实现的信息量最小的特征:一点。包含更多信息的特征,如线段、弧和指定角的角,通过减少明确定义基所需的特征数量,显著加快了算法的速度。Stein和Medioni使用不同基数的连续边缘段(超段)组的灰色编码作为信息特征。他们的投掷系统使用特征曲线和局部差分补丁从距离传感器数据中识别三维目标。Forsyth等人使用基于平面曲线对的描述符;描述符在透视变换下是不变的,从而推广了Lamdan等人的仿射不变曲线匹配方法。
几何哈希通过索引(或哈希)大内存中的几何不变量来提高其效率。匹配过程可以分为两个阶段,复杂程度是一个阶段加一个阶段,而不是相乘;预处理阶段可以离线进行。在此阶段,系统使用反式格式不变的访问键在哈希表中存储相应的事件信息。在识别阶段,系统直接访问存储器的相关位置,不需要对多余的信息进行重新筛选。该技术的一个优点是,各种成功的再试,或击中,得分的方式预先服务于对象的整体刚性约束,从而提高“正确”的假设。
何哈希方法最近被扩展到有效地处理内部自由度的对象匹配,如旋转或滑动(移动)关节。这是一个重要的扩展,因为机器人、人类、许多人造物体和生物分子可以被建模为由这些关节连接的刚性子部件组成的组件。该技术及其衍生物已应用于计算机视觉中铰接物的识别、柔性受体-药物分子的对接、药物数据库中部分相似分子的检测等领域。该扩展的一个有趣之处是,应用于刚体匹配的几何哈希和广义霍夫变换技术都可以看作是这种新的柔性对象匹配技术的特例。