西洋参补什么| 7是什么意思| ifu是什么意思| 很什么很什么| 毛周角化症是什么原因引起的| 白洞是什么东西| 肾阴虚吃什么食物补| 为什么说冬吃萝卜夏吃姜| 嘴唇神经跳动是什么原因| 塞肛门的止痛药叫什么| 去年的树告诉我们什么| 肾阳虚有什么症状| 天天射精对身体有什么危害| 人参吃了有什么好处| 渗透压是什么意思| 心神不定是什么生肖| 男人有卧蚕代表什么| 胎儿左心室点状强回声是什么意思| 腋下异味看什么科| 泡脚对身体有什么好处| 血管堵塞吃什么药| 什么叫大男子主义| 吃软饭是什么意思| 左肩后背疼是什么原因| 小孩查微量元素挂什么科| 粉刺长什么样图片| 颈椎脑供血不足吃什么药| 邮箱是什么| 张学友和张家辉什么关系| 悼念是什么意思| 子宫内膜增厚是什么原因| 六月十四是什么星座| 尿崩症是什么意思| 什么是冰种翡翠| 十八岁成人礼送什么礼物| 拍拖是什么意思| 男人吃秋葵有什么好处| 什么来钱快| whatsapp是什么软件| 照身份证穿什么衣服| 人中短代表什么| 胸部中间痛什么原因引起的| 三个十念什么| 龙什么鱼| hyper是什么意思| 1997年的牛是什么命| 什么紫| 本科生是什么意思| 喝咖啡对身体有什么好处| 本家是什么意思| canon是什么意思| 益气固表是什么意思| 直肠前突有什么症状| 什么一梦| 火字旁的有什么字| 位数是什么意思| 腋臭看什么科| 怀孕周期是从什么时候开始算的| 黔驴技穷的意思是什么| 张良属什么生肖| hj是什么意思| 为什么早上起来眼睛肿| 奶水不足是什么原因造成的| dob是什么意思| 为什么老是拉肚子| gb10769是什么标准| 属鸡的幸运色是什么颜色| 杭州有什么景点| 大男子主义是什么意思| 感冒头疼是什么原因| 卡介苗预防什么病| icp是什么| 益生菌什么牌子最好| 梦见自己在洗澡是什么意思| 尿有泡泡是什么病| 鄂尔多斯是什么意思| 苏州为什么叫姑苏| 氟哌噻吨美利曲辛片治什么病| 筋头巴脑是什么东西| 焦虑症应该挂什么科室| 腰肌劳损什么症状| 涉黑是什么意思| 牙疼吃什么药| 备孕期间要注意什么| 医院建档是什么意思| 鞭长莫及什么意思| 大明湖畔的夏雨荷是什么意思| 因什么制宜| 更年期出汗吃什么药| 一岁半打什么疫苗| 槊是什么兵器| 晚上睡不着觉是什么原因| 石敢当是什么神仙| 五月二十一是什么星座| 低血压吃什么调理| 卧底归来大结局是什么| 乔顿男装属于什么档次| 火龙果和什么相克| 薛之谦的真名叫什么| 行运是什么意思| 月经不调吃什么调理| 宫外孕是什么导致的| 无私的动物是什么生肖| 什么虫子咬完是小红点| 11月2日什么星座| 什么是滑精| 病毒性感冒什么症状| 铁窗泪什么意思| 萃是什么意思| 疱疹不能吃什么食物| 重庆的市花是什么| 细水长流是什么意思| halloween是什么意思| 睡着了流口水是什么原因| 小肚子痛吃什么药| 整夜做梦是什么原因| 6.25是什么日子| 暗物质和暗能量是什么| 虎什么熊什么| 吃什么减肥| epc什么意思| 隔空是什么意思| 生龙活虎是什么意思| 胸是什么| 子宫内膜异位症是什么意思| 神迹是什么意思| 血沉50说明什么原因| 他不懂你的心假装冷静是什么歌| 什么是穿刺| 孩子鼻塞吃什么药| 防微杜渐什么意思| 血小板低吃什么| 边字是什么结构| 男人壮阳吃什么最快| 什么是代沟| 嘴碎什么意思| 搞怪是什么意思| 膀胱壁增厚毛糙是什么意思| 脂蛋白高说明什么问题| 7月13日什么星座| 什么是横纹肌肉瘤| cy是什么意思| 左边头疼是什么原因| 脑供血不足头晕吃什么药| 板蓝根长什么样| 孤独症有什么表现| 农家一碗香是什么菜| 眼睛干痒用什么眼药水| 牙齿疼是什么原因引起的| 办理港澳通行证需要什么证件| 脓疱疮是什么原因引起的| 球蛋白低是什么原因| 人体缺钙吃什么补最快| 什么叫小三阳| 泳帽什么材质的好| 口腔溃疡吃什么菜| 李世民是什么生肖| 缺钾是什么症状| 切屏是什么意思| 圆舞曲是什么意思| 梦见房子漏水是什么意思| 百合和什么搭配最好| 精神慰藉什么意思| 2.13是什么星座| 指奸是什么意思| 什么app可以买烟| 肚子里有虫子会有什么症状| 关节退行性改变是什么意思| 玲珑是什么意思| 一月30号是什么星座| slay什么意思| 进德勤一般要什么学历| 高考三百多分能上什么学校| 体外射精是什么意思| d2聚体高是什么意思| 高血糖吃什么比较好| 精液的主要成分是什么| 星盘是什么| 荨麻疹长什么样图片| 塞保妇康为什么会出血| 丙肝吃什么药效果好| 套牌是什么意思| 天高地厚是什么生肖| 异常什么意思| 梦见别人生孩子预示什么| 小儿外科主要看什么病| 诙谐幽默是什么意思| 经期肚子疼是什么原因| 阴道出血是什么原因| 脊椎痛什么原因| 美元长什么样子图片| 胸闷出汗是什么原因| 胰腺炎挂什么科| mh是什么单位| 仁德是什么意思| 回民为什么不能吃猪肉| 殊途同归什么意思| 脾肾阳虚吃什么药最好| 河北有什么市| 满目苍夷是什么意思| 术前四项检查是什么| 华侨是什么| 肠息肉是什么原因引起的| 修复子宫内膜吃什么药| 八月是什么星座| 什么是回避型依恋人格| 维生素b什么时候吃效果最好| 眼角膜脱落什么症状| 618是什么意思| 瓒字取名有什么寓意| 什么是赤道| 南通有什么特产| 嘴唇有黑斑是什么原因| 高三学生吃什么补脑抗疲劳| 6.13是什么星座| 芦荟胶有什么作用| 榴莲为什么那么贵| 趾高气昂是什么意思| 肾结石是什么| 醋泡葡萄干有什么功效和作用| 杆鱼是什么鱼| 现役是什么意思| 腹膜炎吃什么药| 子宫肌瘤术后吃什么好| 什么有什么造句| 1962年属虎的是什么命| 什么茶| 没有斗代表什么| 资金流入股价下跌为什么| 手淫过度会导致什么| 菜花长什么样| 思伤脾是什么意思| 做牛排需要什么调料| 心肌炎是什么病| 牛建读什么| 普洱茶什么季节喝好| 海蛎子是什么| cpu是什么意思| hpv什么意思| 老年人总睡觉是什么原因| 膻味是什么意思| 什么芦荟可以直接擦脸| 上环什么时候去最合适| 看胰腺挂什么科| 心绞痛是什么感觉| 4月6号什么星座| 跳跳糖为什么会跳| 运单号是什么| 土字旁的字与什么有关| 马瘦毛长是什么意思| 脂肪最终被消化成什么| 治疗勃起困难有什么药| 发愿是什么意思| 部队指导员是什么级别| 怀孕什么时候开始孕吐| 日是什么意思| 心房扑动是什么意思| 梦见喝水是什么意思| 胆囊炎是什么病| 加油什么意思| 四月是什么星座| 什么是佛跳墙| 淋巴结肿大是什么样子| 出现血尿是什么原因| 百度

