持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情
介绍
目前,视频网络监控在国内外都有着广泛的应用和较大的市场,比如安防系统,在一些商场、居民区、街道、金融机构随处可见。在诸多应用场合使用的视频监控系统主要分为2大类:
1)模拟视频监控系统。该类系统采用模拟信号线传输数据,信号易受外部干扰,一旦传输距离较远,视频质量将会受影响,出现卡顿、马赛克等现象,主要应用于监控范围较小的场合,且系统的可扩展能力较弱,存储信息量非常有限,施工复杂。
2)数字视频监控系统。由于该类系统的开发厂商较多,并未做到标准统一化,致使视频设备不具有互换性,视频平台建成并交付后,平台和设备的损坏、更新、维 修、维 护 只 能 由 视 频 建 设 单 位 提 供 支 持 和服务。数字时代的计算机处理器与监控系统大多为传统的串口总线连接,所以呈现出了一定的弊端,尽管系统图像处理功能与sensor本身采集功能已较为成熟,但监控端与PC端控制信号传输有限,易受到干扰,相对来说不够完善。如今,网络监控的引入,各种网络协议与网络设备逐渐完善,使得视频网络传输的带宽更足,传输的数据完整性更有保障。最近几年,随着嵌入式技术的快速更新,控制器各个功能日益完善,芯片集成度增高,使得微控制器本身的稳定性、扩展性、运算速度、内存管理系统等性能更加优秀。
鉴于此,设计了一种基于嵌入式 Linux的视频图像处理及网络传输监控系统。该系统相比数字监控方式,不仅减少了接口引线工程,而且在数据传输速度、系统性能等各个方面更加完备。在 编 码 方 面,因 H.264在压缩算法方面强于 M-JPEG[9],H.264的压缩比一般能达到1∶70甚至1∶150以上,而 M-JPEG压缩比一般小于1∶20,且由于高压缩率,经 H.264方式压缩的图像数据量远小于 M-JPEG,更利于实时传输。
视频监控系统服务端设计
视频输入 VI(videoinput)部分
1)创建视频缓存池。视频数据缓冲池。在 Linux中,使 用、释 放 内 存 都 需 要 申 请,同 样地,采样的视频数据存放也需要申请内存,海思平台提供了视频缓存池机制。结合实际业务需要,创建合适的缓存块个数,块的个数不能少于实际项目需要的个数,如原始数据存放在缓冲块 Am 中,传入 VI后,视频 处 理 子 系 统 (videoprocesssub-system,简 称VPSS)部分对数据进行裁剪、旋转、缩放等处理,根据后续模块的需求,对原始数据作不同运算,运算后的数据分别放入各自的缓存块中。
2)视频输入设备工作方式。VI设备通道功能框。视频输入设备可配置2种工作方式:①工作在离线状态时,VI对摄像头传输过来的视频数据选择性地进行一系列运算,如对原始数据进行裁剪、覆盖等处理,并输出多路不同分辨率的数据;②工作在在线状态时,VI将传入的原始 数 据 直 接 在 芯 片内部写入 VPSS,不经过 DDR,数据到达 VPSS的过程中省去了对 DDR 的读写,节省了图像数据传输时间。这2种模式的切换在安装驱动时通过设置参数来进行配置,考虑到实时性要求,为了降低时延,本系统设置工作在在线模式下,VI配 置 方 式 为insmodhi35xx_sys.kovi_vpss_online=1。
VPSS
VPSS 部 分 针 对 用户需 求 对 图 像 进 行 去 噪 等 预 处 理,再 传 入 VPSS 通
道,在通道中进行缩放、翻转、覆盖、镜像等图像处理,最后将视频数据本地显示或者通过视频编 码(videoencorde,简称 VENC)模块编码后发送至 终端解码播放。
VENC
1)HI3518E 芯 片 VENC 部 分 是 一 个 支 持H.264/JPEG两种协议的编码器,主要分为 AVC(ad- vancedvideocoding)和JPGE 两部分,本系统H.264的编 码 功 能 在 AVC 中 实 现,JPEG 编 码 的 实 现 在JPEG 部分。视频码流在 VENC 中的处 理 过 程 可 分为对视频源数据的接收,对视频数据进行区域处理,视频数据编码,视频流输出4个步骤。
2)编码通道处理模块如图7所示。编码通道用来实现图像的编码操作,由码率控制器和编码器配合完成视频图像编码。码率控制器用来调整编码时的编码速率,编码器完成编码功能。