1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本文介绍了一种基于H.264的嵌入式技视频监控结构和系统工作原理。客户端实现时,针对H.264标准解码中存在的问题,采用SIMD(Single Instruction,Multiple Data)技术,实现了宏块内插过程的优化。最后在实际环境中进行了测试,整个系统的运行比较稳定。
|
|
相关推荐
1个回答
|
|
引言
随着视频压缩技术的日益成熟,嵌入式视频监控成为当今视频监控的主流。目前新的视频编码标准H.264的成熟和嵌入式技术的广泛应用,推动了视频监控系统向多领域延伸。本文介绍了一种基于H.264的嵌入式技视频监控结构和系统工作原理。客户端实现时,针对H.264标准解码中存在的问题,采用SIMD(Single Instruction,Multiple Data)技术,实现了宏块内插过程的优化。最后在实际环境中进行了测试,整个系统的运行比较稳定。 1 嵌入式视频监控系统设计 1.1系统的体系结构 本文提出的基于H.264的嵌入式视频监控系统由以下4部分组成,如图1所示 1.gif 图1监控系统的结构 (1)视频监控前端(DVS):完成现场视频数据的采集,利用H.264压缩技术完成两种不同分辨率和帧率视频流的编码。通常情况下,将低码率的视频流通过互联网或GPRS、CDMA网络传输到中心管理服务器。(2)客户端(Client):接收从中心管理服务器转发过来的数据,进行实时浏览或向中心管理服务器请求历史数据或通过中心管理服务器配置和控制云台。(3)中心管理服务器(CMS):管理DVS、Client和媒体服务器,记录三者的相关信息(ID号、IP地址、端口号Port、图像分辨率、压缩格式等参数);向DVS请求视频流;向Client发送视频流;向媒体服务器发送视频流或检索视频流。(4)媒体服务器(MS):存储不同类型的视频流;向CMS提供历史文件。 1.2系统的工作原理 2.gif 图2系统的工作原理 图2所示CMS是视频监控系统的核心。当DVS接入Internet后,会将本地摄像机的ID、IP和端口号向CMS注册,以便CMS的管理。CMS会把DVS提供的信息写入本地监控前端数据表(DVS Table)。这样,Client可以通过DVS的ID号进行远程访问。同样MS和Client也用同样的方式向CMS注册,CMS会把相关系信息写入客户端表(Client Table)。然后,远端用户通过Client输入要访问DVS的ID号并发向CMS,CMS会跟据DVS的ID号查询DVS Table,得到DVS的lP地址和端口Port,向DVS发送连接请求,当会话建立成功后,DVS开启编码器开始采集编码,通常情况下它会把低分辨率的视频流发向CMS,再由CMS转发向不同的客户端。最后,客户端对接到的视频流进行解码显示,从而完成监控任务。 DVS在采集编码时,会把数据流编成两种具有不同分辨率和帧率的独立视频流,如Dl和CIF或HDI或CIF等,为了节省有效带宽.它把其中一种低分辨率的视频流发往CMS,另一种高分辨率的视频流存于本地磁盘。而CMS接收到视频流后会根据当前的网络状况和客户端处理能力调整视频流的格式进行转发,最后把接收到不同格式的视频流存储于不同的MS。只有当网络负载比较轻的情况下。CMS会向DVS请求高分辨率的视频流。可见,CMS不仅充当了管理员的角色,而且也充了变换编码的角色。 另外,当Client需要回放远端视频流时,会向CMS发出历史数据请求。其中包括DVS的ID号、图像格式和时间等信息。CMS根据请求检索Media Table,查到符合要求的数据时,会向MS请求,收到Client要求的媒体流后,进行转发。 2 H.264解码优化 H.264是围际上最新的视频编码标准,它不仅采纳了现有视频标准的优点,而且推出一些新的技术如多模式、多参考帧、运动估计、自适应二进制算数编码等新技术,大大提高了视频编码的效率。但是H.264性能上的改进也带来了复杂度的明显提升。其中运动补偿是H.264算法解码最耗时的部分,所以客户端实现中除了采用通用的方法(像素内插、调整数据结构、删除冗余代码)优化H.264解码器外,还利用了SIMD技术,重点对运动补偿中的宏块进行优化。 在H.264解码器中,用一个6抽头滤波器可以实现1/4像素内插,并且固定的滤波器系数可以预先存储,内插过程在滤波器系数和图像数据问产生结果,所以用一个SSE(Streaming SIMD Extensions)指令PMADDWD(Packed Muhiplv and Add)很容易实现这一过程,如图3所示为指令PMADDWD工作过程: 3.gif 图3 PMADDWD指令 图3中所示有两个128位SSE寄存器操作数,操作数中每个数据单元是16位整数。指令先对它们对应的两个16位整数相乘.相乘直接相加,最后把结果存入一个SSE寄存器中,其中每个数据单元是32位整数。那么,用一条PMADDWD指令在两个128位SSE寄存器里就可以完乘法和加法计算,然后在结果寄存里对这4个32位数据相加得到最终结果。但是,当计算一个新的像素值时,每次都需装入不同图像的数据。那么对于一维中的一个块来说,向量数据必需装入64次。所以为了避免重复装入相同的数据,我们采用了水平内插法。实现过程如图4所示: 4.gif 图4 子像素内插实现过程 水平内插,先把6+8—1=13个相关像素装入一个长度为128比特的寄存器中。然后把它们拆分。并分别移入两个长度为16比特的SSE寄存器中(RI和R2)。由于滤波器系数(1,-5,20,20,-5,1)必须水平移动,所以我们必须装入4种具有不同平移的滤波器系数,然后在R1上对这4个滤波器系数执行PMADDWD指令,得到前4个内插像素值。需要注意的是,在计算第4个内插象素值时,由于第5个滤波器系数c5=1不能装入第4个系数寄存器,因此需要单独地在x(i+6)上进行一次额外的运算才能得出第4个内插像素值。同理,可以在R2上计算出另外4个内插像素值。这种方法避免了反复加载不对称数据带来的损失,减少了数据装入的负载,所以H.264算法解码速度得到提高。 当然对于垂直内插,可以通过简单拆分、移位和加法完成这一过程。如滤波器系数可以用简单的移位和加法实现。因此6行数据可以先装入6个128位的寄存器中,接下来通过移位和加法计算出最后的结果。由于SSE寄存器可以装载8个16位数据,所以可以在一行上计算出8个内插像素值。在这一模中,计算块大小的内插像素值比块节省计算时间,提高了解码速度,可看最后实验结果。 3 客户端的实现 (1)CH264Dec模块,是H.264压缩码流的解码类。负责H.264压缩码流的解码,供显示模块调用。该模块的实现不仅采用上小节提出的优化方法,还采用了研究者已经提出的其它优化方法。 (2)CDirectDraw模块,是图像显示类。采用微软DirectX中的DirectDraw技术,主要完成客户端主界面的初如化和调用CH264Dec模块器模块完成图像显示工作。 (3)CFileSave模块,是文件存储类。对文件进行初始化(文件名、大小、存储时间、存储路径等),完成存储。 (4) CCIielltSocket模块,是网络传输类。初始化套接字、连接CMS、从网络接收数据、向CMS发送数据请求和云台控制请求等。 (5) CPlayBaek模块,是图像显示类。回放窗口的初始化及历史文件的播放显示,调用解码器类。 4 实验结果 为了验证本文中采用SIMD技术对JMl2.4参考软件中解码部分优化的有效性,我们给出的测试结果如表l所示。主要测试解码模块中亮度运动补偿的解码速度。解码平台使用普通的PC机。奔腾四代2.4GHz CPU,512M的内存,Windows XP操作系统。测试序列中只有I帧和P帧。 表1解码优化的测试结果 b1.gif 测试结果如表1所示,我们采用SIMD技术对参考软件进行优化后的解码速度比优化前快1-3倍左右。但对于高位率视频流(小步长的视频流),仅采用SIMD技术很难达到比较快的优化速度,这是因为熵解码过程对解码速度影响较大。对此,我们采用不同的优化算法对影响解码速度的所有模块进行优化,在实际环境中进行测试,实验结果如图5所示。结果表明解码速度会受编码时的目标码率和GOP值的影响。在目标码率相同的情况下,GOP值越小,解码速度越慢,反之则越快,但影响不太明显;在GOP相同的情况下,目标码率越小,解码速度越快。反之则越慢,而且影响比较明显。所以本系统在实际应用中,我们采用100Kbit/8的目标码率进行编码,以实现解码端平均25fps左右的解码速度,这样可以正常完成I监控系任务。 5.gif 图5系统的测试结果 5 结论 本文介绍了一种基于H.264的嵌入式视频I监控系统结构和系统工作原理,接着分析了PMADDWD工作过程和H.264解码中宏块的内插过程,然后根据PMADDWD指令特点,提出了一种针对H.264解码中宏块的内插过程优化方法。最后给出的实验结果证明它的有效性。另外,本文实现了监控客户端,并应用有实际环境中运行良好。 本文作者创新点:根据多媒体扩展架构指令集中PMADDWD指令特点,针对H.264解码中宏块的内插过程,提出了一种优化方法,实验证明,优化后亮度运动补偿部分的解码比优化前快1-3倍。 |
|
|
|
只有小组成员才能发言,加入小组>>
788 浏览 0 评论
1151 浏览 1 评论
2527 浏览 5 评论
2860 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2709 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1068浏览 3评论
193浏览 2评论
455浏览 2评论
368浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
453浏览 1评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 18:49 , Processed in 1.001187 second(s), Total 78, Slave 59 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号