新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于PC机的MPEG-4编码原理研究及实现

嫦娥五号年底升空最新消息 航空概念股有哪些

作者: 时间:2025-08-04 来源:网络 收藏
百度 机关党组织要真正强起来,配强机关党组织负责人,配齐工作人员,创新思路举措,改进方式方法,完善制度机制,切实履行好协助、推进、教育、监督和引领责任,全面提升机关党建工作绩效。

  0 引言

  随着多媒体业务的发展,日益增长的多媒体通信量和有限的通信带宽之间的矛盾日益突出。为了减小传输的数据量,国际电信联盟和 MPEG标准组织都制定过各自的视频压缩标准。其中,最新标准以其高压缩率,支持低码率传输和基于对象编码等优点,而在传真、视频点播、电视会议、医用图像传输等领域广泛应用。

  继承了MPEG-2中档次和等级概念,共有视频档次、音频档次、图形档次和场景描述档次共四类。档次是针对某一特定的应用而采用的编码工具,它是提供的工具集中一个子集,不同的档次就是不同的子集。每一个档次分为一个或多个等级,等级则定义了比特流参数的规格,实际上是限定了解码一个编码序列所应具备的性能。

  MPEG-4的独特之处在于支持基于内容的编解码,为此引入了视听对象AVO(Audio/Video Object)的概念。AVO可以是一幅图像中一个小提琴或琴声等,每个AVO可独立编码,但相互之间又存在着时空结构关系,因此编码时,必须传送编码对象的组成结构信息体“场景描述”,以表示场景中各AVO之间的时空结构关系。解码时根据此“场景描述”对图像和声音的有关内容进行编辑和操作。视听对象还可以是一个矩形帧,从而使MPEG-4兼容原来的MPEG标准。视听对象中的视频对象VO通常由3类信息来描述,即运动、形状和纹理信息。

  1 编码原理

  MPEG-4主要由形状编码、纹理编码和运动编码三部分组成。帧格式分为I-VoP,P-VOP和B-VOP。这里只讨论I-VOP和P-VOP。I-VOP采用纹理编码来消除一帧图像数据间的空间冗余度;P-VOP是参考前一帧图像,并采用两种参数来编码。一种是当前要编码的图像与参考图像之间的差值;另一种是运动矢量。的具体结构模块如图1所示。

