用于查找最近邻的方法和设备与流程

文档序号:12040318阅读:323来源:国知局
用于查找最近邻的方法和设备与流程
本发明涉及一种用于查找最近邻的方法和装置。更特别地,本发明涉及多维数据(例如,矢量)的分类、搜索和匹配以查找最近邻。该方法作为尺度不变特征转换(SIFT)算法的一部分尤其有用。

背景技术:
美国专利6711293B1的发明人罗尔(Lowe)利用了被认为是最优柱优先(Best-bin-first)搜索的k维树算法(k-dtreealgorithm)的修正,最优柱优先搜索算法能够只利用有限量的计算以很大的概率识别最近邻。US2010/0067745公开了一种用于视频中的对象收集和识别的方法。尤其是,它涉及人脸图像的识别。该方法利用了很可能与同一人相关联的视频对象的集群。如果新图像到现有集群的距离小于预定的第一阈值距离,则该新图像被视为属于该集群。如果新图像到该集群的距离大于第二阈值距离(该第二阈值距离小于该第一阈值距离),则该新图像成为该集群的一部分。Ye,L.等人的“AutocannibalisticandAnyspaceIndexingAlgorithmswithApplicationstoSensorDataMining”,加利福尼亚大学计算机科学与工程系,Riverside,US,85-96,提供了变化的Orchard算法(Orchardalgorithm)。在此,牺牲了速度以减少对内存的需求。这一设计仔细推敲了牺牲多少速度以节约内存。然而,无论再怎样的情况下,该算法都要求了空间的最小值。在Orchard算法中,对于数据集的每项都计算出其近邻的分类表。对较大的数据集,这就需要大量的内存。在变化的Orchard算法中,相互接近的项与项的行被删除以节约空间。因此,搜索算法牺牲了速度以换取存储空间。Ye等人.进一步提出了动态的内存分配以对算法进行优化。VidalRuiz,E.,“Analgorithmforfindingnearestneighboursin(approximately)constantaveragetime”,PatternRecognitionLetters4(1986),145-157,涉及以近似恒定的平均时间复杂度(例如,与数据集的规模无关)查找给定样本的最近邻的算法。

