本发明涉及视频数据存储与检索技术领域,特别是指一种分布式交通监控视频数据存储与快速检索系统。
背景技术:
近些年,随着人们生活品质的提高,汽车已不再是遥不可及的物件,逐渐成为每家每户必不可少的消费品。再加上汽车制造业的迅猛发展以及国家对于大力推动汽车产业发展的政策,我国汽车保有量逐年攀升。传统的监控视频存储系统通常将视频数据存储在分布式数据库中,依靠分布式数据库冗余存储和数据分块的特性可以提供大规模视频数据高稳定和高吞吐的存储与检索服务。
但是存储大规模数据的分布式数据库只能支持olap方式的数据服务,它们对于复杂的查询请求无法及时回答,而只能支持主键查询的毫秒级响应。传统的监控视频数据存储系统往往需要进行大量优化工作来提高系统的检索效率,尽管如此,检索效率依然较低。
目前存在一些对于视频数据存储的研究,但其大多数要么只专注于一个具体领域的检索优化,如面向地理信息的检索;要么关注于对特定存储系统的优化,不能满足视频数据存储与检索对于性能的需求而且与监控视频数据不能够完全贴合。而已有的一些专注于视频数据存储的系统,存在检索性能问题,不能够胜任对视频数据快速检索的需要。还有一些基于hbase的检索系统不具备检索视频语义的功能,一些提供视频语义检索功能的系统没有对hbase的索引结构优化。此外,使用mapreduce任务提取图像特征并检索的方法要求输入信息是图像,不能直接对文本语义信息检索。
技术实现要素:
有鉴于此,本发明的目的在于提出一种分布式交通监控视频数据存储与快速检索系统,能够快速的根据视频语义信息进行数据检索并且可以快速批量获取检索到的视频图像数据。
基于上述目的本发明提供的一种分布式交通监控视频数据存储与快速检索系统,包括:
视频数据存储模块,与hbase分布式列式数据库连接,用于将视频数据存储入hbase分布式列式数据库;
分布式视频数据语义检索模块,用于对视频数据语义建立基于内存的结构化索引模型;
数据通信模块,用于多个视频数据生产者、多个所述视频数据存储模块与所述分布式视频数据语义检索模块之间的数据通信。
在一些实施方式中,所述视频数据存储模块将视频语义信息融入rowkey中,使多次的hbase基于rowkey的数据访问请求转换为一条或多条rowkey范围扫描请求。
在一些实施方式中,所述分布式视频数据语义检索模块采用跳表结构来存储同一摄像头同一类型语义的所有视频数据的时间戳信息;对于图像类型的视频数据,对图像的发生时间进行排序;对于视频类型的视频数据,对视频的起始时间进行排序。
在一些实施方式中,所述跳表结构基于随机函数的概率选择模型,跳表的随机平均查找长度为c(log1/pn-1)=(log1/pn-1)/p,其中n为跳表存储数据个数,p为选取概率;该函数在p=0.5附近取得极小值,选取概率p设置为0.5。
在一些实施方式中,采用比特数组来对所述跳表结构的查询访问进行过滤。
在一些实施方式中,对带有时间戳的语义信息进行映射,每个摄像头的每个语义对应一个比特数组,而该语义出现时间与该语义的最小时间相减的值为该视频数据存储在比特数组的下标,当某个时间戳内有视频数据,则将其对应的比特数组位置为1,否则为0。
在一些实施方式中,采用压缩下标的方法对所述比特数组进行触发式压缩,当比特数组容量超过设置的阈值,将对比特数组进行压缩。
在一些实施方式中,使用布谷鸟哈希散列函数对所述分布式视频数据语义检索模块中的散列表进行优化,首先,将字符串类型的数据通过映射函数
在一些实施方式中,所述数据通信模块采用二进制的方式对消息进行序列化;所述数据通信模块还采用基于redis的订阅模式来传递视频数据生产者与所述分布式视频数据语义检索模块之间的消息;所述数据通信模块还采用历史消息持久化的方式将视频数据生产者与所述分布式视频数据语义检索模块之间通信的所有消息持久化到有序队列中,当有新节点加入或者需要重新构建索引的时候,拉取历史消息队列中的数据进行检索构建。
从上面所述可以看出,本发明提供的分布式交通监控视频数据存储与快速检索系统,能够快速的根据视频语义信息进行数据检索并且可以快速获取视频与图像类型检索结果集数据,在实现视频数据存储的同时显著提升检索效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的分布式交通监控视频数据存储与快速检索系统结构示意图;
图2为本发明实施例中视频数据存储模块rowkey设计方案图示意图;
图3为本发明实施例中的跳表结构示意图;
图4为本发明实施例中测试跳表结构平均查找长度随随机概率变化点图;
图5为本发明实施例中的比特数组示意图;
图6为本发明实施中使用改进布谷鸟散列算法的散列结构示意图;
图7为本发明实施中的数据通信模块结构图;
图8为本发明实施中的rowkey检索流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本发明实施例提供了一种分布式交通监控视频数据存储与快速检索系统。参考图1,为本发明实施例的分布式交通监控视频数据存储与快速检索系统结构示意图。
所述分布式交通监控视频数据存储与快速检索系统,包括:与hbase分布式列式数据库连接的视频数据存储模块、基于内存的分布式视频数据语义检索模块以及数据通信模块。其中:
视频数据存储模块用于将视频数据存储入hbase分布式列式数据库,并且保证存储与访问的高效性。
分布式视频数据语义检索模块,用于对视频数据语义建立基于内存的结构化索引模型,加快基于语义检索的效率。
数据通信模块,用于多个视频数据生产者、多个所述视频数据存储模块与所述分布式视频数据语义检索模块之间的数据通信。
具体的,视频数据存储模块包括下列操作内容:
(11)为打破随机rowkey和递增rowkey设计方式在基于语义检索上的低效性,使用基于语义的rowkey设计方法,将语义信息融入到rowkey之中,使得从检索模块获取rowkey列表的时候,这些rowkey在物理上是相邻的,这样多次的hbase基于rowkey的数据访问请求可以转换为一条或几条rowkey范围扫描请求,降低数据库负载同时提升检索性能。该模块rowkey设计方案如图2所示。这样的rowkey设计方案使得相同摄像头相同语义的视频数据按照时间顺序分布于hbase数据库中,这样每次检索请求通过检索模块获取的是物理上连续的rowkey范围,这样只需要依次获取这个范围内的视频数据即可,只需要进行一次或几次数据库访问,该过程如图8所示。
具体的,分布式视频数据语义检索模块包括下列操作内容:
(21)为加快语义信息时间范围检索的效率,同时兼顾在语义信息数据量巨大的时候系统维护的开销,采用有序跳表结构来存储同一摄像头同一类型语义的所有视频数据的时间戳信息,对于图像类型的视频数据,对图像的发生时间进行排序,而对于视频类型的视频数据,对视频的起始时间进行排序。图像与视频类型视频数据跳表结构存储示意图如图3所示。
(22)由于散列表在存储的数据结构未知且数据量较大的情况下,存在存储效率低下的问题,为提高对大量类别数据的存储效率与检索效率,使用布谷鸟哈希散列函数对散列表进行优化。
其中,所述操作内容(21)包括下列操作内容:
(21a)由于跳表结构的平均查找长度与跳表的选取概率p设置有关,为了确保跳表的检索效率最优,需要对选取概率p进行优化设置。所使用跳表结构基于随机函数的概率选择模型,跳表的随机平均查找长度为c(log1/pn-1)=(log1/pn-1)/p,其中n为跳表存储数据个数,p为选取概率。跳表结构平均查找长度随随机概率变化点图如图4所示。该函数在p=0.5附近取得极小值,选取概率p设置为0.5。
(21b)由于跳表结构在查询范围不存在数据时,会造成两次查询空转,消耗系统性能,为了加快跳表结构对于查询结构集为空的检索场景检索效率,采用比特数组来对跳表结构的查询访问进行过滤。比特数组示意图如图5所示。
进一步的,所述操作内容(21b)包括下列操作内容:
(21ba)由于比特数组是一种二进制的数组结构,为了使用比特数组存储时间戳信息,对带有时间戳的语义信息进行映射,每个摄像头的每个语义都会对应着一个比特数组,而该语义出现时间与该语义的最小时间相减的值为该视频数据存储在比特数组的下标,当某个时间戳内有视频数据,则将其对应的比特数组位置为1,否则则为0。
(21bb)为解决比特数组在数据量较大的时候会有存储占用空间较大的问题,权衡检索高效性与空间效率,采用压缩下标的方法对比特数组进行触发式压缩,当比特数组容量超过设置的阈值,将对比特数组进行压缩,比特数组中的每一位表示的时间范围增大,如之前每一位只能表示这一秒有没有数据,现在每一位表示两秒钟有没有数据。每一位表示的范围增大一倍,比特数组的占用空间下降一倍。
其中,所述操作内容(22)包括下列操作内容:
(22a)由于散列表在存储的数据结构未知且数据量较大的情况下,存在存储效率低下的问题,为提高对大量类别数据的存储效率与检索效率,使用布谷鸟哈希散列函数对散列表进行优化。由于散列结构存储字符串类型数据,布谷鸟哈希算法要求有两个散列函数计算元素存储位置,采用两次映射的方式,首先将字符串类型的数据通过映射函数
具体的,数据通信模块包括下列操作内容:
(31)为了保证数据生产者与检索模块之间通信的高效性,采用二进制的方式对消息进行序列化,使得消息序列化后体积较小适合网络传输。使用protocolbuffer数据交换协议作为底层协议。
(32)由于数据生产者与检索模块是多对多的关系,为了保证视频数据生产者与分布式视频数据语义检索模块之间的空间非耦合和同步非耦合,采用基于redis的订阅模式来传递视频数据生产者与分布式视频数据语义检索模块之间的消息。视频数据生产者与分布式视频数据语义检索模块通过订阅指定主题和向指定主题发送消息来达到通信的目的。
(33)为了保证数据生产者与检索模块之间的时间非耦合,采用历史消息持久化的方式将视频数据生产者与分布式视频数据语义检索模块之间通信的所有消息持久化到有序队列中,当有新节点加入或者需要重新构建索引的时候,拉取历史消息队列中的数据进行检索构建。数据通信模块结构图如图7所示。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。
在阐述了具体细节(如颜色和车牌类型语义数据)以描述本发明的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本发明。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,存储其他类型的语义数据并且通过这些语义数据进行检索(例如,车辆的类型、车辆的大小)可以使用所讨论的实施例。
本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。