一种支持存算联动的地理视频数据组织管理方法

文档序号:9597885阅读:235来源:国知局
一种支持存算联动的地理视频数据组织管理方法
【技术领域】
[0001]本发明属于地理空间信息系统技术领域,特别是涉及实时分析处理的地理视频数据组织管理方法。
[0002]
【背景技术】
[0003]面对城市犯罪高发、警力资源不足、人力成本过高等现实挑战,视频监控作为犯罪防控的新型警务战略在安全领域得到了广泛应用。目前,我国已建成全世界首个大规模多级城市联网的视频监控网络,产生动态接入TB级/天的实时视频流和总量PB级的视频档案,为国家公共安全和应急管理科技支撑体系提供了重要基础数据。复杂地理环境下突发公共安全事件具有大范围流动性,传统针对独立视频流的分散处理,难以满足全局查找与跨境头的关联分析,地理视频(GeoVideo)作为集成地理空间与视频片段的新的表达方式,推动了以地理位置为核心的视频内外场景空间映射超媒体平台的发展,即通过地理位置关联实现视频的关联查询与分析计算。
[0004]图像传感器技术和空间定位技术的快速发展,使得海量地理视频数据源源不断地接入各类视频GIS处理系统中。鉴于视频处理是一种计算密集型和数据密集型的工作,需要消耗大量的计算资源,且分析结果具有时效性,如何有效组织管理海量视频数据,以支持TB级/天的实时视频流的在线智能处理,成为视频GIS面临的新挑战。视频接入的动态性、视频计算的实时性以及应急决策的限时性,急需视频GIS处理的实时化和智能化,为此传统存储与计算分离的视频组织管理方法的局限性日益突出,而存算联动成为地理视频数据组织管理领域新的研究前沿。
[0005]存算联动的核心价值在于将最新接入的视频数据融入分析和计算模型中,保证分析结果的现势性和有效性。当前视频计算系统一直以冯.诺依曼的计算与存储相分离的计算模型为基础,存储器件发展明显落后于处理器件,使得计算与存储之间出现了内存墙和I/O墙瓶颈,导致视频计算中主要能耗和操作时延源于海量地理视频数据在不同存储部件之间的传输,无法满足视频分析的限时性。此外,实时计算中视频价值的有效时间短,数据接入后直接处理,无须落盘,传统先存储再分析的处理模式不再适用。内外存协同是打破1/0瓶颈并实现存算联动的重要技术手段。然而,现有的视频GIS内存以缓存形式存在,协同效率很低;而目前流行的内存数据库往往是外存数据库的子集,容量有限且脆弱,需要定期保存到可靠的存储器上,协同能力十分有限。因此,如何进行地理视频数据的内外存协同存储和交互,使其具有良好的写入和调度效率是目前亟待解决的问题。
[0006]鉴于此,本发明深入分析地理视频数据的存算特点,利用内存数据库维护时空传感数据的实时接入和更新,以支持存算联动;利用分布式文件系统管理视频流数据的流式读写,以满足海量视频数据的存储管理与高效调度;利用关系型数据库的内存表管理视频处理中实时提取的变化要素,利用触发器机制实现异常事件的主动探测,并结合消息推送机制,驱动地理视频智能分析的连续发展;利用协同索引支持视频GIS数据的实时查询和动态更新。
[0007]目前,海量视频数据的组织管理方法主要有以下两种:
(1)基于时长的视频分段组织;
该类方法以时长为基准分割视频流媒体,并以文件方式存储,该类方法存储管理简单,易于理解。但流媒体的特点决定了即使是相同时长的流媒体文件所需的存储空间不一定相同,且空间差异还很大。采用定时长存储方式,随着系统运行进行的不断删除、写入的过程中必然产生大量的磁盘碎片,对视频存储性能产生不利影响。采用固定空间存储方式对定时长存储方式进行优化,将总空间一次性地初始化为多个固定大小的数据文件,每个数据文件中存储的流媒体的时长可能是不相同的,周期覆盖时也不删除数据文件,而是重写文件内容、更新索引,这种方法可以避免磁盘碎片的产生,但是也增加了视频索引的复杂度。
[0008](2 )基于变化检测的视频压缩存储;
该类方法以变化作为视频存储的触发点,从摄取的图像序列中提取运动信息,判断场景是否存在变化。当场景发生变化时进行视频记录,没有变化时就停止记录。这类方法避免了长时间监测没有变化的同一场景而导致的存储空间浪费,属于视频压缩存储的范畴,但是微小或无关的场景变化都会带来,不能突出监控的主体,不仅浪费了存储空间,而且对查找重要信息产生了很大的干扰。
[0009]