编码器的具体结构模块

  1.1 形状编码

  形状编码主要用于记录从图像序列中提取VOP的形状信息,该信息分为二值形状信息和灰度形状信息。二值形状信息用0和1两个值表示VOP的形状;灰度形状信息用0~255表示VOP区域的不同透明度。在编码时,当提取的VOP具有非矩形形状时,需要对其进行边界扩展,使其矩形边界都是16的倍数,同时保证扩展后的面积最小,然后进行形状编码;当提取的 VOP为矩形时(矩形的长度和宽度都是16的倍数),形状编码就会被屏蔽。

  1.2 纹理编码

  纹理编码主要对I-VOP内的图像像素或P-VOP内的差值像素进行编码,包括DCT、量化、、熵编码等过程,最大程度地去除当前VOP内各像素之间的空间冗余度。

  视频的第一帧图像采用I-VOP格式编码,其余的帧采用I-VOP,还是P-VOP格式则受两个因素制约。其用户会按照IPPPIPPPI的方式设置当前帧所采用的格式;二是已经人为地设置了当前帧为P-VOP,通过运动估计计算mad_P的值,如果mad_P满足下列两个条件之一,则当前帧就采用P- VOP编码格式,否则采用I-VOP编码格式。

  条件1:mad P50/3;

  条件2:mad P50,并且IntraMBRatio0.4。其中,IntraMBRatio为当前帧中采用MBM_INTRA预测模式的宏块占总宏块的比重。

  纹理编码中的DCT和量化模块比较简单,这里略过,重点介绍剩下的纹理编码模块。

  1.2.1

  8×8 块经过DCT和量化后,系数排列呈现以下的规律,即非零系数集中在左上角,大部分的0系数集中在偏离DC系数向右和向下的位置上。特别是DC系数、第一行和第一列AC系数,数值非零且较大,如果能用较小的数值代替它们,会减少编码后的位流数,于是产生

  在MPEG-4中,通常把一个宏块分为6个8×8块进行DC和AC预测。

  首先对8×8块进行DC预测。如图2所示,X表示当前的8×8块;A,B和C表示X的相邻8×8块,其位置分别位于X的左边、左上角和上边。对X进行DC预测就是采用相邻块的DC系数值预测X的DC系数值,关键是选择哪个相邻块的DC系数。

