当前位置: 首页 > 专利查询>北京大学专利>正文

一种基于二值码字典树的搜索方法技术

技术编号:15878697 阅读:51 留言:0更新日期:2017-07-25 16:41
本发明专利技术公开一种基于二值码字典树的搜索方法,包括:获取数据库中每一图像的二值码,将每个二值码划分为m段子串;针对数据库中所有图像的第j段子串,建立该第j段子串的一个二值码字典树;所述二值码字典树的数量为m个;每一二值码字典树包括:内部节点和叶子节点;获取待查询图像的二值码以及该二值码的m段子串;针对待查询图像二值码的第j段子串,在数据库中所有图像的第j段子串对应的二值码字典树中查找汉明距离不超过

A search method based on two valued code dictionary tree

The invention discloses a search method based on two value code dictionary tree include: access to the database for each image value of two yards, two yards each value is divided into m sub string; for all images in the database of the j scripts on J, the establishment of a two piece string value code dictionary tree the number; the two value code dictionary tree is m; each of the one or two value code dictionary tree consists of internal nodes and leaf nodes; obtain the query image and the two value two value code m code according to the query image piece string; two value code section J scripts in the series, all images in database the J piece of string corresponding to two value code dictionary tree search Hamming distance not exceeding

【技术实现步骤摘要】
一种基于二值码字典树的搜索方法
本专利技术涉及计算机视觉技术,具体涉及一种基于二值码字典树的搜索方法。
技术介绍
近年来,高维向量的二进制表达问题(binaryrepresentation)获得了广泛的关注。二进制编码的目标是将特征压缩为紧凑的二值码(binarycode)。二值码具有易存储、易索引、对比速度快等优点,是处理大规模数据应用的首选。尽管二值码之间的汉明距离比对速度非常快(1秒内能完成数百万次比对),但当数据规模特别大时,线性扫描整个数据集的方式仍然无法实现实时的检索。因此,设计高效的索引算法来提高大规模数据集下二值码的检索速度是十分必要的。常见的一种索引二值码并进行近邻搜索的方法是使用哈希表,其中二值码直接作为键值(地址)插入哈希表中。大量测试表明该方法的检索速度相比线性扫描有显著提高。然而,实践中使用哈希表需消耗大量内存,本质上是以空间换时间。理想状况下为索引长度为d的二值码需要2d个哈希桶。当d增长至64时,264≈1019个哈希桶的内存消耗是不可接受的。为了能够处理长向量,业内人士提出了分段索引哈希(Multi-IndexHashing,简称MIH),采用一组哈希表来索引二值码的子串(substrings)。特别地,MIH将二值码划分成若干互斥(不重叠不相交)的子串,对每个子串单独采用一个哈希表索引,不再索引整个二值码。这种分段的策略实现了对长向量的高效索引,实验结果表明MIH在长度为64,128,256的长向量上能够实现显著的检索加速。基于哈希表的索引方法的问题在于,需要枚举查询向量q的所有可能的汉明距离不超过r的近邻,并查找(lookup)对应的哈希桶检查其是否存在。给定向量长度d以及搜索半径r,需要查找的哈希桶的总数为其中L(d,r)随r指数增长。当r很大时,搜索范围的增长速度非常快。然而,在实际应用中发现大部分哈希桶都是空的,访问空的桶(称之为查找缺失),既不必要且将浪费大量时间。
技术实现思路
鉴于上述问题,本专利技术提出了克服上述问题或者至少部分地解决上述问题的一种基于二值码字典树的搜索方法。为此目的,第一方面,本专利技术提出一种基于二值码字典树的搜索方法,包括:获取数据库中每一图像的二值码,将每个二值码划分为m段子串;针对数据库中所有图像的第j段子串,建立该第j段子串的一个二值码字典树;所述二值码字典树的数量为m个;每一二值码字典树包括:内部节点和叶子节点;获取待查询图像的二值码以及该二值码的m段子串;针对待查询图像二值码的第j段子串,在数据库中所有图像的第j段子串对应的二值码字典树中查找汉明距离不超过的二值码;遍历待查询图像二值码的所有子串,获得每一子串的查询结果;其中:m,j均为正整数,r为预先确定的非负整数值,且j小于等于m。可选地,所述方法还包括:根据待查询图像二值码的所有子串的查询结果,进行合并去重测试,获取待查询图像的搜索结果。可选地,针对数据库中所有图像的第j段子串,建立该第j段子串的一个二值码字典树的步骤,包括:依据第j段子串长度和预设的参数值c,确定二值码字典树的最小索引单位;以及,根据预设的参数值b和最小索引单位,取前b个比特建立二值码字典树的节点,构建该第j段子串的二值码字典树;其中,所述二值码字典树的根节点依据该第j段子串左侧的第一个最小索引单位建立分支;对于第i层的节点,依据该第j段子串从左至右的第i个最小索引单位建立分支;所述叶子节点为所述二值码字典树的末节点;所述二值码字典树中的每个节点对应于一个字符串,根节点对应于空串;对于第i层的节点,其对应的字符串为该第j段子串中的前i个最小索引单位组成的长度为i*c的字符串;其中b,c均为正整数,b为c的倍数,所述根节点和第i层的节点均为所述二值码字典树的内部节点,i为小于等于b/c的正整数。可选地,每一个二值码字典树中的每一个叶子节点均为以容器形式存在的末节点;所述容器内含有所有插入到这个末节点的字符串,这些字符串含有相同的前缀,即该末节点所对应的长度为b的字符串。可选地,针对待查询图像二值码的第j段子串,在数据库中所有图像的第j段子串对应的二值码字典树中查找汉明距离不超过的二值码的步骤,包括:从所述二值码字典树的根节点开始遍历该二值码字典树;对于该二值码字典树中的每一个节点,计算该节点对应的字符串与所述待查询图像二值码的第j段子串的汉明距离;若计算的汉明距离大于r’,则遍历在当前节点处停止;或者,当遍历至叶子节点时,在叶子节点所属的容器中获取相应的汉明距离不超过的二值码。可选地,获取数据库中每一图像的二值码,将每个二值码划分为m段子串的步骤,包括:获取数据库图像的二值码,该二值码长度为d;采用分段策略将每个二值码划分为m个不重叠不相交的子串;若d为m的倍数,则将二值码分为m段长度相同的子串,每段长度均为s=d/m;若d不是m的倍数,令v等于d除以m所得的余数,则分段时,前v段的长度为后m-v段的长度为和/或,获取待查询图像的二值码以及该二值码的m段子串的步骤,包括:获取待查询图像的二值码,该二值码长度为d;采用分段策略将每个二值码划分为m个不重叠不相交的子串;若d为m的倍数,则将二值码分为m段长度相同的子串,每段长度均为s=d/m;若d不是m的倍数,令v等于d除以m所得的余数,则分段时,前v段的长度为后m-v段的长度为其中d,m,s均为正整数,m小于等于d。可选地,若分段后每一字串长度s=32;则b=30,c=3或b=28,c=4;以及,建立数据库中所有图像的m段子串的二值码字典树的过程为离线阶段实现。第二方面,本专利技术提供一种二值码近邻搜索方法,包括:对数据库中的所有二值码进行分段处理,获得m段子串;针对所有二值码的第j段子串,建立该第j段子串的一个二值码字典树;所述二值码字典树的数量为m个;每一二值码字典树包括:内部节点和叶子节点;接收待查询的二值码,将待查询的二值码分为m段子串;针对待查询二值码的第j段子串,在数据库中所有二值码的第j段子串对应的二值码字典树中查找汉明距离不超过的二值码;遍历待查询二值码的所有子串,获得每一子串的查询结果;根据待查询二值码的所有子串的查询结果,进行合并去重测试,获取待查询二值码的查询结果;其中:m,j均为正整数,r为预先确定的非负整数值,且j小于等于m。可选地,针对所有二值码的第j段子串,建立该第j段子串的一个二值码字典树的步骤,包括:依据第j段子串长度和预设的参数值c,确定二值码字典树的最小索引单位;以及,根据预设的参数值b和最小索引单位,取前b个比特建立二值码字典树的节点,获得该第j段子串的二值码字典树;其中,所述二值码字典树的根节点依据该第j段子串左侧的第一个最小索引单位建立分支;对于第i层的节点,依据该第j段子串从左至右的第i个最小索引单位建立分支;所述叶子节点为所述二值码字典树的末节点;所述二值码字典树中的每个节点对应于一个字符串,根节点对应于空串;对于第i层的节点,其对应的字符串为该第j段子串中的前i个最小索引单位组成的长度为i*c的字符串;其中b,c均为正整数,b为c的倍数,所述根节点和第i层的节点均为所述二值码字典树的内部节点。可选地,每一个二值码字典树中的每一个叶子节点均为以容器形式存在的末节点;所述容器内含有所有插入到这个末节点的字符串,这本文档来自技高网
...
一种基于二值码字典树的搜索方法

