[数据压缩作业]实验七

目录

一 、选择mp4文件分析SPS、PPS

sps

pps​

二、以一个GOP为例

​编辑以第一个I帧作为分析对象,基于该帧图像的空间特性,分析每个宏块所采用的编码类型及其比例。

以第一个P帧作为分析对象,基于该帧图像的空间和时间特性,分析每个宏块所采用的编码类型及其比例

以某一个B帧作为分析对象,基于该帧图像的空间和时间特性,分析每个宏块所采用的编码类型及其比例


一 、选择mp4文件分析SPS、PPS


在码流分析仪软件中打开该文件,从几个层次进行分析:
分析SPS和PPS里都包含哪些主要的信息,给出参数值。(例如分辨率、帧率、GOP结构等等)

sps

(1) profile_idc:

标识当前H.264码流的profile。H.264中定义了三种常用的档次profile:
基准档次:baseline profile;
主要档次:main profile;
扩展档次:extended profile;

(2) level_idc

标识当前码流的Level。编码的Level定义了某种条件下的最大视频分辨率、最大视频帧率等参数,码流所遵从的level由level_idc指定。

(3) seq_parameter_set_id

表示当前的序列参数集的id。通过该id值,图像参数集pps可以引用其代表的sps中的参数。

(4) log2_max_frame_num_minus4

用于计算MaxFrameNum的值。计算公式为

MaxFrameNum = 2^(log2_max_frame_num_minus4 + 4)。

MaxFrameNum是frame_num的上限值,frame_num是图像序号的一种表示方法,在帧间编码中常用作一种参考帧标记的手段。

(5) pic_order_cnt_type

表示解码picture order count(POC)的方法。POC是另一种计量图像序号的方式,与frame_num有着不同的计算方法。该语法元素的取值为0、1或2。

(6) log2_max_pic_order_cnt_lsb_minus4

用于计算MaxPicOrderCntLsb的值,该值表示POC的上限。计算方法为MaxPicOrderCntLsb = 2^(log2_max_pic_order_cnt_lsb_minus4 + 4)。

(7) num_ref_frames

用于表示参考帧的最大数目。

(8) gaps_in_frame_num_value_allowed_flag

标识位,说明frame_num中是否允许不连续的值。

(9) pic_width_in_mbs_minus1

本句法元素加 1 后指明图像宽度,以宏块为单位:

PicWidthInMbs = pic_width_in_mbs_minus1 + 1

 通过这个句法元素解码器可以计算得到亮度分量以像素为单位的图像宽度:

PicWidthInSamplesL = PicWidthInMbs * 16

(10) pic_height_in_map_units_minus1

计算图像的高度:

 

PicHeight=16∗(pic_height_in_map_units_minus1+1) 

(11) frame_mbs_only_flag

标识位,说明宏块的编码方式。当该标识位为0时,宏块可能为帧编码或场编码;该标识位为1时,所有宏块都采用帧编码。根据该标识位取值不同,PicHeightInMapUnits的含义也不同,为0时表示一场数据按宏块计算的高度,为1时表示一帧数据按宏块计算的高度。

按照宏块计算的图像实际高度FrameHeightInMbs的计算方法为:

FrameHeightInMbs = ( 2 − frame_mbs_only_flag ) * PicHeightInMapUnits

(12) direct_8x8_inference_flag

标识位,用于B_Skip、B_Direct模式运动矢量的推导计算。

(13) frame_cropping_flag

标识位,说明是否需要对输出的图像帧进行裁剪。

(14) vui_parameters_present_flag

标识位,说明SPS中是否存在VUI信息。

pps


(1) pic_parameter_set_id

表示当前PPS的id。某个PPS在码流中会被相应的slice引用,slice引用PPS的方式就是在Slice header中保存PPS的id值。该值的取值范围为[0,255]。

(2) seq_parameter_set_id

表示当前PPS所引用的激活的SPS的id。通过这种方式,PPS中也可以取到对应SPS中的参数。该值的取值范围为[0,31]。

(3) entropy_coding_mode_flag

熵编码模式标识,该标识位表示码流中熵编码/解码选择的算法。对于部分语法元素,在不同的编码配置下,选择的熵编码方式不同。例如在一个宏块语法元素中,宏块类型mb_type的语法元素描述符为“ue(v) | ae(v)”,在baseline profile等设置下采用指数哥伦布编码,在main profile等设置下采用CABAC编码。

标识位entropy_coding_mode_flag的作用就是控制这种算法选择。当该值为0时,选择左边的算法,通常为指数哥伦布编码或者CAVLC;当该值为1时,选择右边的算法,通常为CABAC。