DC预测  

  程序采用了以下策略选取相邻块。定义块A,B,C,X的DC系数值分别为 DC_A,DC_B,DC_C,DC_X。

  如果DC_A与DC_B的差小于DC_B与DC_C的差,则DC_A与DC_B在数值上比较接近,即在垂直方向上的数值比水平方向上更接近,所以采用DC_C来预测DC_X;反之,在水平方向的数值比较接近,即采用DC_A来预测DC_X。

  将当前块的DC系数与用来预测的相邻块的DC系数,经过特定处理后做差,其差存放到当前块的DC位置上,同时记录此DC系数的预测方向。

  AC 预测主要是针对8×8块的第一行或者第一列AC系数,其预测方向取决于当前块DC系数的预测方向。如图2所示,如果之前DC预测为水平预测,则当前块X的第一列AC系数采用A块的第一列AC系数预测,同时将X的第一列7个AC系数各自取绝对值后相加到变量S1(S1的初始值为0)上。将当前块第一列AC系数与用来预测的相邻块A的第一列AC系数做差,其7个差值存放到当前块的第一列AC系数的位置上,同时将7个差值各自取绝对值后相加到变量S2(S2的初始值为0)上。如果之前的DC预测为垂直预测,则只进行当前块X的第一行AC系数预测,其预测步骤同第一列AC系数的预测一样。

  有时AC 预测会产生较大的预测误差,并没有达到节省位流的目的,因此必须判断AC预测的有效性。在单个8×8小块的AC预测中,用S1记录了此小块的第一行或第一列AC系数的绝对值之和,用S2记录了第一行或第一列预测后7个差值的绝对和。以一个宏块的6个8×8小块为单位,将各个小块的S1与S2之差相加,得到值S。如果S非零,则此宏块进行AC预测,其标志ACpred_flag置1,否则此宏块不进行AC预测,ACpred_flag置0。

  1.2.2 之字型扫描

  DC和AC预测之后,对8×8块的系数进行之字形扫描,共有Zigzag,Zigzag_v(交替垂直扫描)和 Zigzag_h(交替水平扫描)三种扫描方式。采用何种扫描方式由三个要素决定,即帧内还是帧间预测,AC预测标志ACpred_flag的值,DC系数的预测方向。

  对于帧内预测的宏块,如果AC预测标志ACpredflag为0,则此宏块中的6个8×8块都使用Zigzag扫描;如果 AC预测标志为1,则此宏块中的6个8×8块将根据各自的DC预测方向决定AC系数的扫描方向。如果DC预测为水平预测,则此8×8块使用 Zigzag_v扫描方式扫描系数,否则使用Zigzag_h扫描方式。

  对于帧间预测的宏块,其每个8×8块统一采用Zigzag扫描方式扫描系数。

  8×8的系数矩阵经过之字型扫描后,大部分非零系数集中在一个一维数组的前部,大部分零系数集中在此一维数组的后面,根据此特点便产生了游程编码。

  1.2.3 游程编码和熵编码

  所谓游程编码就是对8×8系数矩阵的AC系数进行特定的处理,使其成为个数更少的三维矢量(Last,Run,Level)。其中,Level代表非0系数的大小。Run代表Level前面连续0的个数。Last代表终止标志:其值为0时,表示Level后还有不为0的系数;其值为1时表示该系数是最后不为0的数;余下的系数全为0。游程编码生成三维矢量,压缩了数据量,然后根据Last,Run和Level的不同组合作为索引,找到对应Huffman编码表中的码字,生成码流。

  1.3 运动编码

  运动编码对当前P-VOP和参考VOP进行,减小帧间的时间相关性,实现压缩。

  通常采用块匹配法进行运动估计。块匹配法就是针对当前帧中某一特定大小的图像块,从参考帧的一定区域中找出该图像块绝对误差和(Sum of AbsoluteDifference,SAD)的最小匹配块,利用此匹配块来预测当前块。图像块的绝对误差和指两个大小相同的图像块的中像素差的绝对值之和。SAD16×16函数实现当前宏块和参考宏块间的绝对误差和;SAD8×8函数实现当前8×8块与参考8×8块间的绝对误差和。

  确定了块匹配准则后,就要进行最优匹配点的搜索,MPEG-4校验模型最后采用钻石搜索法(Diamond Search,DS)。钻石搜索法是一种利用搜索模板的形状和大小,对运动估计算法速度及精度产生重要影响的快速搜索法。选用了两种形状和大小都不相同的搜索模板:一种是大钻石搜索模板(Large DiamondSearch Pattern,LDSP),它有9个候选位置:(0,0),(0,2),(1,1),(2,0),(1,-1),(0,-2),(-1,-1), (-2,0)和(-1,1)。具体模板如图3所示。一种是小钻石搜索模板(Small Diamond Search Pattern,SDSP),它包含5个候选位置:(0,0),(0,1),(1,0),(0,-1)和(-1,0)。具体模板如图4所示。

