Overview of HEVC之2 Slices and Tiles

本文深入探讨了HEVC视频编码技术,包括片的概念、I/P/B片的区别、编码单元组织、WPP处理以及多重片组的应用。阐述了HEVC在数据丢失后的同步功能和并行处理架构的主要目的。

片是编码树单元的一个序列,按光栅扫描次序编码。一副图像可编码成一个或几个片(图a),也就是说一副图像包含一个或更多的片。在某种意义上,片是独立的,它包含了可用的活动序列和图像参数集。可以从比特流、片所代表的图像区域中的像素值中分析其语法元素。片所代表的图像区域中的像素值可以不依赖同一副图像中的其他片而进行正确的解码(除了片的边缘附近的环路滤波器的影响)。这也意味着图像的预测不会通过片的边缘预测。然而另一些片的信息可能适用于通过片的边缘进行的环路滤波器。

I片:片的编码单元仅适用于帧内预测编码。

P片:除了I片的编码类型外,P片的一些编码单元可以利用每PB信号至多有一个运动补偿的帧间编码。P片仅仅利用参考图像list 0.

B片:除了P片的编码方式可以使用外,B片的一些编码单元可以利用每PB信号至多有两个运动补偿的帧间编码。B片利用参考图像list 0list 1.

片的主要目的是在数据丢失后在同步。然而片通常被限制在使用最大比特数,例如,分组传输。因此片中包含的编码树单元的数量在某种程度上依赖于视频场景中的活动。HEVC除了定义了片也定义了片组。片和片组都是独立的,可以进行独立解码的矩形图像区域。片组的主要目的是利用并行处理架构进行编码解码。多重片组在包含相同的片时可以分享它的头信息。一个片组可能包含多个片。一个片组是由一个矩形排列的编码树单元组构成(图b)。

为了协助数据信息分包的粒度,需要额外定义依赖片。最后,利用WPP(wavefront parallel processing),一个片被划分成几行编码树单元。解码每一行就可以开始一些决策,这些决策对之前行的熵编码的预测和自适应是必要的。通过利用在编码器和解码器中的几个处理线程来支持编码树单元的行并行处理(图c)。WPP不允许和片组组合使用。

 

### 高效视频编码HEVC)标准概述 #### 一、背景与发展历程 高效视频编码(High Efficiency Video Coding, HEVC),也被称为H.265,是由国际电信联盟电信标准化部门(ITU-T)和ISO/IEC运动图像专家组(MPEG)共同开发的新一代视频压缩技术。相较于前代标准如H.264,在保持甚至提高画质的同时能够显著降低数据量约50%左右[^2]。 #### 二、架构组成 同H.264一样,HEVC同样采用了基于块的混合编码框架,内部结构主要分为两大部分: - **视频编码层(VCL)**:负责实际的画面预测与变换量化处理工作; - **网络抽象层(NAL)**:定义了如何将VCL产生的信息打包成适合不同网络环境传输的形式,并提供了必要的控制指令来支持随机访问等功能[^1]。 #### 三、关键技术特性 为了达到更高的压缩效率并适应更广泛的应用场景需求,HEVC引入了一系列创新性的算法和技术手段: - **更大的宏块尺寸**:最大可达64×64像素,允许更加灵活地划分画面区域进行编码优化; - **多方向帧内预测模式**:增加了更多角度的选择范围,使得相邻帧间相似度匹配更为精准; - **自适应环路滤波(ALF)**:通过对重建后的图片边缘部分做额外平滑化操作减少振铃效应; - **样条插值法(SAI)**:改进了亚像素精度下的运动估计准确性; - **分级B切片结构**:增强了时空域联合预测能力,进一步提升了压缩效果; 以上各项措施综合起来不仅提高了压缩率还改善了视觉质量体验。 ```python # Python伪代码展示简单版HEVC编码流程示意 def hevc_encode(frame_sequence): vcl_output = [] for frame in frame_sequence: # 进行帧级预处理... # 执行VCL层面的操作,比如分割CTU单元、执行IPM等过程... coded_ctus = process_vcl_operations(frame) nal_units = pack_into_nal(coded_ctus) vcl_output.extend(nal_units) return vcl_output def unpack_from_nal(bitstream): """模拟NAL解析逻辑""" pass def decode_hevc(compressed_data): frames_recovered = [] while compressed_data: next_frame_bits = extract_next_frame_bits(compressed_data) raw_pixels = reconstruct_raw_image(unpack_from_nal(next_frame_bits)) frames_recovered.append(raw_pixels) return frames_recovered ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值