通过前面的介绍,相信读者对主流的视频编解码技术有了充分的了解,下面我们就把前面介绍的各个部分融会贯通,展示一套完整的视频处理流程。当然这里只是一个理论上的概念性流程图,具体的每个小部分都会有无穷多的变化,就好像武侠书里说的那样,招式是固定的,但是临阵对敌的变化是无穷的,而且每个小部分都有自己独特的定义。所以要具体实现某个标准的时候,差之毫厘,谬以千里,如果你不是要实现底层的编解码器的话,就没有必要去理会了。目前的应用都是调用具体的编解码库,所以基本上不需要考虑准确性,只需要考虑具体的参数配置。理论上视频编码操作的基本流程如图1-6所示。
图1-6 视频编码操作的基本流程
首先,当前图像被分割成多个块,对每个块进行时域到频域的变换,然后对变换后的残差系数进行量化,接着进行Z形扫描将低频分量集中,通过可变长编码(Variable Length Coding,VLC)得到比特流,就得到了一个独立压缩的静态图像,也就是常说的独立编码帧(I帧),然后解码端对该比特流进行滤波、反量化、反变换等操作之后重新恢复成一帧图像,一般称之为重构帧(reconstructed frame),重构帧可以作为后续待编码图像的参考帧。对于一幅新进的图像,寻找与当前重构帧最匹配的部分,也就是常说的运动估计,按照当前系统的精度和算力要求,找到一幅合适的匹配图像之后,对当前图像和匹配后的图像进行差运算,得到图像残差值,然后再对残差值按照独立图像的编码方式进行编码,最后得到比特流,也就是常说的帧间编码帧,例如P帧和B帧。需要注意的是,重构图像可以有多幅,参考帧就可以有多幅,并不一定要参考前一幅图像,当然仅仅参考前一帧图像的重构帧是最简单的方式,这样一段视频图像就编码完成了。