具体模板

  钻石搜索过程如下:以当前帧的当前宏块的左上角起点坐标为大模板的原点 (0,0),在参考帧的搜索范围内,分别以大模板的(0,0),(0,2),(1,1),(2,0),(1,-1),(0,-2),(-1,-1), (-2,0)和(-1,1)像素点作为宏块的左上角起点,将该宏块和当前帧的宏块做SAD16×16运算,选择SAD16×16值最小的左上角起点作为暂时的最佳匹配点,此点与当前宏块左上角起点之间的位移就是运动矢量。判断此运动矢量是否适合特定的规则,如果不适合,则进行新一轮的大钻石模板搜索,直到找到适合条件的运动矢量。然后再以大钻石模板搜索的最佳匹配点为中心点(0,0),用小钻石搜索模板进行(0,1),(1,0),(0,-1)和 (-1,0)四个参考点的精确搜索,搜索到的SAD16×16值最小点就是最终的最佳匹配点,最佳匹配点与当前宏块的左上角起点之间的位移就是最终的运动矢量。

  以上是基于宏块的全像素搜索,还可以选择是否进行基于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将有更为广泛的应用前景。



评论


相关推荐

技术专区

关闭
炜字五行属什么 儿童头疼挂什么科 什么是淋病 1比1是什么意思 痛心疾首的疾什么意思
洋溢着什么样的笑容 庚日是什么意思 鸡蛋干配什么菜炒好吃 吃百合有什么好处 高原反应有什么症状
浅显是什么意思 梦到上坟是什么意思 absolutvodka什么酒 血脂稠是什么原因造成的 生殖器疱疹擦什么药
什么油锯好 大红色配什么颜色好看 素的部首是什么 什么叫庚日 xgrq是什么烟
冷落是什么意思hcv9jop1ns3r.cn 榄仁叶是什么树的叶子ff14chat.com 血粘度查什么项目hcv9jop5ns0r.cn 脸上长痘痘是什么原因hcv8jop8ns2r.cn 总胆固醇偏高是什么原因hcv9jop7ns1r.cn
计数单位是指什么hcv9jop3ns6r.cn 名流是什么意思hcv7jop7ns3r.cn 仰仗是什么意思xscnpatent.com 金青什么字hcv8jop2ns9r.cn 血糖高可以吃什么水果0735v.com
孩子咳嗽吃什么饭菜好hcv9jop2ns7r.cn 紫水晶五行属什么hcv8jop2ns2r.cn 靶子是什么意思hcv8jop5ns5r.cn 荨麻疹什么症状hcv8jop0ns6r.cn 手指发麻是什么原因引起的hcv7jop9ns0r.cn
穿青人是什么民族mmeoe.com 没胃口吃什么hcv8jop7ns0r.cn 吃饭容易出汗是什么原因gysmod.com 心慌气短吃什么药最好adwl56.com 学霸是什么意思dajiketang.com
百度