EDN China > 设计实例 > 消费电子设计 > 视频/图形处理 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

基于PC机的MPEG-4编码原理研究及实现

西安光学精密机械研究所 梁伟伟/中国科学院研究生院 李玉山/西安电子科技大学 刘洋?? 2010年06月17日 ?? 收藏0

?  以上是基于宏块的全像素搜索,还可以选择是否进行基于8×8块的全像素搜索。利用已经得到的基于宏块的运动矢量,找到基于宏块的最佳匹配点。此匹配点为中心(0,0),其他匹配点为(-1,-1),(0,-1),(1,-1),(-1,0),(1,0),(-1,1),(0,1), (1,1),分别以这9个匹配点作为8×8像素块的左上角起点,将该8×8块和当前帧的8×8块做绝对差值和的运算,选择SAD8×8值最小的左上角起点作为最佳匹配点,以找到最佳运动矢量,得到宏块内每个8×8亮度块的运动矢量和SAD8×8值。将4个SAD8×8的和与SAD16×16做比较,将较小值按照一定的规则处理,从而判断当前宏块的预测模式为帧内或帧间预测。

  如果采用帧间预测,进一步采用半像素搜索。首先对整个参考帧进行双线性差值,则参考帧的面积变为原来的4倍,然后在特定的搜索范围内搜索出更精确的运动矢量,最后根据参考图像的亮度信息、色度信息和运动矢量做运动补偿。

  如果采用帧内预测,不再对当前宏块进行任何运动估计,相应运动补偿后的参考宏块数值为0。

  最后用当前帧减去运动补偿后参考图像得到差值,将差值数据进行纹理编码;对每个宏块的运动矢量进行预测并求出差分值,对差分值进行位流转换并输出。

  2 编码器的实现和测试

  根据图1并结合MPEG-4编码器各个模块的实现原理,进行编码器主函数的编写和调试。初步确定编码器的主函数应包括以下三部分:

  初始化部分由于参考代码中存在RGB到YUV的图像格式转换函数(本文未介绍),则应开辟相应的存储BMP和YUV图像的空间;还要开辟空间存放编码器生成的压缩文件;必须设置编码器的编码参数。

  编码处理部分此部分是通过循环编码各帧图像来实现的,读入一帧图像后,判断是采用I帧还是P帧,然后输出VOP头信息,进行当前VOP的编码并输出位流信息到缓冲器中,最后利用fwrite函数形成磁盘文件。

  释放资源前面两个阶段开辟的内存空间必须释放掉,整个视频的编码过程结束。

  结合参考的编码主函数,调试并运行编码器,生成divx文件,相应地调试出解码器。逐一更改编码器的量化参数QP、帧率、输出码率和I帧间隔参数,测试出它们对编码效果的影响,如量化参数QP、帧率和I帧间隔参数与压缩比成正比,输出码率与压缩比成反比。经过综合测试,在保证解码图像质量的前提下,当QP为8,帧率为30 f/s,输出码率为400 000 b/s,I帧间隔为3时,压缩比为58.8,此时达到最好的压缩效果。当然,如果对解压后的视觉效果要求不高的话,压缩倍数还可以继续提高。

  3 结语

  所讲的MPEG-4是MPEG-4标准的Part2部分,其编解码器已经获得了许多厂商的支持。目前,作为MPEG-4 Part10的H.264也已经推出并发展,相比MPEG-4 Part2,H.264在同样质量下,其码率能降低50%左右,说明MPEG-4一直在发展。随着基于内容的编码技术的实用化发展,MPEG-4将有更为广泛的应用前景。


上一页123下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

PC机? MPEG? 编码? 形状编码?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