视频编解码之帧场处理方法

1. 帧场处理方法的介绍

帧场信息的介绍详情可参考:隔行扫描的[百度百科],这里做简要说明。(https://baike.baidu.com/item/%E9%9A%94%E8%A1%8C%E6%89%AB%E6%8F%8F/2081106?fr=aladdin)

首先先介绍帧和场的概念。由于视频都是由一幅幅图像组成的,所以视频也称为视频序列。帧图像就是正常的编解码后的图像,而场图像只是帧图像的一半。场图像的生成是采用隔行扫描,就是将帧图像按偶数行(0,2,4,…)和奇数行(1,3,5,…)各自扫描和排列汇成图像,前者叫做顶场,后者叫做底场,顶场和底场交替播放,由于视频中图像播放的时间间隔较小,所以人眼也看不出场图像和帧图像的区别,除非是信号不好的时候,能看到一些明显的条状。

帧场图像示例
视频有帧率的概念,即每秒钟视频所包含的图像数。早期电影胶片的帧率通常是24 fps(即24Hz),但模拟电视的显示频率通常是50Hz的PAL制式(欧洲及中国)和60Hz的NTSC制式(美国)。如果要在模拟电视播放24Hz的电影胶片,则需要在播放过程对视频进行转换。

  • 对于PAL制式,相对比较好办,可以有两种处理方式:(1)每帧重复播放两次,这样24Hz就变成48Hz,接近于50Hz,电影胶片的播放时长会略短,但观众体验基本差别不大;(2)每帧播放一场,顶场和底场交替播放,这样一来,每秒的24个帧图像可以变成48个场图像,也是48Hz,同时还降低码率传输带宽,因为每秒传输的内容降低为一半。
  • 对于NTSC制式,相对麻烦些,但注意到一点,如果一半的帧能占用3个播放时间间隔,也就是说将一帧拆分成两场,将重复播放其中一个场,而另外一半的帧还是拆分成两场即可,24*(2+0.5)=60,刚好就能得到60场。在具体操作中,由于需要顶场和底场交替显示,因此对于连续的两帧,要嘛是第一帧显示【顶】-【底】-【顶】,第二帧显示【底】-【顶】,要嘛是第一帧显示【底】-【顶】-【底】,第二帧显示【顶】-【底】。综合起来就是,前一帧占用3个播放位,后一帧占用2个播放位,区别就是先显示底场还是先显示顶场而已。由24Hz的视频转换到60Hz的NTSC制式的过程有个专有术语,称为“3:2 Pull-Down”.

2. H.265/HEVC中的帧场信息

(1) 帧场信息的flag

H.265中的帧场信息是作为SEI(Supplement Enhancement Information)之一,而这个SEI的flag信息是放置在VUI(Video Usability Information)中。

在7.3.2.2.1节中,序列头(Sequence parameter set)中的vui_parameters_present_flag规定了VUI(Video Usability Information)开关,符合H.265/HEVC标准的解码器须正确解码vui_parameters_present_flag的值,当其值为1时,则参数集vui_parameters( ) 呈现在码流中;在E.2.1节中,当vui_parameters( ) 中的field_seq_flag和frame_field_info_present_flag 值为1时,则帧场信息呈现在码流中。

  • field_seq_flag:表示图像类型,取值为0是帧图像,取值为1是场图像;当图像是场图像,则picture timing SEI 信息须在码流中呈现
  • frame_field_info_present_flag:表示picture timing SEI信息是否在每个图像的码流中呈现,取值为0是不呈现,取值为1是呈现
(2)帧场信息码流

在D.2.3节中,当frame_field_info_present_flag的值为1,则pic_struct、source_scan_type、duplicate_flag三个参数共同作用,确定视频的场图像播放方式(在F.14.3.11节中,frame_field_info包含的ffinfo_pic_struct、
ffinfo_source_scan_type、ffinfo_duplicate_flag三个参数的含义与上述三个参数是等同的)。

  • pic_struct:规定显示图像包含一个帧图像或者多个场图像,一个帧图像可能占有两倍或三倍的固定帧刷新间隔。当取值为0、3、4、5、、6、7、8时,图像均为帧图像,field_seq_flag为0;当取值为1、2、9、10、11、12时,图像均为场图像,field_seq_flag为1
    在这里插入图片描述
  • source_scan_type:规定源视频序列的刷新类型,取值为0表示隔行扫描,取值为1表示逐行扫描,取值为2表示扫描类型未知。如该参数不存在,则扫描类型的确定与general_progressive_source_flag和general_interlaced_source_flag有关。当general_progressive_source_flag为0且general_interlaced_source_flag为1,则为隔行扫描;当general_progressive_source_flag为1且general_interlaced_source_flag为0,则为逐行扫描;当general_progressive_source_flag为0且general_interlaced_source_flag为0,则扫描类型未知
  • duplicate_flag规定当前图像是否为按照输出顺序的之前图像的复制,取值为0不是复制,取值为1是复制。duplicate_flag用于实现源视频序列在显示模型中的适应性,完成特定的“Pull-Down”功能;特别地,当pic_struct取值为9、10、11、12时,当前图像为一帧图像所包含的场图像之一,其配对关系按表D.2来确定,此时duplicate_flag取值不起作用

3. H.266/VVC和H.274中的帧场信息

(1) 帧场信息的flag

在H.266/VVC中,7.3.2.4节 (Sequence parameter set RBSP syntax) 的序列参数集SPS中包含
sps_field_seq_flag 和 sps_vui_parameters_present_flag 两个flag来控制是否启用帧场信息,其中sps_vui_parameters_present_flag 为1时,VUI信息呈现在码流中,而帧场信息SEI也是在VUI中。
在VUI的码流中,采用vui_progressive_source_flag 和 vui_interlaced_source_flag 两个参数来控制扫描类型,具体如下:
在这里插入图片描述

(2)帧场信息码流

在H.274中提供了帧场信息的码流,具体如下:
在这里插入图片描述
具体参数介绍为:

  • vui_progressive_source_flag 和 vui_interlaced_source_flag,其值综合确定扫描方式,具体如上述在H.266/VVC中的规定
  • ffi_field_pic_flag:规定当前图像在显示模型中的类型,取值为0表示帧图像,取值为1表示场图像
  • ffi_bottom_field_flag:规定当前图像的场类型,取值为0是顶场,取值为1是底场
  • ffi_pairing_indicated_flag:规定当前图像与之前或之后图像是否是配对的一帧中的两场,取值为0表示不配对,取值为1表示配对
  • ffi_paired_with_next_field_flag:规定当前图像的配对选择,取值为0表示与之前图像配对,取值为1表示与之后图像配对
  • ffi_display_fields_from_frame_flag:规定显示模型对当前图像的处理方式,取值为0表示将当前图像视为完整帧,取值为1表示采用交替奇偶检验将当前图像视为一帧中的独立场
  • ffi_top_field_first_flag:规定帧显示场图像的顺序,取值为0表示先显示底场,取值为1表示先显示顶场
  • ffi_display_elemental_periods_minus1:取值加1表示当前编码图像或场在显示模型中占有的基本图像时间间隔数
  • ffi_source_scan_type:规定原始视频序列的扫描方式,取值为0是隔行扫描,取值为1是逐行扫描
  • ffi_duplicate_flag:规定当前图像是否为输出顺序在前的图像的复制,取值为0表示不复制,取值为1表示复制

4. 后语

帧场处理方法在过去的电视广播上发挥了重大的作用,但随着数字电视的发展,这个技术将逐渐成为历史,但在一些地方还能看到这样的视频格式,如720i、1080i等;与隔行扫描相对应的就是逐行扫描,现今已成为主流和趋势,相对应的视频视频格式是720p、1080p等。从视频编解码角度,在最近的两个版本(H.265和H.266)都是很晚才把帧场信息加进去,足以可见标准小组的态度,也许下个版本就没有帧场信息的影子了吧。现在的视频编解码标准已在向高帧率、高色域、高动态范围不断迈进!

科技在不断发展中,我们无时不刻在见证新事物,但一些跟不上时代的事物也将逐渐消失在视野里,最终湮没在历史中。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
H264编码开源代码 Video Usability Information (VUI) Guide by Christian Heine ( sennindemokrit at gmx dot net ) 1. Sample Aspect Ratio ----------------------- * What is it? The Sample Aspect Ratio (SAR) (sometimes called Pixel Aspect Ratio or just Pel Aspect Ratio) is defined as the ratio of the width of the sample to the height of the sample. While pixels on a computer monitor generally are "square" meaning that their SAR is 1:1, digitized video usually has rather odd SARs. Playback of material with a particular SAR on a system with a different SAR will result in a stretched/squashed image. A correction is necessary that relies on the knowledge of both SARs. * How do I use it? You can derive the SAR of an image from the width, height and the display aspect ratio (DAR) of the image as follows: SAR_x DAR_x * height ----- = -------------- SAR_y DAR_y * width for example: width x height = 704x576, DAR = 4:3 ==> SAR = 2304:2112 or 12:11 Please note that if your material is a digitized analog signal, you should not use this equation to calculate the SAR. Refer to the manual of your digitizing equipment or this link instead. A Quick Guide to Digital Video Resolution and Aspect Ratio Conversions http://www.iki.fi/znark/video/conversion/ * Should I use this option? In one word: yes. Most decoders/ media players nowadays support automatic correction of aspect ratios, and there are just few exceptions. You should even use it, if the SAR of your material is 1:1, as the default of x264 is "SAR not defined".
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值