【技术保护点】
一种基于二值码字典树的搜索方法,其特征在于,包括:获取数据库中每一图像的二值码,将每个二值码划分为m段子串;针对数据库中所有图像的第j段子串,建立该第j段子串的一个二值码字典树;所述二值码字典树的数量为m个;每一二值码字典树包括:内部节点和叶子节点;获取待查询图像的二值码以及该二值码的m段子串;针对待查询图像二值码的第j段子串,在数据库中所有图像的第j段子串对应的二值码字典树中查找汉明距离不超过

【技术特征摘要】
1.一种基于二值码字典树的搜索方法,其特征在于,包括:获取数据库中每一图像的二值码,将每个二值码划分为m段子串;针对数据库中所有图像的第j段子串,建立该第j段子串的一个二值码字典树;所述二值码字典树的数量为m个;每一二值码字典树包括:内部节点和叶子节点;获取待查询图像的二值码以及该二值码的m段子串;针对待查询图像二值码的第j段子串,在数据库中所有图像的第j段子串对应的二值码字典树中查找汉明距离不超过的二值码;遍历待查询图像二值码的所有子串,获得每一子串的查询结果;其中:m,j均为正整数,r为预先确定的非负整数值,且j小于等于m。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据待查询图像二值码的所有子串的查询结果,进行合并去重测试,获取待查询图像的搜索结果。3.根据权利要求1所述的方法,其特征在于,针对数据库中所有图像的第j段子串,建立该第j段子串的一个二值码字典树的步骤,包括:依据第j段子串长度和预设的参数值c,确定二值码字典树的最小索引单位;以及,根据预设的参数值b和最小索引单位,取前b个比特建立二值码字典树的节点,构建该第j段子串的二值码字典树;其中,所述二值码字典树的根节点依据该第j段子串左侧的第一个最小索引单位建立分支;对于第i层的节点,依据该第j段子串从左至右的第i个最小索引单位建立分支;所述叶子节点为所述二值码字典树的末节点;所述二值码字典树中的每个节点对应于一个字符串,根节点对应于空串;对于第i层的节点,其对应的字符串为该第j段子串中的前i个最小索引单位组成的长度为i*c的字符串;其中b,c均为正整数,b为c的倍数,所述根节点和第i层的节点均为所述二值码字典树的内部节点,i为小于等于b/c的正整数。4.根据权利要求3所述的方法,其特征在于,每一个二值码字典树中的每一个叶子节点均为以容器形式存在的末节点;所述容器内含有所有插入到这个末节点的字符串,这些字符串含有相同的前缀。5.根据权利要求4所述的方法,其特征在于,针对待查询图像二值码的第j段子串,在数据库中所有图像的第j段子串对应的二值码字典树中查找汉明距离不超过的二值码的步骤,包括:从所述二值码字典树的根节点开始遍历该二值码字典树;对于该二值码字典树中的每一个节点,计算该节点对应的字符串与所述待查询图像二值码的第j段子串的汉明距离;若计算的汉明距离大于r’,则遍历在当前节点处停止;或者,当遍历至叶子节点时,在叶子节点所属的容器中获取相应的汉明距离不超过的二值码。6.根据权利要求1至5任一所述的方法,其特征在于,获取数据库中每一图像的二值码,将每个二值码划分为m段子串的步骤,包括:获取数据库图像的二值码,该二值码长度为d;采用分段策略将每个二值码划分为m个不相交不重叠的子串;若d为m的倍数,则将二值码分为m段长度相同的子串,每段长度均为s=d/m;若d不是m的倍数,令v等于d除以m所得的余数,则分段时,前v段的长度为后m-v段的长度为和/或,获...

【专利技术属性】
技术研发人员:段凌宇黄祎程王哲高文
申请(专利权)人:北京大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1