具体实施方式
本发明实施例中通过局部敏感哈希(Local sensitive hashing,LSH)算法,根据帧指纹所对应的桶号键值来为多媒体文件建立索引,实现了以帧为基础单位为多媒体文件建立索引,使得在检索时可以以帧为基础单位搜索多媒体文件,可检索出局部相似的多媒体文件,有效的改进了建立索引及对索引进行检索的实现方式。
本实施例中多媒体文件包括音频和视频等多媒体内容。
参见图1,本实施例中建立多媒体数据索引的主要方法流程如下:
步骤101:根据局部敏感哈希算法获得一个多媒体文件中m个帧的指纹所对应的桶号键值。其中m为预设的帧数。较佳的,m的取值范围为8至20之间(包括端点)。本实施例中m个帧可以是离散的m个帧,但是如果帧与帧之间距离过大,则可能影响检索的准确度。较佳的,获得一个多媒体文件中连续的m个帧的指纹所对应的哈希桶号键值。
步骤102:根据多媒体文件的标识、多个m帧的起始位置及多个m帧的桶号键值为该多媒体文件建立索引。
本实施例的创新点之一,便是根据局部敏感哈希算法获得桶号键值。参见图2所示,获得桶号键值的主要方法流程如下:
步骤201:将第一组随机数序列内的每个随机数作为序号,从m个帧的指纹所组成的指纹序列中选出该序号对应位置上的字符,将按序号依次选择的字符组成备用序列。
步骤202:将备用序列中的字符与第二组随机数序列内相同位置的随机数比较大小,将比较结果记为0或1。
步骤203:将比较结果0或1所构成的序列作为该m个帧的桶号键值。
下面通过举例方式详细介绍获得桶号键值的实现过程。
预先获得两个集合,第一类集合和第二类集合,每个集合包括X组随机数,每组随机数的个数为Y。本实施例中X=24,Y=30,该值只是一种较佳的取值,也可以根据实际情况选取它值,不过取值过大将增加计算的复杂度,过小将影响检索的准确度。第一类集合中第x1组随机数可表示为S1x1={a1,a2,...,a30},第二类集合中第x2组随机数可表示为S2x2={b1,b2,...,b30},x1和x2的值不超过X。本实施例中在预设的范围内生成随机数。第一类集合中随机数的取值范围为[1,K],K=m*L,由于帧指纹是由与灰度值有关的数据组成的,所以L表示组成帧指纹的与灰度值有关的数据的个数。第二类集合中随机数的取值范围为与灰度值有关的数据的取值范围,如果与灰度值有关的数据的取值范围为[1,12],则第二类集合中随机数的取值范围也为[1,12];如果与灰度值有关的数据的取值为0或1,则第二类集合中随机数的取值也为0或1。如果采用与灰度值有关的数据,则数据的取值主要是数字,如果采用其它方式获得指纹,如MD5算法等,或者采用16进制表示,则数据的取值可能包括字母等字符。
由于第一类集合中随机数的取值范围为不超过m个帧指纹的数据总个数,因此S1x1={a1,a2,...,a30}中的每个随机数均可表示一个序号。按照该序号从m个帧指纹中选择相应位置的数据。例如,a2为56,则从m个帧指纹中选择第56个数据,该数据如6。然后将按序号选出的数据顺序组成备用序列S3x3={c1,c2,...,c30},如c2的值为从m个帧指纹中选择第56个数据6。将备用序列中的字符与第二组随机数序列内相同位置的随机数比较大小,也就是将S2x2中的b1与S3x3中的c1比较,b2与c2比较,以此类推,最后b30与c30比较。本实施例中如果b大于c则记为1,否则记为0。当然也可以b大于c则记为0,否则记为1,整个方案采用一个机制即可。最后将比较结果0或1所构成的序列作为该m个帧的桶号键值。本实施例中m个帧的桶号键值为30位由0和1组成的序列,该序列可以用30位的整数表示。
依据第一类集合和第二类集合中各一组随机数序列,便可以获得m个帧的一个桶号键值key,由于本实施例是采用灰度值的相关数据来表示帧指纹,可能存在两帧之间内容不同但是灰度值近似的情况,因此为了提高检索的准确度,在建立索引过程中最好获得多个桶号键值,以供检索。本实施例中第一类集合和第二类集合各包括24组随机数序列,则针对m个帧可获得24组桶号键值。
前文中提到帧指纹是由与灰度值有关的数据组成,与灰度值有关的数据可以有多种。如与灰度值有关的数据为灰度值本身,其取值范围为[0,255]。或者,为了降低计算量,与灰度值有关的数据为灰度中的亮度值,其取值范围为[0,255],参见图3所示的帧,其给出了帧中每个宏块(Macro block)的亮度值,这些亮度值顺序组成了该帧的指纹,帧指纹形如:数组gray[12]={80,50,110,30,60,90,180,160,70,120,20,40}。或者,与灰度值有关的数据为帧中宏块的平均灰度值按大小排序所得的序号,以每帧包括12个宏块为例,参见图4所示的帧,其给出了每个宏块的亮度值所对应的序号,这些序号顺序地组成了帧指纹,可以以数组形式存储帧指纹,则帧指纹形如:seq[12]={7,4,9,2,5,8,12,11,6,10,1,3},例如第一个宏块的灰度值在所有宏块的灰度值排第7,则数组gray[12]中的第一元素的值为7。由于是一帧包括12个宏块,则该序号的取值范围为[1,12]。或者,与灰度值有关的数据为灰度值经过大小比较后的比较结果0或1。还是以12个宏块为例,各宏块的灰度值大小关系如seq[12]={7,4,9,2,5,8,12,11,6,10,1,3},将seq[i]与seq[j]比较大小,共66组,i=0,...,11,j=0,...,11,i<j。若gray[i]<gray[j],则结果记为1,否则记为0,这样可以生成一个长度为66的包含“0”和/或“1”的序列,该序列将作为该帧的帧指纹。或者,将每个帧量化为8个方向,还是以12个宏块为例,每个帧就有12个梯度方向值,该梯度方向值为与灰度值有关的数据,也就是说这12个梯度方向值顺序组成了该帧的帧指纹。还可以有其它方式来获得与灰度值有关的数据,只要可以标识帧的内容且与灰度值有关,均适用于本实施例,此处不一一列举。
以上介绍了一个多媒体文件中m个帧的桶号键值的获得方法,然而用m个帧来表示多媒体文件的内容显然是不够的,所以需要从多媒体文件中获得多个m个帧的桶号键值,较佳的,从多媒体文件的起始位置开始,每间隔n帧取m个帧,获得多个m帧。本实施例中n小于m,较佳的n=8,参见图5所示。当然n最小可以取1,但这样得到的桶号键值较多,增加了检索的负担。
获得桶号键值后,便可以根据多媒体文件的标识、多个m帧的起始位置及多个m帧的桶号键值为该多媒体文件建立索引。多媒体文件的一条索引形如int_bucket:<fpid1,start1,key1,start2,key2,...>,fpid1表示多媒体文件的标识,可以具体为文件名称或文件指纹,该文件指纹可通过MD5算法获得。start1表示第一个m帧的起始位置,key1表示第一个m帧的桶号键值。多个多媒体文件的一条索引形如int_bucket:<fpid1,start1,key1,start2,key2,...fpid2,start1,key1,start2,key2,...>。由于每m帧都可以有24组桶号键值,则多媒体文件可以有24条索引。或者一条索引中记录24组桶号键值,则形如int_bucket:<fpid1,start1,key11,key12,...key124,,start2,key21,key22,...key224,fpid2,start1,key1,start2,key2,...>,key11表示第一个m帧的第一组桶号键值,key124表示第一个m帧的第24组桶号键值。
以上描述了获得多媒体文件索引的实现过程,多媒体文件的来源比较广泛,存在着不同的版本,即使内容相同,不同版本文件的帧率也可能不同,将影响检索的准确度。因此,本实施例在获得桶号键值之前,先对多媒体文件进行统一帧率处理。具体过程如:处理前多媒体文件的帧指纹为f[i],时间戳为t[i],i=1,...,U,U表示多媒体文件的帧数。处理后的多媒体文件的时间戳为t’[s],s=1,...,V,则t’[s]的帧指纹f’[s]为时间距离t’[s]最近的t[i]对应的帧指纹f[i]。如果是降低帧率,则相当于删减掉部分帧,如果是提高帧率,则相当于插入相邻的帧,也就是有部分相邻的帧的内容完全相同。
另外,每帧中不一定整个画面都是影像,通常一帧中的上下各有几行是黑边,中间的画面部分会有字幕,画面的左上角会有图标等,这些部分将影响帧内容相似性的判断,进而影响检索效果。因此,本实施例在根据局部敏感哈希算法获得一个多媒体文件中m个帧的指纹所对应的桶号键值之前,对多媒体文件进行过滤。过滤操作至少包括下列操作之一:去黑边,去干扰区,和去除完全相同或剧烈变化的连续多帧。
去黑边,顾名思义,就是去除每帧中的黑边。去干扰区,就是将预设的干扰区的数据删除,不需获得这部分区域的与灰度值有关的数据,也就不参与帧指纹的获得。本实施例中干扰区如图6所示的阴影区域,包括下方的两个宏块,通常为字幕区,以及包括左上角和右上角的宏块,通常为图标区,例如电视台的台标或广告等。还可以根据实际情况设置其它宏块为干扰区,干扰区的特点是不同帧的画面发生变化时干扰区的内容基本不便,尤其是干扰区的亮度基本不便。去除完全相同或剧烈变化的连续多帧,其中对于完全相同的连续多帧,因为其内容相同所以其帧指纹也相同,不具有显著区分性,将影响检索的准确度,以及给建立索引带来负担。对于剧烈变化的连续多帧,会影响识别效果,也需要去除,判断是否为剧烈变化的方式有多种,本实施例通过相邻两帧的汉明距离(hamming distance)来判断。例如f(i)帧指纹为0 1 2 5 6 3 4 8 9 7 10 11,f(i+1)帧指纹为0 3 1 5 6 2 4 8 9 7 10 11,则该相邻帧的汉明距离为H(i+1)=|0-0|+|1-3|+|2-1|+...+|10-10|+|11-11|=4。确定连续多帧中是否有超过预设比例数量(如2/3)的帧之间的汉明距离大于预设的距离阈值(如72),若是,则确定该连续多帧为剧烈变化的连续多帧并去除。例如,一段连续多帧中超过2/3的帧与其相邻帧的汉明距离大于72,则确定该段连续多帧剧烈变化,需要去除。较佳的,本实施例中获得的m个帧,可以是去除完全相同或剧烈变化的连续多帧后,剩余多媒体文件中连续的m个帧。
参见图7,本实施例中建立多媒体数据索引的详细方法流程如下:
步骤701:获得待建索引的多媒体文件及该文件的帧率。
步骤702:判断文件的帧率是否为预设的帧率,若是,则继续步骤704,否则继续步骤703。
步骤703:对多媒体文件进行统一帧率处理。
步骤704:对多媒体文件进行过滤处理。
步骤705:将第一组随机数序列内的每个随机数作为序号,从m个帧的指纹所组成的指纹序列中选出该序号对应位置上的字符,将按序号依次选择的字符组成备用序列。
步骤706:将备用序列中的字符与第二组随机数序列内相同位置的随机数比较大小,将比较结果记为0或1。
步骤707:将比较结果0或1所构成的序列作为该m个帧的桶号键值。
可以重复步骤704-707,以获得多个m帧的多个桶号键值。
步骤708:根据多媒体文件的标识、多个m帧的起始位置及多个m帧的桶号键值为该多媒体文件建立索引。
建立索引后,便可以通过该索引来检索多媒体文件。下面对检索过程进行介绍。
参见图8,本实施例中检索多媒体数据的主要方法流程如下:
步骤801:根据局部敏感哈希算法获得待查询多媒体文件中m帧的指纹所对应的桶号键值。其中m为预设的帧数。
步骤802:从索引库中搜索该获得的桶号键值。
步骤803:获得搜索到的索引中多媒体标识所对应的多媒体文件。
其中,步骤801的实现过程可参见图2所示的流程。可以通过第一类集合和第二类集合中的各一组随机数序列获得m帧的一个桶号键值。或者,为了提高检索的准确度,通过第一类集合和第二类集合中的各多组随机数序列获得m帧的多个桶号键值,如获得m帧的24组桶号键值。如果在搜索桶号键值时,24组桶号键值中的大多数均被搜索到,则搜索到的桶号键值所对应的m帧与待查询多媒体文件中m帧的内容基本相同,也可以确定为完全相同,即获得搜索到的索引中共同的多媒体标识所对应的多媒体文件。还可以在获得待查询多媒体文件的桶号键值之前,对待查询多媒体文件进行统一帧率和过滤处理等,具体实现过程参见前面的介绍。
检索的目的有多种,可能希望检索出与待查询多媒体文件中至少部分内容相同的多媒体文件,这样仅根据m帧的桶号键值进行检索即可。还可能希望检索出与待查询多媒体文件基本相同或完全相同的多媒体文件,此时需要从待查询多媒体文件中获得多个m帧的指纹所对应的桶号键值,尤其是多个m帧的指纹分别所对应的多个桶号键值,对这些桶号键值进行搜索,获得搜索到的索引中共同的多媒体标识所对应的多媒体文件,则该搜索到的多媒体文件与待查询多媒体文件基本相同。
例如,用m帧的一个桶号键值进行搜索,获得与该桶号键值相匹配的索引,进而获得索引的文件标识;再用该m帧的下一个桶号键值在搜索到的文件标识所对应的索引中搜索该下一个桶号键值,直到m帧的24组桶号键值均搜索完毕。然后,取下一段m帧,由于建立索引时较佳的方式是每相隔8帧取m帧来建立索引,因此在检索时,较佳的方式是下一段m帧与上一段m帧相隔1帧,参见图9所示。对下一段m帧的24组桶号键值继续在最近一次搜索到的文件标识所对应的索引中搜索,以此类推,直至t段m帧的24组桶号键值均被搜索过为止,最终搜索到的文件标识对应的多媒体文件为所要的检索结果。其中,如果用某个桶号键值未搜索到对应的索引,则下次搜索时在整个索引库中搜索。或者,用t段m帧的t*24组桶号键值在整个索引库中搜索,获得搜索到的索引中共同的多媒体标识所对应的多媒体文件。为了提高检索的准确度,t段m帧的总长不少于20秒内帧的总长。
如果通过t段m帧的t*24组桶号键值搜索到多媒体文件,可说明该t段m帧的内容与搜索到的多媒体文件有相似或相同的内容。若需比较整个多媒体文件的相似性,还需要从待查询多媒体文件中离散的获取多个t段m帧来进行检索。
参见图10,本实施例中检索多媒体数据的详细方法流程如下:
步骤1001:获得待查询多媒体文件及其帧率。
步骤1002:判断文件的帧率是否为预设的帧率,若是,则继续步骤1004,否则继续步骤1003。
步骤1003:对待查询多媒体文件进行统一帧率处理。
步骤1004:对待查询多媒体文件进行过滤处理。
步骤1005:将第一组随机数序列内的每个随机数作为序号,从待查询多媒体文件的m个帧的指纹所组成的指纹序列中选出该序号对应位置上的字符,将按序号依次选择的字符组成备用序列。
步骤1006:将备用序列中的字符与第二组随机数序列内相同位置的随机数比较大小,将比较结果记为0或1。
步骤1007:将比较结果0或1所构成的序列作为该m个帧的桶号键值。
可以重复步骤1004-1007,以获得多个m帧的多个桶号键值。
步骤1008:从索引库中搜索该获得的桶号键值。
步骤1009:获得搜索到的索引中共同的多媒体标识所对应的多媒体文件。
由于本实施例中帧指纹由与灰度值有关的数据组成,存在多媒体文件之间内容不同但灰度值的相关数据近似的极少数情况。针对这极少数情况,还可以将待查询多媒体文件与搜索后获得的多媒体文件进行相似性比较,以最终确定两个多媒体文件的相似程度。有了多媒体文件之间的相似度后,可根据该相似度来更新索引库或媒体库。或者,根据相似度进行下载或上传,例如用户请求下载多媒体文件时,根据该多媒体文件的文件标识获得该文件的索引,再查询与该文件的索引中桶号键值相同的其它文件的索引,进而搜索到至少有部分内容相同的多媒体文件,可以从搜索到的多媒体文件下载其内容相同的部分。文件上传过程与下载过程类似,可参照执行。下面对更新索引库或媒体库的过程进行详细介绍。
参见图11,本实施例中更新索引库的方法流程如下:
步骤1101:将待查询多媒体文件与搜索后获得的多媒体文件进行相似性比较。较佳的,将搜索到的对应同一多媒体文件标识的索引中搜索到的桶号键值对应的起始位置合并,再将待查询多媒体文件中的待查询片段与合并后的位置所对应的多媒体内容中的最短媒体片段进行逐帧内容比较。例如,搜索到的桶号键值对应的起始位置(如用帧号表示)为4、140、450,则合并后的位置所对应的多媒体内容为4~450+m帧。最短媒体片段为根据预设的第一长度对合并后的位置所对应的多媒体内容进行划分后得到的。待查询片段为待查询多媒体文件中等长的切片的一部分,且待查询片段与切片的长度之和不超过最短媒体片段的长度。最短媒体片段、待查询片段及切片之间的长度关系参见图12所示。该长度关系可以保证最短媒体片段至少在长度上包含一个完整的待查询片段,以便对片段的相似性进行比较。
步骤1102:根据比较结果确定待查询多媒体文件与搜索后获得的多媒体文件之间的内容包含关系。
步骤1103:根据获得的内容包含关系更新索引库。
其中,内容包含关系包括:完全无重叠、不完全重叠、搜索后获得的多媒体文件被包含于待查询多媒体文件和搜索后获得的多媒体文件包含待查询多媒体文件。或者说内容包含关系包括:互不包含、重叠、被包含于和包含。
将待查询多媒体文件中的待查询片段与合并后的位置所对应的多媒体内容中的最短媒体片段进行逐帧内容比较时,若所有待查询片段比较结果均相同,则确定搜索后获得的多媒体文件包含待查询多媒体文件;
若所有最短媒体片段比较结果均相同,则确定搜索后获得的多媒体文件被包含于待查询多媒体文件;
若部分待查询片段比较结果相同,则确定待查询多媒体文件与搜索后获得的多媒体文件之间不完全重叠;
若所有待查询片段比较结果均不相同,则确定待查询多媒体文件与搜索后获得的多媒体文件之间完全无重叠。
确定内容包含关系后,根据获得的内容包含关系更新索引库的具体过程如下:
内容包含关系为完全无重叠时,在索引库中增加待查询多媒体文件的索引,以及将待查询多媒体文件归入媒体库;
内容包含关系为不完全重叠时,在索引库中增加待查询多媒体文件的索引,将待查询多媒体文件归入媒体库,以及在索引库中记录待查询多媒体文件与搜索后获得的多媒体文件之间的重叠位置;
内容包含关系为搜索后获得的多媒体文件被包含于待查询多媒体文件时,在索引库中用待查询多媒体文件的索引替换搜索后获得的多媒体文件的索引,以及在媒体库中用待查询多媒体文件替换搜索后获得的多媒体文件;
内容包含关系为搜索后获得的多媒体文件包含待查询多媒体文件时,在索引库中增加待查询多媒体文件的索引。
对于服务商来说,媒体库通常是批量更新的。为了提高更新效率,需要根据多个待查询多媒体文件更新媒体库时,确定每个待查询多媒体文件在媒体库中的存储位置,根据该存储位置对待查询多媒体文件进行排序,按照排序后的顺序将待查询多媒体文件更新到媒体库。这样可减少来回访问存储介质的次数,以提高效率。
为了便于检索及对多媒体文件的查询,本实施例还提出了指纹闭包集的概念。媒体库中的多媒体文件(或称基础多媒体文件)A,凡是内容被A所包含的多媒体文件的索引均为该A的指纹闭包集的元素。当内容包含关系为搜索后获得的多媒体文件包含待查询多媒体文件时,在索引库中增加待查询多媒体文件的索引的具体过程包括:将待查询多媒体文件的索引作为搜索后获得的多媒体文件的指纹闭包集中的元素,且构成一子指纹闭包集。则每个指纹闭包集或子指纹闭包集均对应一个多媒体文件。当下载或上传子指纹闭包集对应的多媒体文件时,可以从其上级指纹闭包集对应的多媒体文件中获得。当下载或上传指纹闭包集对应的多媒体文件时,其中的部分内容可以从其子指纹闭包集对应的多媒体文件中获得。
以上介绍了建立索引及利用该索引检索多媒体文件的实现过程,以及更新索引库和媒体库的过程,上述过程均可以由装置实现,下面对装置的内部结构和功能进行介绍。
参见图13,本实施例中用于建立索引的装置1300包括:桶号模块1301和索引模块1302。装置1300可具体为计算机设备。
桶号模块1301用于根据局部敏感哈希算法获得一个多媒体文件中m个帧的指纹所对应的桶号键值。其中m为预设的帧数。
索引模块1302用于根据多媒体文件的标识、多个m帧的起始位置及多个m帧的桶号键值为该多媒体文件建立索引。
装置1300还包括随机数模块1303,参见图14所示。随机数模块1303用于生成第一类集合和第二类集合。
具体的,桶号模块1301将第一组随机数序列内的每个随机数作为序号,从m个帧的指纹所组成的指纹序列中选出该序号对应位置上的字符,将按序号依次选择的字符组成备用序列;将备用序列中的字符与第二组随机数序列内相同位置的随机数比较大小,将比较结果记为0或1;将比较结果0或1所构成的序列作为该m个帧的桶号键值。其中第一组随机数序列属于第一类集合,第二组随机数序列属于第二类集合。
桶号模块1301可以根据多个第一组随机数序列和多个第二组随机数序列获得该m个帧的多个桶号键值,并根据该m个帧的多个桶号键值为该多媒体文件建立多个索引。多个m帧为:从多媒体文件的起始位置开始,每间隔n帧取m个帧,获得多个m帧。
本实施例中每帧的指纹由该帧中各宏块与灰度值有关的数据组成。与灰度值有关的数据为帧中宏块的平均灰度值按大小排序所得的序号。或者,与灰度值有关的数据为灰度值经过大小比较后的比较结果0或1。或者,与灰度值有关的数据为灰度值的梯度方向值。与灰度值有关的数据为帧中宏块的平均灰度值按大小排序所得的序号时,或与灰度值有关的数据为灰度值的梯度方向值时,第一组随机数序列内的每个随机数的取值范围不超过帧中宏块个数与m的乘积。与灰度值有关的数据为灰度值经过大小比较后的比较结果0或1时,第一组随机数序列内的每个随机数的取值范围不超过帧中宏块个数-1到0的累加和再与m的乘积。
装置1300还包括帧率模块1304和过滤模块1305。
帧率模块1304用于对多媒体文件进行统一帧率处理。
过滤模块1305用于对多媒体文件进行过滤。过滤模块1305至少执行下列操作之一:去黑边,去干扰区,和去除完全相同或剧烈变化的连续多帧。去除剧烈变化的连续多帧时,过滤模块1305具体用于获得多媒体文件中每相邻两帧之间的汉明距离,确定连续多帧中是否有超过预设比例数量的帧之间的汉明距离大于预设的距离阈值,若是,则确定该连续多帧为剧烈变化的连续多帧并去除。
参见图15,本实施例中用于检索多媒体数据的装置1500包括:桶号模块1501、桶号搜索模块1502和文件搜索模块1503。装置1500可具体为计算机设备。
桶号模块1501用于根据局部敏感哈希算法获得待查询多媒体文件中m帧的指纹所对应的桶号键值。其中m为预设的帧数。
桶号搜索模块1502用于从索引库中搜索该获得的桶号键值。
文件搜索模块1503用于获得搜索到的索引中多媒体标识所对应的多媒体文件。
m帧的指纹所对应多个桶号键值时,桶号模块1501从索引库中搜索该获得的多个桶号键值。则文件搜索模块1503获得搜索到的索引中共同的多媒体标识所对应的多媒体文件。
桶号模块1501还用于根据局部敏感哈希算法获得待查询多媒体文件中多个m帧的指纹所对应的桶号键值。则文件搜索模块1503获得搜索到的索引中多媒体标识所对应的多媒体文件的步骤包括:获得搜索到的索引中共同的多媒体标识所对应的多媒体文件。
装置1500还包括随机数模块1504,参见图16所示。随机数模块1504用于生成第一类集合和第二类集合。
具体的,桶号模块1501将第一组随机数序列内的每个随机数作为序号,从m个帧的指纹所组成的指纹序列中选出该序号对应位置上的字符,将按序号依次选择的字符组成备用序列;将备用序列中的字符与第二组随机数序列内相同位置的随机数比较大小,将比较结果记为0或1;将比较结果0或1所构成的序列作为该m个帧的桶号键值。以及,桶号模块1501根据多个第一组随机数序列和多个第二组随机数序列获得该m个帧的多个桶号键值。其中第一组随机数序列属于第一类集合,第二组随机数序列属于第二类集合。
本实施例中每帧的指纹由该帧中各宏块与灰度值有关的数据组成。
装置1500还包括帧率模块1505和过滤模块1506。
帧率模块1505用于对多媒体文件进行统一帧率处理。
过滤模块1506用于对多媒体文件进行过滤。过滤模块1506至少执行下列操作之一:去黑边,去干扰区,和去除完全相同或剧烈变化的连续多帧。去除剧烈变化的连续多帧时,过滤模块1506具体用于获得多媒体文件中每相邻两帧之间的汉明距离,确定连续多帧中是否有超过预设比例数量的帧之间的汉明距离大于预设的距离阈值,若是,则确定该连续多帧为剧烈变化的连续多帧并去除。
装置1500还包括相似性比较模块1507、关系模块1508和更新模块1509。装置1500还与索引库和媒体库所在的装置连接。
比较模块1507用于将待查询多媒体文件与搜索后获得的多媒体文件进行相似性比较。
关系模块1508用于根据比较结果确定待查询多媒体文件与搜索后获得的多媒体文件之间的内容包含关系。
更新模块1509用于根据获得的内容包含关系更新索引库。
内容包含关系包括:完全无重叠、不完全重叠、搜索后获得的多媒体文件被包含于待查询多媒体文件和搜索后获得的多媒体文件包含待查询多媒体文件。
具体的,比较模块1507将搜索到的对应同一多媒体文件标识的索引中搜索到的桶号键值对应的起始位置合并;以及将待查询多媒体文件中的待查询片段与合并后的位置所对应的多媒体内容中的最短媒体片段进行逐帧内容比较。
关系模块1508将待查询多媒体文件中的待查询片段与合并后的位置所对应的多媒体内容中的最短媒体片段进行逐帧内容比较时,若所有待查询片段比较结果均相同,则确定搜索后获得的多媒体文件包含待查询多媒体文件;若所有最短媒体片段比较结果均相同,则确定搜索后获得的多媒体文件被包含于待查询多媒体文件;若部分待查询片段比较结果相同,则确定待查询多媒体文件与搜索后获得的多媒体文件之间不完全重叠;若所有待查询片段比较结果均不相同,则确定待查询多媒体文件与搜索后获得的多媒体文件之间完全无重叠。其中,待查询片段为待查询多媒体文件中等长的切片的一部分,且待查询片段与切片的长度和不超过最短媒体片段的长度。
相应的,内容包含关系为完全无重叠时,更新模块1509在索引库中增加待查询多媒体文件的索引,以及将待查询多媒体文件归入媒体库;内容包含关系为不完全重叠时,更新模块1509在索引库中增加待查询多媒体文件的索引,将待查询多媒体文件归入媒体库,以及在索引库中记录待查询多媒体文件与搜索后获得的多媒体文件之间的重叠位置;内容包含关系为搜索后获得的多媒体文件被包含于待查询多媒体文件时,更新模块1509在索引库中用待查询多媒体文件的索引替换搜索后获得的多媒体文件的索引,以及在媒体库中用待查询多媒体文件替换搜索后获得的多媒体文件;内容包含关系为搜索后获得的多媒体文件包含待查询多媒体文件时,更新模块1509在索引库中增加待查询多媒体文件的索引。
更新模块1509还用于在需要根据多个待查询多媒体文件更新媒体库时,确定每个待查询多媒体文件在媒体库中的存储位置,根据该存储位置对待查询多媒体文件进行排序,按照排序后的顺序将待查询多媒体文件更新到媒体库。
本实施例中装置1300与装置1500可以是同一实体装置,即该实体装置包括装置1300和装置1500中的所有模块。其中,随机数模块1303与随机数模块1504是同一模块,帧率模块1304与帧率模块1505是同一模块,过滤模块1305与过滤模块1506是同一模块。
以上模块位于同一实体内,则构成了装置;如果位于不同实体内,则构成了系统。下面对该系统的内部结构和功能进行介绍。
参见图17,本实施例中多媒体系统包括:指纹服务器1701和索引服务器1702。
指纹服务器1701用于根据局部敏感哈希算法获得一个多媒体文件中m个帧的指纹所对应的桶号键值。其中m为预设的帧数。
索引服务器1702用于根据多媒体文件的标识、多个m帧的起始位置及多个m帧的桶号键值为该多媒体文件建立索引。
索引服务器1702还用于从索引库中搜索该获得的桶号键值,并获得搜索到的索引中多媒体标识所对应的多媒体文件。
索引服务器1702还用于将待查询多媒体文件与搜索后获得的多媒体文件进行相似性比较;根据比较结果确定待查询多媒体文件与搜索后获得的多媒体文件之间的内容包含关系。多媒体系统还包括:更新服务器1703和文件服务器1704,参见图18所示。更新服务器1703用于根据获得的内容包含关系更新索引库。文件服务器1704包括索引库和媒体库。
本发明实施例中通过局部敏感哈希(Local sensitive hashing,LSH)算法,根据帧指纹所对应的桶号键值来为多媒体文件建立索引,实现了以帧为基础单位为多媒体文件建立索引,使得在检索时可以以帧为基础单位搜索多媒体文件,可检索出局部相似的多媒体文件,有效的改进了建立索引及对索引进行检索的实现方式。本发明实施例为了减少计算量,采用与灰度值有个的数据组成帧指纹,进而获得帧指纹所对应的桶号键值。并且,本发明实施例中与灰度值有个的数据有多种实现形式,以满足不同的需求。本发明实施例为了提高检索的准确度,建立索引时对m帧获得多个桶号键值,在检索时对该多个桶号键值进行搜索。如果需要获得整个文件都基本相似的多媒体文件,在建立索引时对多媒体文件取多个m帧的桶号键值来建立,在检索时对多个m帧的桶号键值进行搜索。以及,为了进一步提高检索的准确度,本发明实施例在建立索引及检索过程中,均对多媒体文件进行统一帧率处理及多重过滤处理。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。