您好,欢迎访问三七文档
《数字视频处理》课内实验报告2015-2016学年第2学期专业:智能科学与技术班级:智能1301班学号:06133019(19)姓名:姚衎时间:2016年5月26日实验四基于JM的H.264/AVC编解码学习一、实验目的复习H.264/AVC视频编码标准,在VisualC++编程环境下利用JVT的测试软件模型JM对视频系列进行编解码。二、实验要求在VisualC++编程环境下,运行JVT的测试软件模型JM对视频系列进行编解码,观察压缩结果和序列PSNR值。三、实验内容预测编码:经过压缩编码后传输的并不是像素本身的取样值,而是该取样的预测值和实际值之差。编码概念图:块效应产生原因与消除算法:主要原因是对基于块的帧内和帧间预测残差的DCT变换系数进行量化的过程相对粗糙,解码时IDCT恢复AC/DC变换系数带有误差,造成图像块边界上视觉不连续;另一个次要原因来自于运动补偿预测。编码器:编码器有两条主要的数据流路径:左-右(编码)、右-左(重建)。编码数据流如下:1.以宏块(16×16亮度区域和相应的色度区域)为单位,对输入视频第n帧Fn进行编码;2.运动估计函数从参考帧(如上一次重建帧F或子采样后的F)中寻找当前宏块的匹配(相似)区域,该区域和当前宏块的位置偏移即为运动矢量MV;3.根据MV生成运动补偿的预测P(16×16区域);4.用当前宏块减去P生成当前帧的残差宏块Dn;5.将Dn分割为8×8或4×4的子块,分别进行DCT变换;6.子块量化(X);7.子块的DCT系数重排序(Reorder),再进行run-level游程编码(在一个非零的DCT系数前的连续为零的系数的数目被称为“游run”,而非零DCT系数的绝对值被称为“程level”);8.编码后的系数、运动矢量和相关的宏块头信息经过熵编码(无损)后生成压缩比特率。重建数据流如下:1.每个量化后的宏块X经过重定比例(rescale)、IDCT(DCT逆变换)变换生成解码后的残差D'n。由于量化过程不可逆,所以D'n和原宏块Dn并不相同(有失真);2.残差Dn与运动补偿预测P相加得到重建宏块,所有重建宏块一起得到重建帧Fn。第n帧Fn编码结束后,其重建帧F'n可以用来作为参考帧,并用于第n+1帧Fn+1的编码。以下是添加帧内预测后的H.264编码器流程图:解码器:解码器数据流:1.熵解码器从压缩比特流中解码出变换系数、运动矢量和宏块头信息;2.反向run-level游程编码并重排序之后,得到量化的变换域宏块X;3.X经过重定比例(rescale)、IDCT变换生成解码后的残差D'n;4.根据解码后的运动矢量,在解码器上一次重构的参考帧F'n-1中找到16×16的匹配区域,作为运动补偿的预测P;5.残差D'n与P相加得到重建宏块,所有重建宏块一起得到重建帧F'n。F'n可以用来显示,也可存储下来作为解下一帧F'n+1的参考帧。以下为包含帧内预测的H.264解码器流程图:四、实验总结通过本次的“基于JM的H.264/AVC编解码学习”这一实验。结合课堂上的知识,加上本次实验,加强了对学习的认识,对知识的巩,更体现了,学习实践相结合的学习方法。而且更对对知识更深入的掌握能力有所提高。
本文标题:数字视频4
链接地址:https://www.777doc.com/doc-2330643 .html