【发明内容】

[0010]本发明目的在于针对传统海量视频数据管理方法难以支持存算联动的难题,针对地理视频数据的空间化特点、实时流数据特征,充分整合利用内外存数据库的性能特点,提出一种内外存协同的地理视频数据组织管理方法。
[0011]本发明所采用的技术方案是:一种支持存算联动的地理视频数据组织管理方法,其特征在于,包括有以下步骤:
步骤1:接入地理视频流,将视频流按照帧率转换为视频帧序列,并根据摄像头姿态和焦距计算每一帧的视域范围;
步骤2:将视频帧序列存入内存数据库Redis,每一路摄像机对应一个List链表,从列表头查询最近时间范围的视频帧数据,进行实时的运动区域检测与前景提取,同时以先进先出的顺序删除无效的历史视频帧数据,保持List链表长度恒定;
步骤3:视频帧序列分析提取变化要素并存入关系数据库MySQL的变化要素内存表,为MySQL中的变化要素内存表建立Insert触发器,执行变化的异常实时监测;判断变化要素值是否超出预先设定的阈值,如果超出,则根据异常数据超出范围触发不同类型事件,并将事件信息写入MySQL中的事件内存表;如果不超出,则执行下一个变化监测;
步骤4:为MySQL中的事件内存表建立Insert触发器,事件产生时,利用存储过程中内嵌的Gearman系统的任务分发功能,将事件信息同步发送到Redis中作为缓存;将MySQL的事件内存表行数据映射到Redis的哈希数据结构,以事件的全局唯一 ID作为Hash数据结构的键Key ;
步骤5:利用Redis的“订阅/发布”消息机制将Redis缓存中的事件推送至订阅了该事件的地理对象;以事件类别作为订阅和发布“频道”,以执行事件推送操作; 步骤6:地理对象接收到订阅事件,分析事件属性,依据事件类型和预定义事件处理模板,自主加载时空语义关联的地理视频数据和三维场景数据,以支持智能视频分析;
步骤7:将内存中的视频帧按时间段Λ t成组写入分布式文件系统MongoDB,创建“DATE+CAMERA_ID”的混合片键结构以支持将海量地理视频数据的分散存储;
步骤8:内存中的视频帧序列更新到MongoDB时,将步骤1中计算得到的每一帧的视域范围,按照时间段Λ t组成摄像头的移动轨迹,并计算该移动轨迹的MBR,作为节点更新到基于视域范围序列构建的时空索引。
[0012]作为优选,步骤2的具体实现包括以下子步骤:
步骤2.1:通过CreatList命令接入新的视频,将视频帧序列存入内存数据库Redis,以摄像机ID为List列表的Key值;
步骤2.2:通过SetVolume命名设置各列表的最长长度Length ;
步骤2.3:针对实时写入,接入的最新视频帧通过LPush命令插入在表头,调用RPop命令删除过期数据;
针对实时查询,通过LPop命令获取实时接入的最新视频帧;通过GetRange命令可以获得最新的N张连续视频序列。
[0013]作为优选,步骤3中所述的变化要素内存表建立Insert触发器,其具体实现包括以下子步骤:
步骤3.1:首先确定触发语句,将变化要素写入MySQL变化要素内存表中时即要实时地执行异常判断,因此触发器指定变化要素内存表的Insert语句;
步骤3.2:其次确定触发条件,因视频帧中提取出的变化要素为量化值,故通过预先设定阈值来判断该变化是否异常;
步骤3.3:最后确定触发器动作,当变化值超过阈值时,会创建一个事件对象,事件对象信息包括事件类型、事件主体、事件客体,将事件对象写入按事件类型区分的事件内存表。
[0014]作为优选,步骤4中所述的MySQL事件信息同步到Redis缓存,其具体实现包括以下子步骤:
步骤4.1,为MySQL的事件内存表建立Insert触发器,当新事件写入时触发;加载Gearman-MySQL-UDF用户自定义函数,以Gearman为桥梁,实现MySQL和Redis的通信。
[0015]步骤4.2,编写 PHP Gearman Worker,在 PHP Gearman Worker 中编写事件信息同步到Redis的操作。在事件的同步过程中,MySQL中的事件都是按表和按行存储,而Redis存储的是“键-值”对;为此,调用Redis的Hset接口,把MySQL的事件信息存入Redis的哈希数据结构,相对于每个字段都存储成String类型,更能节省内存,并以事件的全局唯一 ID作为Hash数据
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1