(4)pic_order_present_flag

POC的三种计算方法在片层还各需要用一些句法元素作为参数,本句法元素等于1时表示在片头会有句法元素指明这些参数;本句法元素等于0时,表示片头不会给出这些参数,这些参数使用默认值。

(5) num_slice_groups_minus1

表示某一帧中slice group的个数。当该值为0时,一帧中所有的slice都属于一个slice group。

(6) num_ref_idx_l0_default_active_minus1、num_ref_idx_l1_default_active_minus1

表示当Slice Header中的num_ref_idx_active_override_flag标识位为0时,P/SP/B slice的语法元素num_ref_idx_l0_active_minus1和num_ref_idx_l1_active_minus1的默认值。

(7) weighted_pred_flag

标识位,表示在P/SP slice中是否开启加权预测。

(8) weighted_bipred_idc

表示在B Slice中加权预测的方法,取值范围为[0,2]。0表示默认加权预测,1表示显式加权预测,2表示隐式加权预测。

(9) pic_init_qp_minus26和pic_init_qs_minus26

表示初始的量化参数。实际的量化参数由该参数、slice header中的slice_qp_delta/slice_qs_delta计算得到。

(10) chroma_qp_index_offset

用于计算色度分量的量化参数,取值范围为[-12,12]。

(11) deblocking_filter_control_present_flag

标识位,用于表示Slice header中是否存在用于去块滤波器控制的信息。当该标志位为1时,slice header中包含去块滤波相应的信息;当该标识位为0时,slice header中没有相应的信息。

(12) constrained_intra_pred_flag

若该标识为1,表示I宏块在进行帧内预测时只能使用来自I和SI类型宏块的信息;若该标识位0,表示I宏块可以使用来自Inter类型宏块的信息。

(13) redundant_pic_cnt_present_flag

标识位,用于表示Slice header中是否存在redundant_pic_cnt语法元素。当该标志位为1时,slice header中包含redundant_pic_cnt;当该标识位为0时,slice header中没有相应的信息。


二、以一个GOP为例

分析如下信息:


第一个I帧作为分析对象,基于该帧图像的空间特性,分析每个宏块所采用的编码类型及其比例。


I帧采用帧内预测编码,其中有三种预测方式,分别是I_16*16,I_8*8,I_4*4,越细节的部分预测所用的宏块越小,预测越精细。所用的编码比特数为37.480,QP值为27.328

以第一个P帧作为分析对象,基于该帧图像的空间和时间特性,分析每个宏块所采用的编码类型及其比例

P帧采用前向预测编码, 其中包括P_8*8,P_8*16,P_16*8,P_16*16三种宏块大小(绿色框)

所用的编码比特数为15.858,QP值为28.828

以某一个B帧作为分析对象,基于该帧图像的空间和时间特性,分析每个宏块所采用的编码类型及其比例

 

 

 B帧为双向预测编码,宏块类型为B_16*16,B_8*16

所用的编码比特数为1.596,QP值为23.333

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
标题:测量弹簧的弹性系数 实验目的:通过实验测量弹簧的弹性系数,掌握弹簧的弹性原理。 实验器材:弹簧、测力计、卡尺、托盘、小球等。 实验原理:当一个弹簧被拉伸或压缩时,它会产生弹性形变,弹簧的伸长量(缩短量)与所受拉力(压力)成正比,比例系数称为弹性系数。弹簧的弹性系数可以用钩定律表示:F=kx,其中F为弹簧所受拉力(压力),k为弹簧的弹性系数,x为弹簧的伸长量(缩短量)。 实验步骤: 1.将弹簧固定在托盘上,使其垂直向下悬挂。 2.将小球挂在弹簧下端,测量小球与弹簧下端的距离,并记录下来。 3.用测力计拉伸弹簧,测量弹簧所受拉力,并记录下来。 4.根据钩定律,用所测得的弹簧所受拉力除以弹簧的伸长量,得到弹簧的弹性系数。 5.重复以上步骤,测量弹簧的弹性系数。 实验注意事项: 1.实验时注意安全,不要将测力计拉力过大,以免弹簧断裂。 2.测量时要保证弹簧的形状不变,不要让弹簧发生扭曲变形。 3.实验数据要准确,测量时要认真读数,避免误差。 实验结果:通过实验测量得到弹簧的弹性系数为k=5N/m。 实验结论:弹簧的弹性系数为单位长度的弹簧伸长量与所受拉力之比,可以用钩定律表示。本实验通过测量弹簧的伸长量和所受拉力,计算得到弹簧的弹性系数,从而掌握了弹簧的弹性原理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值