如何使用FPGA实现高清低码流视频编码?

FPGA/ASIC技术

205人已加入

描述

  3G网络和智能手机的迅速普及推动了移动互联网的发展,为安防网络从局域网扩展到移动互联网提供了条件。通过对移动互联网的上行带宽和下行带宽的实测可以知 道,512 Kbps是一个有效而且可靠的带宽值,如果能够在这个带宽值限制条件下实现高清视频的传输,必将可以推动移动监控应用的普及。本文介绍了FPGA在实现高清低码流视频编码中的作用以及如何具体实现。

  概述

  安防摄像机的分辨率和码流是正关联的,进入高清时代后,码流就在2Mbps以上,比以前D1时代要高3倍以上,这么大的码流在 100M/1000M的局部网络传输是没有任何问题的,硬盘存储的代价也可以接受;但是如果想在互连网和3G网络上传输高清视频,低码流的要求就凸现出来了。

  首先是高清视频上传到互联网的问题,目前最普及最便宜的上传技术是ADSL,上传速度为512Kbps,用3G也能上传,CDMA2000的上传速度为1.8 Mbps,由于无线传输的理论峰值和实际连续平均值有相当的差距,所以可以估算在几百Kbps之内;其次是高清视频从互联网下载到显示终端的问题,ADSL的下载速度一般可以在4 Mbps以上,在家里用3G从网上下载1个几十MB的文件,TD-SCDMA的下载速度大约为430 Kbps,CDMA2000的下载速度大约为720Kbps,WCDMA的下载速度大约为1120 Kbps。

  综上所述,高清视频如果想方便而又经济地在互联网和3G网络得到应用,512Kbps的平均码流是合适的。高清视频在互联网和3G网络的应用中还有一个问题,就是网络实时带宽的波动比较大, 在这种环境下传输的视频其平均码流越低,视频的质量就越有保证。

  目前现状是高清视频720p的码流一般在2Mbps以上,1080p的码流在4Mbps以上,要大幅度降低码流,需要从几个方面考虑。

  H.264编码器与FPGA

  视频压缩编码是最有效降低码流的方法,目前H.264是编码器的首选标准。H.264编码算法很复杂,采用了很多方法来降低编码码流。一般来说,视频由连续的帧组成,编码后的帧主要有I帧、P帧和B帧。I帧的编码不依赖其他帧,只利用帧内的像素进行各种预测来降低编码码流;P帧利用当前帧和以前的帧做参考,利用帧内的像素和帧间的像素进行各种预测来降低编码码流;B帧利用当前、以前和后面的帧做参考,利用帧内的像素和帧间的像素进行各种预测来降低编码码流。

  从实用角度讲,P帧和B帧对降低编码码流的贡献最大,因为在监控应用中,P帧和B帧相对I帧的比例可以很大;而其中B帧作用更加明显:不仅可以利用前后参考帧来增加预测的准确性,而且B帧的解码结果还可以不作为参考帧,这样又可以通过适当降低B帧编码质量来降低编码码流,于是B帧的码流又可以比P帧少很多。B帧除了比P帧多了后向参考帧可以用外,所采用的预测方法和P帧是一样的,所以后面我们只考虑I帧和P帧,分别讨论FPGA在预测和变换结果的量化环节所起的作用。

  预测—FPGA在并行处理上的优势

  I帧所采用的预测方法是相对简单的,而且在P帧和B帧都可以采用,所以I帧的所有预测方法都应该全部实现;P帧的预测方法非常复杂,H.264 编码器的大部分工作量都在这里。P帧的预测目的就是找到当前宏块在参考帧的位置(可以将宏块分成几部分来匹配),而且匹配精度是1/4像素,准确的匹配可以最大限度减少编码。

  为了减少工作量,一般是先进行整数像素的搜索匹配,然后才是1/2和1/4像素的最后匹配,要想提高搜索匹配的成功率,参考帧数量、搜索范围和匹配次数都是很关键的。一般来说,参考帧多或者搜索范围大都需要比较多的匹配次数。

  由于硬件实时性和流水线的要求,P帧的预测都要在固定的单位时间内完成,在很短的时间内要想实现尽可能多的匹配次数,并行处理是唯一的选择,FPGA在并行处理上体现了优越性,可以实现同时多个位置的匹配,像一些小菱形的4点或者3点匹配,就可以同时计算出3~4点的SAD,比逐点计算快 3~4倍。另外,多个参考帧也可以并行处理,同时得到不同参考帧的最小SAD;并行处理是可以大大提高匹配次数,但是也需要大量的内部存储器和逻辑资源,需要从整个设计的总体资源来考虑。

  变换结果量化—FPGA的QP控制

  I帧是一个视频序列的第1帧,所以一般变换量化后的质量都比P帧和B帧高,采用的量化参数QP也要比P帧和B帧所采用的QP要小。但是对于一些运动物体少的区域可以考虑用较大的QP来降低编码,就是说I帧的不同区域可以有不同的QP。

  P帧一般只对运动宏块有变换量化后的结果,所采用的量化参数QP要比I帧大,至于大多少可以根据运动速度来定,速度慢的话量化参数QP要比I帧 大1~2,速度快的话量化参数QP要比I帧大3~4,因为运动速度快时人眼看的就有点模糊,所以图像质量损失大点也感觉不明显。

  B帧的结果可以不作为参考帧,所以B帧的量化参数QP要比P帧大,以获得更少的码流。

  从上面的分析可以知道,不仅3种帧的QP大小不同,QP也会根据运动情况而变化,这样的QP控制很复杂,而且ASIC的H.264编码器也不一定有这样的控制功能,FPGA正好可以实现这样的控制。

  ISP—FPGA的滤波器和锐化器功能

  ISP是编码前的视频图像处理,其中滤波强度和锐化强度对码流的影响也很大,滤波算法有很多,其中既能滤波又能保留边缘的滤波算法是很复杂的,用FPGA可以方便地实现不同算法和不同强度的滤波器和锐化器。

  智能分析—FPGA的智能分析功能

  智能分析主要有两个功能,图像分析和运动分析。运动分析是为了获得视频中的运动物体,如人和车辆等;图像分析是为了获得运动区域和静止区域的分布,可以减少静止区域的码流。一般ASIC的智能分析功能只有运动分析,FPGA可以同时实现这两个功能。

  FPGA在智能自适应中的应用

  影响码流的因素主要包括:场景内容的变化、视频分辨率、视频帧率、量化参数QP、视频滤波强度、图像锐化强度和图像分析灵敏度等。当场景内容变 化时,码流会随之发生变化,为了实现维持码流的稳定的目标,就需要同时调整其他参数,这就是智能自适应。智能自适应需要比较复杂的控制策略来实现,参与调 整的参数分布在ISP、智能分析、H.264编码等多个环节,对实时性要求比较高,很适合用FPGA来实现。

  FPGA的选择

  H.264编码以 宏块为单位,在处理过程中必然会涉及到宏块的输入输出和缓存。1个宏块的数据为384字节(256字节亮度数据和128字节色度数据),如果考虑到输入输 出和处理的并行,必须设置双份,即768字节,所以使用1K字节的存储块刚好满足要求。参考帧的存储可能包括多个参考帧宏块,需要用多个存储块。ISP中 经常需要缓存1行像素,1080p每行有1920个像素,需要2K字节的存储块。

  从上面的分析可以看出,适合H.264编码和图像处理的FPGA对内部存储器的要求是:存储块容量小(如1~2KB),并且存储块数量越多越好;另外,对乘法器的要求也是数量越多越好。

  结语

  从上面的论述中可以看出,降低视频的编码码流是一个系统性的工程,涉及到很多环节,尤其是H.264编码器可以做的工作很多。目前我们用 CYCLONE IV的EP4CE115实现了1280×720×25fps的平均码流小于512Kbps,H.264编码档次是main profile with cabac。随着FPGA工艺的进步,FPGA的资源越来越多,运动宏块的预测可以做到越来越准确,编码码流会越来越少,下一步我们准备用CYCLONE V来实现1920×1080×25fps的平均码流小于1024Kbps。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分