陕西高速公路车牌识别图像存储方法浅析 - ITS文库 - 智慧交通网 ITS114.COM|领先的智能交通门户网站
  • 首页 > ITS百科 > ITS文库 > 正文

    陕西高速公路车牌识别图像存储方法浅析

    2021-07-05 09:35:38 来源: 中国交通信息化 作者:赵新刚 评论:
    分享到:

    作者:赵新刚(陕西公路交通科技开发咨询公司)

     

    摘要:本文主要对存储高速公路门架车牌识别图像的方法进行了浅析,解析门架实时上传的图像json文件,将其中的base64格式图像数据转换为jpg格式图像,并按要求存储在省中心存储服务器中,最后将图像的相关信息传输到省中心数据库,以供后期其他业务调取图像时使用。

    2020年1月1日取消省界收费站后,全国高速公路正式实行“一张网”运营。作为后期稽查征缴通行费的证据,车牌识别设备抓拍的车辆图像等信息显得尤为重要,如何高效安全地存储这些图像成为亟需考虑的问题。

    现状分析

    截至2020年8月31日,陕西高速公路共有收费车道2192条,高速公路实体门架861套,其中高速公路实体门架抓拍的车辆识别图像由门架后台系统实时发送至省中心,以json文件的形式暂存在省中心服务器中,收费站车道的车辆识别图像以jpg格式保存在各个收费站服务器。

    以2020年8月陕西省高速流量情况为例,实体门架平均一天产生约1400万个门架车牌识别图像json文件,每个json文件里面包含车辆抓拍图像和车牌图像,合计约2800万张,收费车道平均一天产生160万张车牌识别图像,综上,每天需要存储的图片数量接近3000万张。

    2020年国庆节当天出行高峰,全省门架产生约2297万个图像json文件,可解析出约4595万张图片文件,收费站车道产生约307万张车牌识别图像,当天需要存储约4902万张图片,比平时日均车牌图像数量增加63.4%,因此,对存储服务器的性能以及图像存储程序的处理效率要求更高。

    为了方便省中心其他业务系统调取图片,所有车辆抓拍图像和车牌图像统一向省中心图像存储服务器保存一份。

    二 

    存储服务

    Amazon Simple Storage Service(Amazon S3)是一种对象存储服务,可提供行业领先的可扩展性、数据可用性、安全性和性能。我们可以使用它来存储和保护各种用例的任意数量的数据。Amazon S3提供了易于使用的管理功能,我们可以组织数据并配置精细调整过的访问控制以满足特定的业务、组织和合规性要求。

    Amazon S3将数据存储为存储桶中的对象。对象可以是一个文件或任何描述该文件的可选元数据,存储桶是存储对象的容器。要在Amazon S3中存储文件,需要将文件上传到存储桶。我们可以创建一个或多个存储桶,原则上一个存储桶中的对象不超过20亿个。我们可以控制每个存储桶的访问权限,并决定哪些用户可以在存储桶中创建、删除和列出对象。

    存储方法

    需要存储的抓拍图像包含两类:一是高速公路ETC门架抓拍图像,二是收费站入出口车道抓拍图像。其中,第一类图片分布暂存在省中心的20台服务器上,图像原始数据为实时接收到门架主动上传的车牌识别图像json文件,其中每个json文件中包含车辆全景图片和车牌图片;第二类图片以收费站为单位存储在各站服务器上,图像原始数据为jpg格式文件。

    以2020年8月为例,省内所有门架平均每天上传约1400万个图像json文件,负载均衡分配至20台服务器,每天每台服务器需处理约70万个json文件,处理每个json文件(包括解析、转存、删除)平均耗时约26ms,入桶每个jpg图片平均耗时约125ms,相当于每个json文件从解析到入桶完毕需要约276ms,每天处理70万个json文件需要约53个小时,此处还未计算入桶完成后的相关信息从本地入库到省中心Oracle的耗时,显然使用单线程处理是无法完成这项工作的,因此必须选择多线程来处理这些图像文件。

    本文所使用的存储方法主要将门架图片存储拆分为3个功能模块。

    (一)图像json文件解析模块

    主要功能为将门架上传的原始json格式图像文件解析为jpg文件保存在服务器指定目录。门架车牌识别图像数据量非常大,解析处理不及时会造成json保存目录文件过多,给后面该文件夹读取和写入文件造成压力,因此程序启动时开启10个解析线程,主线程每间隔20秒从存储目录一次性最多读取5000条json文件的路径信息(线程数量、间隔时间、最多读取条数可配置),均分给各个解析线程,解析线程根据路径信息读取json文件,将其中的base64图像数据解析成jpg图片文件存储在本地指定目录,本地目录按线程顺序号、按小时批次号创建文件夹,即每个线程创建一个线程顺序号命名的文件夹,线程号文件夹下面按小时批次创建文件夹,以避免后面取图片时一个文件夹内图片过多,读取图片路径等信息耗时过长;图像解析完成后,将该原始json文件删除以节省服务器存储空间。

    (二)jpg图像上传模块

    主要功能为将本地的jpg图片上传到S3桶服务器,同时将该图片相关信息保存在本地数据库文件中。与解析模块类似,程序启动时开启10个上传线程,每间隔20秒从存储目录一次性最多读取5000条jpg图片的路径信息(线程数量、间隔时间、最多读取条数可配置),均分给各个图像上传线程,上传线程根据路径信息读取jpg图片文件,调用S3提供的SDK接口,每天创建一个S3存储桶,将图片上传至对应的存储桶,同时将图片相关信息(如图片编号、抓拍时间、门架编号、车牌号、存储桶名称、该图片在存储桶中的键值等)保存在本地Sqlite数据库文件中,信息保存成功后将本地jpg图片删除以节省服务器空间。

    (三)牌识信息传输模块

    主要功能是将本地Sqlite中保存的图像存储信息传输至省中心Oracle数据库。传输模块开启一个线程,与省中心Oracle数据库保持一个长连接,可有效缓解省中心Oracle连接数过多问题,每隔20秒查询传输一次,数据传输完成后删掉本地数据库中的数据记录,待本地数据库中数据全部传输完成后,关闭本地数据库连接同时删除空文件。以上3个模块线程独立,可编译成一个执行文件在主线程中分别启动3个模块线程,也可分别编译成3个单独的执行文件进行部署、工作,互不影响,大大提高了车牌图像的存储效率;同时,也方便程序运行过程中出现错误后根据模块功能快速定位问题。

    存储处理

    (一)牌识图像json文件解析模块

    1、每次限制最多读取5000条json文件路径信息用于解析,防止文件积压过多时,读取耗时过长。

    2、jpg图片命名规则为:车辆图片编号_车牌号_抓拍时间_图片类型.jpg,此规则是为了后面将该图片上传至S3存储桶时提取相关信息。

    (二)牌识图像存储模块

    1、每次限制最多读取5000张图像路径信息用于上传,防止文件夹内图像文件过多,读取耗时过长。

    2、根据图片名称,按照图片名称命名规则,从中解析出相关信息,保存到本地数据库中。

    (三)牌识图像存储信息传输模块

    本模块只开一个线程,保持一个数据库长连接,相比于每个线程开启一个Oracle数据库连接可大大减少省中心Oracle连接数,以每台服务器10个存储线程算,每台服务器可减少9个数据库连接,省中心门架图片汇聚的20台服务器总共可减少约180个数据库连接。

    (四)传输方法疑问解答

    1、为什么解析完json文件,不将解析出来的图片流直接向省中心S3桶存储?

    (1)剥离图片存储流程,与收费站车道生成的jpg图片存储流程保持一致。

    (2)及时处理图像json文件,防止入桶耗时过长导致json文件处理不及时造成积压,影响门架json文件接收流程。

    2、为什么要将图片存储信息先保存在本地Sqlite,再传输到省中心Oracle库中?

    (1)防止省中心Oracle数据库连不上时,影响json文件解析流程,造成文件大量积压,耗尽服务器存储资源,每台服务器每天需处理的70万个文件所占的存储空间约为385GB,配置1T存储空间的服务器不到3天即可耗尽存储资源。

    (2)减少省中心Oracle数据库连接数。

    结束语

    车牌识别图像是后期稽核追逃的直接证据,安全高效地存储车牌识别图像是高速公路营运需要面对的问题。基于本文所述存储方法的软件程序已在陕西省高速公路收费中心上线运行,用于向存储服务器上传车牌识别图像。后续将继续关注运行过程中使用该方法的程序的执行效率、容错率等相关指标,为后期进一步优化存储方法,提高存储效率提供信息支撑。

    参考文献

    [1] 袁毅.自由流收费视频车辆判别系统探究[J].中国交通信息化, 2020(7):88-92.

    [2] 康伟才.高速公路行业与大数据[J].中华少年.科学家,2014,(6):15-16.

    [2] 孙飞.高速公路通信系统的传输方案[J].科学技术创新, 2015(34):24.

    [3] 关于印发取消高速公路省界收费站工程相关技术补遗文件的通知-取消高速公路省界收费站工程数据传输接口规范V1.4 交路网函[2019]319号[S].


    (原文刊载于2021年第5期《中国交通信息化》)


  • 关键字: 高速公路 车牌识别
  •    责任编辑:suyanqin
  • 每周新闻精选

  • 关于我们
  • 联系我们
  • 广告赞助