技术实现要素:
最近邻的搜索问题(最近邻搜索,也被认为是接近度搜索、相似度搜索或最近点搜索)出现在众多应用领域当中,包括,但并不仅限于:模式识别(尤其用于光学特性识别);统计分类(k最近邻算法);计算机视觉;数据库中基于内容的图像检索;编码理论;数据压缩;推荐系统;网络销售;DNA测序;拼写检查(建议正确的拼写);剽窃检测;用于预测职业运动员的职业道路的相似度分数;集群分析(将一组观察数据分配到子集,(例如,集群)以便相同集群里的观察数据在某种程度上是相似的,该分配通常基于欧氏距离(Euclideandistance));多元密度估计和模式分类;以及机器学习。本发明的发明人发明出允许更短的查找时间,并且更能够容易地适用于并行处理以允许另外缩短查找时间的方法。根据本发明的一个方面,本发明涉及一种在由多个矢量组成的数据集中对一特定矢量进行匹配的方法,该方法包括以下步骤:i.选择一参考点矢量;ii计算所述参考点矢量与所述数据集中的所述矢量之间的距离d;iii.将所述数据集中的所述矢量分类到不同的组中,所述每个组中的矢量与所述参考点矢量有相同距离dgroup;iv.随后将包括两个以上矢量的所述每个组进行重新排列,以便所述组中的第二矢量到所述组中的第一矢量有最小距离,并且所述组中每个后续的矢量到组中的前一个矢量都有最小距离;v.识别对于所述特定矢量的最佳匹配,通过:a.计算所述参考点矢量和所述特定矢量之间的距离dspecific;b.识别具有最接近于计算的所述距离dspecific的距离d的矢量的一个或多个组;c.在所识别的一个或多个组中识别具有与所述特定矢量最近的距离dminimum的一个或多个矢量;d.识别与所述参考点矢量距离为d的任一额外的组,所述距离d从所述参考点矢量开始并且在从零矢量和dspecific-dminimum中的较大的一个到dspecific+dminimum的区间上;以及e.重复步骤4.3和4.4直到在所述区间上的所有组都被验证过。本领域的技术人员将意识到,该方法同样适用于矩阵和张量。用于更佳的匹配的搜索适用于并行处理。本领域的技术人员将更进一步地意识到,该方法能够很容易地适用于查找第二佳的匹配、第三佳的匹配,等等。根据本发明的一个方面,本发明涉及一种在由多个矢量组成的数据集中对一特定矢量进行匹配的方法,其中,所述多个矢量表现出尺度不变特征;为了在至少一幅图像中识别尺度不变特征,所述方法包括:i.选择一参考点矢量;ii计算所述参考点矢量与所述数据集中的所述矢量之间的距离d;iii.将所述数据集中的所述矢量分类到不同的组中,所述每个矢量与所述参考点矢量有相同距离dgroup;iv.随后将包括两个以上矢量的所述每个组进行重新排列,以便所述组中的第二矢量到组中的第一矢量有最小距离,并且组中每个后续的矢量到所述组中的前一个矢量都有最小距离;v.识别对于所述特定矢量的最佳匹配,通过:a.计算所述参考点矢量和所述特定矢量之间的距离dspecific;b.识别具有最接近于计算的所述距离dspecific的距离d的矢量的一个或多个组;c.在所识别的一个或多个组中识别具有与所述特定矢量最接近的距离dminimum的一个或多个矢量;d.识别与所述参考点矢量距离为d的任一额外组,所述距离d从所述参考点矢量开始并且在从零矢量和dspecific-dminimum中的较大的一个到dspecific+dminimum的区间上;以及e.重复步骤4.3和4.4直到在所述区间上的所有组都被验证过。根据本发明的一个方面,本发明涉及一种在由多个矢量组成的数据集中对一特定矢量进行匹配的方法,所述方法包括:i.选择一参考点矢量;ii计算所述参考点矢量与所述数据集中的矢量之间的距离d;iii.将所述数据集中的所述矢量分类到不同的组中,所述每个组中的矢量与所述参考点矢量有相同距离dgroup;iv.随后将包括一个或者多个矢量的所述每个组进行重新排列,以便所述组中的第二矢量到所述组中的第一矢量有最小距离,并且组中每个后续的矢量到组中的前一个矢量都有最小距离;这一方面使随后的数据集中的特定矢量能够快速匹配。根据本发明的一个方面,本发明涉及一种在由多个矢量组成的数据集中对一特定矢量进行匹配的方法,所述多个矢量在至少一幅图像中表现出尺度不变特征;为了随后在至少一幅图像中识别尺度不变特征,所述方法包括以下步骤:i.选择一参考点矢量;ii计算所述参考点矢量与所述数据集中的矢量之间的距离d;iii.将所述数据集中的所述矢量分类到不同的组中,所述每个组中的矢量与参考点矢量有相同距离dgroup;iv.随后将包括一个或者多个矢量的所述每个组进行重新排列,以便所述组中的第二矢量到组中的第一矢量有最小距离,并且组中每个后续的矢量到组中的前一个矢量都有最小距离。根据本发明的一个方面,本发明涉及一种识别图像特征的方法,所述图像特征在由多个像素所定义的原始图像中的不同尺度上是稳定的,所述方法包括:i.通过对将不同的模糊度应用于所述原始图像得到的差值进行计算,由一个原始图像得到多个差分图像;ii在所述多个差分图像上找出像素幅度极值;iii.对于每个所述差分图像上的每个所述像素产生一像素梯度矢量;iv.利用根据本发明的方法,将矢量方向与关联于每个差分图像的各自当前的最大及最小幅度像素相联系。根据本发明的一个方面,本发明涉及一种用于在由多个像素所定义的图像中识别尺度不变特征的图像处理设备,所述图像处理设备包括处理器电路,所述处理器电路配置为:实现根据本发明的方法。根据本发明的一个方面,本发明涉及实现根据本发明的方法的软件程序。根据本发明的一个方面,本发明涉及计算机程序,所述计算机程序包程序代码模块,所述程序代码模块用于当所述程序在计算机上运行时,执行任意一个方法权利要求中的所有步骤。根据本发明的一个方面,本发明涉及一计算机程序产品,所述计算机程序产品包括存储在计算机可读介质上的程序代码模块,所述程序代码模块用于当所述程序产品在计算机上运行时,执行任意一个方法权利要求中的所有步骤。具体实施方式以下提供了附加的方面以及实施例。根据本发明的一个实施例,本发明涉及一种用于在由多个矢量组成的数据集中对一特定矢量进行匹配的方法,该方法包括以下步骤:i.选择一参考点矢量;ii计算所述参考点矢量与所述数据集中的矢量之间的距离d;iii.将所述数据集中的矢量分类到不同的组,所述每个组中的矢量与所述参考点矢量有相同距离dgroup;iv.随后将包括两个以上矢量的所述每个组进行重新排列,以便所述组中的第二矢量到所述组中的第一矢量有最小距离,并且所述组中每个后续的矢量到组中的前一个矢量都有最小距离;v.识别对于所述特定矢量的最佳匹配,通过:a.计算所述参考点矢量和所述特定矢量之间的距离dspecific;b.识别具有最接近于计算的所述距离dspecific的距离d的矢量的一个或多个组;c.在所识别的一个或多个组中识别具有与所述特定矢量最接近的距离dminimum的一个或多个矢量;d.识别与所述参考点矢量距离为d的任一额外组,所述距离d从所述参考点矢量开始并且在从零矢量和dspecific-dminimum中的较大的一个到dspecific+dminimum的区间上;以及e.重复步骤5.3和5.4直到在所述区间上的所有组都被验证过。因为dspecific-dminimum可能小于零,所以有必要取零和dspecific-dminimum之中的较大的一个。优选地,使用整个区间,例如,包括从所述参考点矢量开始并且距离的限制值1)为零和dspecific-dminimum中的较大值以及2)dspecific+dminimum。在次选的方法中,当仅仅找到良好的候选点时,仅仅使用这个区间上的组(例如,为了节省时间)。当识别到更好的匹配时,距离dminimum变得更短。因此,区间dspecific-dminimum到dspecific+dminimum变得更小,并且检查的额外组的数量减少。对于更佳的匹配的查找适用于并行处理;例如,可以通过对具有短于dspecific的距离d的组以及独立地对具有大于dspecific的距离d的组进行搜索来进行搜索。这样的独立的搜索能够适当地比较并且接着共享迄今为止所识别出的最短距离dminimum。此外,本方法能够很容易地适用于查找第二佳的匹配、第三佳的匹配,等等。根据本发明的一个方面,本发明涉及一种在由多个矢量组成的数据集中对一特定矢量进行匹配的方法,其中,所述多个矢量表现出尺度不变特征;为了在至少一幅图像中识别尺度不变特征,所述方法包括:ix.选择一参考点矢量;x.计算所述参考点矢量与所述数据集中的所述矢量之间的距离d;xi.将所述数据集中的所述矢量分类到不同的矢量组中,所述每个组中的矢量与参考点矢量有相同距离dgroup;xii随后将包括多于两个矢量的所述每个组进行重新排列,以便所述组中的第二矢量到组中的第一矢量有最小距离,并且组中每个后续的矢量到所述组中的前一个矢量都有最小距离;xiii.识别对于所述特定矢量的最佳匹配,通过:a.计算所述参考点矢量和所述特定矢量之间的距离dspecific;b.识别具有最接近于计算的所述距离dspecific的距离d的矢量的一个或多个组;c.在所识别的一个或多个组中识别具有与所述特定矢量最接近的距离dminimum的一个或多个矢量;d.识别与所述参考点矢量距离为d的任一额外组,所述距离d从所述点矢量开始并且在从零矢量和dspecific-dminimum中的较大的一个到dspecific+dminimum的区间上;以及e.重复步骤5.3和5.4直到在所述区间上的所有组都被验证过。根据本发明的一个实施例,该实施例涉及根据本发明的一种方法,其中,接下来的待检验的组是具有最接近dspecific的距离d的未检验的组。对于未检验的组,组中的矢量还没有被检验以进行相比dminimum更接近于特定矢量的矢量的识别。可替代地,可使所述查找,例如,开始于具有最接近dspecific的距离的组并且在未检验的组中依次递减或递增;或者优选地,利用并行处理,同时递减和递增。根据本发明的一个实施例,该实施例涉及根据本发明的一种方法,其中,所述矢量在至少一个图像中表现出特征。根据本发明的一个实施例,该实施例涉及根据本发明的一种方法,其中,所述矢量在至少一个图像中表现出尺度不变特征。根据本发明的一个实施例,该实施例涉及根据本发明的一种方法,其中,所述方法用于在至少一个图像中识别尺度不变特征。根据本发明的一个实施例,该实施例涉及根据本发明的一种方法,其中,所述矢量是多维的。根据本发明的一个实施例,该实施例涉及根据本发明的一种方法,其中,将所述距离d、dgroup、dspecific以及dminimum作为组中的选择的距离进行计算,所述组包含欧式(Euclidean)距离、马氏(Mahalanobis)距离、曼哈坦(Manhattan)距离、切比雪夫(Chebyshev)距离以及闵科夫斯基(Minkowski)距离。马氏距离意味着基于协方差矩阵的标准化以使得距离按比例尺度不变。曼哈坦距离意味着仅仅沿轴对齐方向测量距离。切比雪夫距离意味着测量距离时假设只与最重要的维相关。闵科夫斯基距离意味着统一了欧氏距离、曼哈坦距离和切比雪夫距离的概括。根据本发明的一个实施例,该实施例涉及根据本发明的一种方法,其中,将所述距离d、dgroup、dspecific以及dminimum作为欧式距离进行计算。根据本发明的一个实施例,该实施例涉及根据本发明的一种方法,其中,所述参考点矢量在数据集中选取。根据本发明的一个实施例,该实施例涉及根据本发明的一种方法,其中,所述参考点矢量选为数据集的中点。根据本发明的一个方面,本发明涉及一种对由多个矢量组成的数据集进行排列的方法,所述多个矢量用于对该数据集中的一特定矢量进行后续匹配,所述方法包括:i.选择一参考点矢量;ii计算所述参考点矢量与所述数据集中的矢量之间的距离d;iii.将所述数据集中的所述矢量分类到不同的矢量组中,所述每个组中的矢量与参考点矢量有相同距离dgroup;iv.随后将包括多于两个矢量的所述每个组进行重新排列,以便所述组中的第二矢量到所述组中的第一矢量有最小距离,并且组中每个后续的矢量到组中的前一个矢量都有最小距离;根据本发明的一个方面,本发明涉及一种对由多个矢量组成的数据集进行排列的方法,所述多个矢量用于对所述数据集中的一特定矢量进行后续匹配,所述多个矢量在至少一幅图像中表现出尺度不变特征;为了随后在至少一幅图像中识别尺度不变特征,所述方法包括以下步骤:i.选择一参考点矢量;ii计算所述参考点矢量与所述数据集中的矢量之间的距离d;iii.将所述数据集中的所述矢量分类到不同的矢量组中,所述每个组中的矢量与所述参考点矢量有相同距离dgroup的矢量组成;iv.随后将包括多于两个矢量的所述每个组进行重新排列,以便所述组中的第二矢量到组中的第一矢量有最小距离,并且组中每个后续的矢量到组中的前一个矢量都有最小距离;根据本发明的一个实施例,本发明涉及所述方法的这一方面,所述方法用于在由多个矢量组成的数据集中对一特定矢量进行匹配,优选地,以在至少一个图像中识别尺度不变特征,所述方法包括:v.识别对于所述特定矢量的最佳匹配,通过:a.计算所述参考点矢量和所述特定矢量之间的距离dspecific;b.识别具有最接近于计算的所述距离dspecific的距离d的矢量的一个或多个组;c.在所识别的一个或多个组中识别具有与所述特定矢量最接近的距离dminimum的一个或多个矢量;以及d.识别与所述参考点矢量距离为d的任一额外组,所述距离d从所述参考点矢量开始并且在从零矢量和dspecific-dminimum中的较大的一个到dspecific+dminimum的区间上;以及e.重复步骤5.3和5.4直到在所述区间上的所有组都被验证过。本实施例说明所述方法的这一方面可以首先排列数据集,并且随后允许每一次匹配都快速完成。根据本发明的一个实施例,本发明涉及一种根据本发明的识别图像特征的方法,所述图像特征在由多个像素所定义的原始图像中的不同尺度上是稳定的,所述方法包括:i.通过对将不同的模糊度应用于所述原始图像上得到的差值进行计算,由所述原始图像得到多个差分图像;ii在所述多个差分图像上找出像素幅度极值;iii.对于每个所述差分图像上的每个所述像素产生一像素梯度矢量;iv.利用根据本发明的方法,将矢量方向与关联于每个差分图像的各自当前的最大及最小幅度像素相联系。根据本发明的一个实施例,本发明涉及一种用于在由多个像素所定义的图像中识别尺度不变特征的图像处理设备,所述图像处理设备包括处理器电路,所述处理器电路配置为:实现根据本发明的方法。根据本发明的一个实施例,本发明涉及根据本发明的图像处理设备,所述图像处理设备包括多个芯片,其中每个所述芯片配置为执行针对特定矢量的最佳匹配的识别的一部分。根据本发明的一个实施例,本发明涉及根据本发明的图像处理设备,所述图像处理设备包括由GPU、DSP、FPGA和ASIC组成的组中的至少一个所选元件。根据本发明的一个实施例,本发明涉及根据本发明的图像处理设备,所述图像处理设备包括:用于储存所述参考点矢量、所述数据集当中分类后的矢量、所述距离d和所述距离dgroup的装置;以及用于接收所述特定矢量的装置。根据本发明的一个实施例,本发明涉及计算机程序,所述计算机程序包括程序代码模块,所述程序代码模块用于当在计算机上运行所述程序时,执行权利要求中的任意一个中的所述方法的所有步骤。根据本发明的一个实施例,本发明涉及计算机程序产品,所述计算机程序产品包括存储在计算机可读介质上的程序代码模块,所述程序代码模块当所述程序产品在计算机上运行时,用于执行任意一个方法权利要求中的方法。根据本发明的一个实施例,本发明涉及执行根据本发明的方法的软件程序。根据本发明的一个实施例,本发明涉及根据本发明的软件程序,所述软件程序适用于在由多个像素定义的一个图像中识别尺度不变特征。所有引用的参考文献都通过引用而并入本文。附图和示例被用于说明而非限制本发明。很清楚,对于本领域内的技术人员,本发明的各个方面、实施例和权利要求可以结合使用。附图说明如下为附图并且将在随后对有些附图作进一步的说明。图1示出作为数据库规模的函数的预期的查找量。图2示出再分配的内存的一个说明示例。图3示出映射到欧式空间上的圆中的点的一个说明示例。图4示出分类的先进先出(FIFO)单元数据字段的一个示例。图5A示出扩展FIFO中的数据分配的一个说明示例。图5B示出数据分类过程的一个实施例。图5C示出矢量匹配过程的一个实施例。图5D示出粗提取的一个实施例。图5E和5F示出精提取的一个实施例。图6示出描述第一分类方法的流程图。图7示出描述第二分类方法的流程图。图8示出描述粗提取和数据矢量匹配方法的流程图。图9示出描述对小型数据库进行粗提取和数据矢量匹配方法的流程图。图10示出图9的延续。图11示出图9的延续。图12示出图9的延续。图13示出用于本发明的方法的硬件实现的示意图。图14示出在欧式空间(Euclideanspace)中进行映射的一个说明示例。选择一参考点矢量(由箭头1的顶端示出)。在图14中,参考点矢量在坐标轴的原点上。与参考点矢量等距离的矢量集中在一起。这由图14中的圆示出,并且,对于这一组,与参考点矢量的相等距离为dgroup。对参考点矢量和一待被匹配的特定矢量(由箭头2的顶端示出)间的距离dspecific进行计算。选择具有最接近于dspecific的dgroup的矢量的组。在这些组中找出与特定矢量距离为最小距离dminimum的矢量。随后,需要对距离在从零矢量和dspecific-dminimum中的较大的一个到dspecific+dminimum的区间上的未检验的组进行检验。一旦识别到具有更小的最小距离dminimum的矢量,则需要对更少的未检验的组进行查找以识别更好的匹配。示例本示例涉及实现本发明的实施例的一种方法,所述方法用于通过组织和搜索存储器单元中的n维数据矢量进行高速数据矢量匹配。该方法对于几种应用来说是很有用的,这些应用例如,涉及多维搜索关键字的搜索(例如,范围搜索和最近邻搜索)。本方法依赖于在特殊的存储架构下对参考数据矢量进行静态组织,以在某种程度上提高对动态输入的数据矢量的实时查找和匹配的速度。本方法和发明潜在地减少了数据库中的搜索量以查找数据矢量和因数log2(size)之间的匹配,其中size是以数据矢量的数量计的参考数据库的规模。这由图1说明。本方法可以在图形处理单元(GPUs)、数字信号处理器(DSPs)和并行处理硬件(例如,FPGAs和ASIAs)中实现。本方法通过以特定的排列对参考数据矢量进行架构来实现,所述特定的排列允许适合的并且加快的对一引入数据矢量的搜索和匹配方案。本方法包括分类阶段以及搜索和匹配阶段。给定一在存储元件中任意分配的n维参考数据矢量的数据库,本方法解决了在参考数据矢量当中查找出与新的引入数据矢量的匹配的或是最近邻参考数据矢量的问题。在本文中,匹配的数据矢量定义为具有到引入数据矢量的最小距离(例如,欧氏距离)的矢量。在本方法中,参考数据矢量作为增加的到公共参考数据矢量的距离的函数首先在内存里重新排列。公共参考数据矢量任意地或通过确定的标准矢量在已有的数据矢量的集合中选择。当重新排列完成时,排列的内存的第一单元处的数据矢量包含一具有到公共参考数据矢量的最小距离的数据矢量。分类后的内存的后续地址则保存其余的具有到参考数据矢量的相同的最小距离的数据矢量(倘若存在这样的矢量)。另外,这些上升的地址将参考数据矢量与增加的到公共参考矢量的距离一同保存。具有到公共参考矢量的相同距离的矢量以这样一种方式排列:如果内存中的地址“X”保存数据矢量“A”以及到公共参考矢量的距离“Y”,那么单元“X+1”保存参考数据矢量的数据矢量“B”,该数据矢量“B”同时具有到公共参考矢量的相同距离以及到“A”的最小距离(倘若存在这样的矢量)。然后单元“X+2”保存具有到公共参考矢量的距离“Y”以及具有到“B”的最小距离的矢量“C”(倘若存在这样的矢量)。图2提供了分类后的内存排列的一个说明示例。在图中,点“D”表示具有到公共参考的绝对最小距离并且因此位于第一内存地址处的单一数据矢量。点“S”表示具有到公共参考的第二最小的距离的数据矢量并以此类推。在图中,点“A”、“B”和“C”表示三个具有到公共参考点的相同的距离的数据矢量。点“B”表示具有到“A”表示的参考数据矢量的最短距离的数据矢量,并且同样地,点“C”表示具有到“B”表示的参考数据矢量的最短距离的数据矢量。在分类过程中,消除重复的数据矢量。在结果数组中的每个数据矢量沿着该数据矢量到公共参考点的距离与简化了索引和搜索的其它数据字段一起保存在相同的存储单元。这由图4说明。以所述方式完成数据矢量的重新排列后,在已有的参考数据矢量中与引入数据矢量的最佳匹配或最近邻的快速断定能够利用连续的近似方法完成。在本方法中,首先对引入数据矢量到公共参考矢量的距离进行计算,并且将计算的距离与存储在排列后的内存中的中间单元的距离进行比较。如果计算的距离小于存储的距离,那么则估计最佳匹配在内存的较低的一半中。在此情况下,下一步的搜索将通过将计算的距离与存储在内存较低的一半的中间的内存单元的数据矢量进行比较来完成。相反地,如果计算的距离大于存储在内存中的距离,则估计最近邻在排列后的内存的较高的一半中的某一单元。在此情况下,下一步的搜索通过将计算的距离与存储在内存较高的一半中的中间单元的距离进行比较来完成。最终当计算的距离等于存储的距离时,则估计最近邻为存储在在中间内存单元周围的参考数据矢量的其中一个。在本方法中,n维数据矢量被粗分类,并且按照到任意选择的由一数据矢量表示的单一参考点的距离升序保存在一FIFO中。从而,创建一个欧式空间,其中所有的参考数据矢量被作为到公共参考点的距离的函数映射到点上,如图3中的示例所示。分类的参考点到公共参考点的各自的距离可选地与参考点一同保存在相同内存地址上,以避免在选择过程中再次计算,这种方法的代价则是对内存的增加的需求。参考点是分类的数据矢量中的一个,因此分类后的存储元件(例如,FIFO)中的第一个点即是具有到参考点的最小距离的数据矢量。分类后的内存中的之后的地址保存具有到任意排列的参考点的相同的最小距离的所有数据矢量,并跟随有具有到参考点的第二最小的距离的矢量,并以此类推。因此,分类的存储空间的最后的地址保存具有到参考数据矢量的最大距离的数据矢量集。在图3所示的示例中,中心参考点周围的内圆包含其自身的表示具有到参考的最小距离的数据矢量的圆周;而以粗黑圆周表示的外圆包含表示在参考数据集的示例中具有到参考的最大距离的数据矢量的点。如图3所指出的,具有到参考点相同距离的数据点形成一个圆周,该圆周以参考点为圆心,以所述相同距离为半径。在粗分类之后的精分类中,这些点依然被作为它们彼此之间的距离的函数以连续的内存地址包含相互最近的点的方式排列在FIFO中,并且通过它们之间的最短距离来识别。(例如,如果地址“X”包含具有到公共参考点的距离为“Y”的数据点“A”,那么地址“X+1”则包含一具有到“A”的最短距离并且到公共参考数据点的相同距离“Y”的数据点“B”,倘若图3中映射的参考点集中存在这样的点)。图6和图7分别说明了粗分类过程和精分类过程。粗分类和精分类阶段提供一FIFO/内存以及数据结构,该数据结构有助于快速查找参考数据矢量以和到来的数据矢量进行匹配。分类后的单一FIFO/存储单元处的数据结构由图4说明,以及在图5A中对作为结果的FIFO/内存结构进行例示。正如附图中所说明的,扩展FIFO/内存中每个单元包含了以下数据字段(下划线部分):数据矢量字段(DataVectorField):表示包括参考点在内的n维数据矢量的数据字段;距离字段(Dist.Field)(可选):表示计算得到的特定数据矢量到所选择的公共参考数据矢量(在本申请中,称为公共参考点)的距离的距离字段。这是个可选的字段。能够消除该字段以减小内存规模要求。当该字段被消除时,该距离会在需要时立时计算得到。规模/索引字段(Size/IndexField)以及重复标志字段(Rep.FlagField):规模/索引字段包含表示规模或索引的两个值其中之一。假如FIFO/存储单元包含在距离字段中给定距离的第一数据矢量,则所述字段将包含一个表示具有到公共参考的相同的距离的数据矢量集规模的值,否则,所述字段包含一个表示具有到参考相同距离的连续的数据矢量的增加的索引的数字。重复标志字段是一个重复的标志字段,如果距离字段中的距离是之前FIFO单元的重复则该字段设为“1”,否则重置为“0”。在图5A的示例中,地址“00000”处的规模/索引字段中的数字“3”指明总共有3个具有到所选参考点的距离为“xxxx”的参考数据矢量。地址“00000”处的的重复标志字段中的“0”指明该数据矢量字段中的数据矢量是具有到参考点的距离为“xxxx”的FIFO中的第一个。地址“00001”处,将重复标志设为“1”以指明该单元中的数据矢量具有与之前的地址(此处为“00000”)相同的到参考点的距离,重复标志字段中的索引值“1”指明在FIFO中只有一个之前的单元,该单元有一与当前参考相同距离的参考数据矢量;而地址“00003”处的值“3”指明在FIFO中总共有3个之前的FIFO单元,该单元存储了具有到参考的和该地址上数据矢量相同的距离的参考数据矢量。在操作时计算得到引入的数据矢量到公共参考点的距离,并且将所得距离与存储在FIFO中的或者同样在操作时计算得到的存储的距离进行比较从而查找出到能够包围该引入点的圆的圆周最近的圆周。该最近的的圆周通过图8中的流程图找出。该图中使用了以下缩略语:●Addr.:先进先出队列地址(FIFOaddress)的缩略语。●Strt.:代表开始(Start)(例如,“StrtAddr.”代表FIFO中搜索开始的地址的起始地址。“EndAddr.”是搜索结束地址)。当缩略词“Strt”被单独使用时则意思是搜索起始地址。●End:意思是搜索结束地址。●Dist.:代表距离(distance)。●Eucl.:代表欧几里得(Euclidean)。在图中,欧氏距离被用作一个示例并且命名为“Eucl.Dist”。●Res.:代表结果(result)。在图中,Res.被作为一个寄存器。●Crnt.:代表当前(current);当单独使用该缩略词时,则意思是当前先进先出队列的地址。●Ndx.:代表索引并因此,应该是由索引数据字段表示的索引(如本申请之前所说明的)。见图5A。●Rev.:单词反向(reverse)的缩略语。此处,Rev.是一标志;当其被设置时,则使得从FIFO中的读取从当前圆的最后一个点开始。参照图3,最后一个点为点“D”。此处的意图是越过不相干的点以达到点的遍历比较。●Rd.:代表读取(read)。此处用于指明FIFO读取地址以及将读取地址与FIFO写入地址进行辨别。●Size:指的是规模字段中的值(如图5A所说明的)。●Repeatedflag:这是重复标志的值(如图5A所说明的)。●Initial:这是通过粗查找所查找到的初始FIFO查找地址。所述比较随后被细化以在最近的和邻近的圆周上的点之中搜索具有到引入点的最小距离的最近邻。图9、10、11和12说明了搜索和匹配的过程。附录图像特征(例如,SIFT特征)能够表示为矢量。这一点在伴有下述引用的本附录中得到例证。本领域的技术人员对SIFT方法都很熟悉(例如,由US6711293B1和维基百科可知)。应当注意,美国专利6711293B1使用术语“子区域描述符(subregiondescriptor)的集”而维基百科交替地使用术语“描述符矢量”、“矢量”或“描述符”。在本要求以及说明的其余部分,使用“矢量”。以下为维基百科“尺度不变特性变换”(以下重点强调的):关键点描述符之前的步骤在特定的尺度上查找到关键点的位置并且给关键点的位置分配了方位。这就保证了图像的位置、尺度和旋转的不变性。现在,我们想要对于每个关键点计算一描述符矢量以使得该描述符相对于剩余的变量是高度区别并且局部不变的(例如,3D视角,等等)。这一步在最接近关键点尺度的图像上执行。首先,在4x4个像素(每个像素为8个二进制位)的邻近区域上建立一组方位直方图。这些直方图由围绕关键点的16x16的区域中样本的大小和方向的值计算得出,以使得每个直方图包含来自于原始邻近区域中的一4x4的子区域的样本。而且,利用高斯函数对直方图的大小进行加权(σ等于描述符窗口宽度的一半)。然后,描述符成为直方图的所有值构成的的矢量。由于存在4×4=16个直方图并且每个直方图由8个二进制位组成,该矢量就有128个元素。然后将该矢量标准化到单位长度以提高其在照射中的仿射变换下的不变性。为了减少非线性照射的影响,应用一0.2的阈值并且再次将该矢量标准化。尽管描述符的维度看似很高(例如,128),比之更低维度的描述符则无法在匹配任务的范围内同样地执行,并且,由于用于查找最近邻的近似的BBF,计算成本仍然很低。更长的描述符能够有更好的表现,但是并不是很多,并且伴随有对失真和闭合的更高的敏感度的危险。并且已经表明,视角改变50度以上,则特征匹配精确度在50%以上。因而,SIFT描述符对较小的仿射变换是不变的。为了测试SIFT描述符的辨别能力,针对测试数据库中的数量变化的关键点测量匹配精度,并且表明,对于非常大的数据库规模,匹配精确度仅仅稍稍有所降低,由此表明SIFT特征非常显著。引用US6711293B1,[0071]中的说明:在块198中,已经对子区域中最后一个感兴趣的点进行检验,然后块202指挥处理器22储存所述角分量集以及与其相关联的与区域相关联的分量描述符元素。因此,对于每个完整的区域,有8个128个数字的分量子区域描述符的集,表示了极值周围的整个区域。所述8个分量子区域描述符的集表示图像的一个尺度不变特征。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1