1)视频编码系统的基本结构如下图所示:
其中,视频编码方法与可采用的信源模型有关。如果采用“一幅图像由许多像素构成”的信源模型,这种信源模型的参数就是每个像素的亮度和色度的幅度值。对这些参数进行压缩编码技术称为基于波形的编码。如果采用一个分量有几个物体构成的信源模型,这种信源模型的参数就是各个物体的形状、纹理和运动。对这些参数进行压缩编码的技术称为基于内容的编码。
2)基于波形的编码
利用像素间(帧内)的空间相关性和帧间的时间相关性,采用预测编码和变换编码技术可大大减少视频信号的相关性,从而显著降低视频序列的码率,实现压缩编码的目标。
基于波形的编码采用了把预测编码和变换编码组合起来的基于块的混合编码方法。
自1989年ITU-T发布第一个数字视频编码标准----H.261以来,已陆续发布了H.263等视频编码标准及H.320、H.323等多媒体终端标准。ISO下属的运动图像专家组(MPEG)定义了MPEG-1、MPEG-2、MPEG-4等娱乐和数字电视压缩编码国际标准。
2003年3月,ITU-T颁布了H.264视频编码标准。它不仅使视频压缩比较以往标准有明显提高,而且具有良好的网络亲和力,特别是对IP互联网、无线移动网等易误码、易阻塞、QoS不易保证的网络视频传输性能有明显的改善
所有这些视频编码都采用了基于块的混合编码方法,都属于基于波形的编码。
3)基于内容的编码
虽然基于块的编码易于操作,但由于人为的把一幅图像划分为许多固定大小的块,当包含边界的块属于不同物体时,它们分别具有不同的运动,便不能用同一个运动矢量表示该边界的运动状态。如果强制划分为固定大小的块,这种边界块必然会产生高的预测误差和失真,严重影响了压缩编码信号的质量。
而基于内容的编码技术先把视频帧分成对应于不同物体的区域,然后对其编码;即对不同物体的形状、运动和纹理进行编码;在最简单情况下,利用二维轮廓描述物体的形状,利用运动矢量描述其运动状态,而纹理则用颜色的波形进行描述。
4) 三维视频编码
视频编码的发展方向之一,除平面信息外增加了深度信息,数据量非常庞大。
有两种类型:一、基于波形的,它组合运动补偿预测和位差补偿预测。位差估计是在两幅不同图像种寻找对应的点。二、基于物体的,它直接对成像物体的三维结构和运动进行编码。当物体结构简单时,可获得非常高的压缩比。
1)数字电视的优越性
1.1)失真小、噪声低、质量高。
模拟电视信号在放大、处理、传输、存储过程中,难免会引入失真噪声,而且多种噪声与失真叠加到电视信号后,不易去除,且会随着处理次数和传输距离的增加不断积累,导致图像质量及信噪比的下降。
相反,数字电视信号没有上述的噪声累积效应。如下图所示,只要噪声电平不超过脉冲幅度的一半,就可用脉冲再生技术对其整形,并恢复成0或1两种电平,便不会引入噪声。但由于信号的数字化必须要经过取样、量化、编码三个基本步骤,故量化噪声不可避免,但可控制在相当低的电平以下。
1.2)易处理、易校正
1.3)容量大、节目多
2)数字电视的PCM原理
将输入的模拟电视信号变成输出的数字电视信号需经过取样、量化、编码,该过程由A/D变换器完成。
2.1)取样
就是在时间轴上把连续变化的模拟信号变为离散量的过程。
2.2)量化
取样后的脉冲信号在时间上是离散的,但在幅值空间上仍是连续的,即其可能取的值有无限多个,这就需要对它采取四舍五入的方法,将其可能的幅值由无限多个变为有限个值。这种将信号幅值由连续量变成离散量的过程称为量化。
2.3)PCM编码
对于量化后的信号,通常用“0”和“1”表示,即用二进制码表示。这时的编码称为脉冲编码调制----PCM编码。模拟电视信号经取样、量化、编码后得到的二进制序列,即是数字电视信号。
2.4)A/D与D/A变换
上述取样、量化、编码过程均由A/D变换器完成。反之,数字信号的解码、反量化、恢复成模拟信号的逆过程则由D/A变换器完成。
利用信源的统计特性进行码率压缩的编码就称为熵编码,也称为统计编码。视频编码常用有两种:变长编码(哈夫曼编码)和算术编码。
1)变长编码
1952年,哈夫曼提出变长编码方法:对出现概率大的符号分配短字长的二进制,对出现概率小的符号分配长字长二进制码,得到符号平均码长最短的码。举例如下:
2)算术编码
算术编码采用一个浮点数来代替一串输入符号,经算术编码后输出一个小于1,大于或等于0的浮点数,在解码端被正确地唯一解码,恢复原符号序列。举例如下:
设:输入序列为abac,p(a)=1/2,p(b)=1/4,p©=1/4,求算术编码输出序列?
解:
编码:
(1)列出各符号出现概率值;在(0,1)区间内,每个字符根据其概率选定范围;如下表所示:
(2)开始时,先读入信号”a“,因为其在最初始区间是[0.00,0.50),所以读入”a“后编码区间就变成[0.00,0.50);
(3)然后读入”b“,由于其在初始区间内是占据整个区间的1/2
3/4,因此对应其也要占这个编码区间的1/2
3/4,因此编码区间变为[0.25,0.375);
(4)之后读入“a”,由于其在初始区间内是占据整个区间的0
1/2,因此对应其也要占这个编码区间的0
1/2,因此编码区间变为[0.25,0.3125);
(5)最后读入“c”,由于其在初始区间内是占据整个区间的3/4
1,因此对应其也要占这个编码区间的3/4
1,因此编码区间变为[0.046875,0.3125);并制作如下表:
这里,我们取输出为0.046875.
解码:
(1)待解码数据0.046875在[0.00,0.50)内,因此第一个码值为“a”;
(2)待解码数据0.046875在区间[0.00,0.50)的1/2~3/4内,故第二个码值为“b”;
(3)同理可得,后续码值依次为“a”、“c”;也即解码结果为abac。
MPEG-4提供自然和合成的音频、视频以及图像的基于对象的编码工具,主要部分为系统、视频和音频。MPEG-4码流主要包括基本码流和系统流。基本码流包括音视频和场景描述的编码流表示,每个基本码流只包含一种数据类型,并通过各自的解码器解码;系统流则指定根据编码视听信息和相关场景描述信息产生交互方式的方法,并描述其交互通信系统。
1)系统
MPEG-4系统将音视频对象及其组合复用成一个场景,提供与场景互相作用的工具,使用户具有交互能力,其系统终端模型如下图:
其中,压缩层是执行媒体解码的系统组件;同步层负责各个压缩媒体的同步和缓冲;传输层是对已经存在的各种传输协议描述。
2)音频
MPEG-4不仅支持自然声音,还支持合成声音。MPEG-4音频部分将音频的合成编码和自然声音的编码相结合,并支持音频的对象特征。
3)视频
MPEG-4支持对自然和合成视觉对象的编码。合成的视觉对象包括2D、3D动画和人面部表情动画等,MPEG-4的视频编码框架如下:
H.264并不明确地规定一个编解码器如何实现,而是规定 了一个编码的视频比特流是句法和该比特流的解码方法,各个厂商的编码器和解码器在此框架下应能够互通,在实现上具有较大灵活性,有利于相互竞争,进而促进进步。
H.264编码器和解码器的功能组成见下图:
1)H.264编码器
编码器采用的是变换和预测的混合编码法。
如上图,输入的帧或场Fn以宏块为单位被编码器处理。
首先,按帧内或帧间预测编码的方法进行处理。如果采用帧内预测编码,其预测值PRED(图中用P表示)是由当前片中前面已编码的参考图像经运动补偿(MC)后得出,其中参考图像用F’n-1表示。为了提高预测精度,从而提高压缩比,实际的参考图像可在过去或未来已编码解码重建和滤波的帧中进行选择。
预测值PRED和当前块相减后,产生一个残差块Dn,经块变换、量化后产生一组量化后的变换系数X,再经熵变换,与解码所需的一些边信息(如预测模式量化参数、运动矢量等)一起组成一个压缩后的码流,经NAL(网络自适应层)供传输和存储。
如上述,为了提供进一步预测用的参考图像,编码器必须有重建图像的功能。因此必须使残差图像经反量化、反变换后得到的Dn‘与预测值P相加,得到uFn’(未经滤波的帧)。为了去除编码解码环路中产生的噪声,提高参考帧的图像质量,从而提高压缩图像性能,设置了一个环路滤波器,滤波后的输出Fn‘即重建图像可用作参考图像。
2)H.264解码器
有上图可知,由编码器的NAL输出一个压缩后的H.264压缩比特流。经熵解码得到量化后的一组变换系数X,再经反量化、反变换,得到残差Dn’。利用从该比特流中解码出的头信息,解码器就产生一个预测值PRED,它和编码器中的原始PRED是相同的。当该解码器产生的PRED与残差Dn‘相加后,就产生uFu’,再经滤波后,最后就得到滤波后的Fn‘,这个Fn’就是最好的解码输出图像。
为了进一步节省图像传输码率,需要对图像信号进行压缩,一般方法为去除图像信号中的相关性及减少图像编码的动态范围,通常采用变换编码及量化。变换编码将图像时域信号变换成频域信号,在频域中图像信号能量大部分集中在低频区域,相对时域信号,码率有较大的下降。量化过程根据图像的动态范围大小确定量化参数,既保留图像必要的细节,又减少码流。
1)整数变换
一维N点离散余弦变换(DCT)可以表示为:
2)量化
量化过程在不降低视觉效果的前提下减少图像编码长度,减少视觉恢复中不必要的信息。H.264采用标量量化技术,它将每个图像样点编码映射成较小的数值。一般标量量化器的原理为:
FQ = round(y/QP)
其中,y为输入样本点编码,QP为量化步长,FQ为y的量化值,round()为取整函数。
其反量化为:
y‘ = FQ*QP
在量化和反量化过程中,量化步长QP决定量化器的编码压缩率及图像精准度。如果QP比较大,则量化值FQ动态范围较小,其相应的编码长度较小,但反量化时损失较多的图像细节信息;如果QP比较小,则FQ动态范围大,相应的编码长度也较大,但图像细节信息损失较少。编码器根据图像值实际动态范围自动改变QP值,在编码长度和图像精度之间折衷,达到整体最佳效果。
在H.264中,量化步长Qstep共有52个值。其中QP是量化参数,是量化步长的序号。当QP取最小值0时代表最精细的量化,当QP取最大值51时代表最粗糙的量化。
在H.264/MPEG-4 AVC视频编解码标准中,编解码器反变换量化后图像会出现方块效应。其产生的原因有两个。最重要的一个原因是基于块的帧内和帧间预测残差的DCT变换。变换系数的量化过程相对粗糙,因而反量化过程恢复的变换系数带有误差,会造成在图像块边界上的视觉不连续。第二个原因来自于运动补偿预测。运动补偿块可能是从不是同一帧的不同位置上的内插样点数据复制而来。因为运动补偿块的匹配不可能是绝对准确的,所以就会在复制块的边界上产生数据不连续。同时,参考帧中存在的边界不连续也被复制到需要补偿的图像块内。
在视频编解码器中加入去方块滤波器的方法有两种:后置滤波器和环路滤波器。后置滤波器只处理编码环路外的显示缓冲器中的数据,所以它不是标准化过程中的规范内容,在标准中只是可选项。相反,环路滤波器处理编码环路中的数据。在编码器中,被滤波的图像帧作为后续编码帧运动补偿的参考帧;在解码器中,滤波后的图像输出显示。
在编码环路中使用滤波器比后置滤波器有以下几个优点。首先,环路滤波器可以保证不同水平的图像质量。其次,在解码器端没有必要再为滤波器准备额外帧缓存。第三,环路滤波比后置滤波更能增加视频流的主客观质量,同时有效降低解码器的复杂度。
1)H.264句法
在编码器输出的码流中,数据的基本单位是句法元素,每个句法元素由若干比特组成,它表示某个特定的物理意义,例如:宏块类型、量化参数等。句法表征句法元素的组织结构,语义阐述句法元素的具体含义。所有的视频编码标准都是通过定义句法和语义来规范解码器的工作流程。
编码器输出的比特流中,每个比特都隶属某个句法元素,也就是说,码流是由一个个句法元素依次衔接组成的,码流中除了句法元素并不存在专门用于控制或同步的信息。在H.264定义的码流中,句法元素被组织成有层次的结构,分别描述各个层次的信息,其句法元素共被组织成序列、图像、片、宏块、子宏块五个层次,如下图所示:
句法元素的分层结构有利于更有效地节省码流。例如,在一个图像中,经常会在各个片之间有相同的数据,如果每个片都同时携带这些数据,势必会造成码流的浪费。更为有效的做法是将改图的公共信息抽取出来,形成图像一级的句法元素,而在片级只携带该片自身独有的句法元素。
在H.264中,分层结构最大的不同是取消了序列层和图像层,并将原本属于序列和图像头部的大部分句法元素游离出来形成序列和图像两级参数集,其余的部分则放入片层。参数集是一个独立的数据单位。不依赖于参数集外的其他句法元素。下图描述了参数集与参数集外句法元素的关系:
从上图可以看出,参数集只是在片层句法元素需要的时候被引用,而且,一个参数集并不对应某个特定的图像或序列,同一个序列参数集可以被多个序列中的图像参数集引用,同理,同一个图像参数集也可以被多个图像引用。只在编码器认为需要更新参数集的内容时,才会发送新的参数集。在这种机制下,由于参数集的独立性,可以被多次重发或者采用特殊技术加以保护。
H.264建议参数集与参数集外部的句法元素处于不同信道中,这样可以使用更安全但成本更昂贵的通道来传输参数集,而使用成本低但不够可靠的信道传输其他句法元素,只需保证参数集优先被传送即可。在参数集和片使用同一个物理信道的情况下,上图中的信道1和信道2应该被理解为逻辑上的信道,因为从逻辑上看,参数集与其他句法元素还是处于各自彼此独立的信道中。
在复杂的通信环境中,除了片和参数集外还需要其他的数据单位来提供额外的信息。下图描述了在复杂通信中的码流中可能出现的数据单位:
如上图所示,一个序列的第一个图像叫做IDR图像(立即刷新图像),IDR图像都是I帧图像。H.264引入IDR图像是为了解码的重同步,当解码器解码到IDR图像时,立即将参考帧队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始一个新的序列。这样,如果在前一个序列的传输中发生重大错误,如严重的丢包,或其他原因引起数据错位,在这里可以获得重新同步。IDR图像之后的图像永远不会引用IDR图像之前的图像的数据来解码。
2)语义
在网络传输的环境下,编码器将每个NAL各自独立、完整地放入一个分组,由于分组都有头部信息,编码器可以很方便地检测出NAL的分界。但若编码数据是存储在介质(硬盘等)上,由于NAL是依次紧密排列,解码器将无法在数据流中分辨每个NAL的起始和终止。
针对该问题,H.264草案的附录B中指明了一种简单又高效的方案。当数据流是存储在介质上时,在每个NAL前添加起始码:0x000001 。在这种机制下,解码器在码流中检测起始码,作为一个NAL的起始标志,当检测到下一个起始码时当前NAL结束。H.264规定当检测到0x000000时也可以表征当前NAL的结束,这是因为连着的三个字节的0中任何一个字节的0要么属于起始码要么是起始码前面添加的0(因为二进制的一位是0或1)。
添加起始码是一个解决问题的很好的方法,但上面关于起始码的介绍还不完整,因为忽略了一个重要的问题:若在NAL内部出现了0x000001或0x000000的序列,就会产生疑义。于是H.264提出了另外一种机制,叫做“预防竞争”,在编码器编码完一个NAL时,应该检测是否出现下图左侧中的四个字节序列,以防止它们和起始码竞争。如果检测到这些序列存在,编码器将在最后一个字节前插入一个新的字节:0x03,从而使它们变成下图右侧的样子。当解码器在NAL内部检测到有0x000003的序列时,将把0x03抛弃,恢复原始数据。
总之,H.264的句法是经过精心设计的,构成句法的各句法元素既相互依赖而又相互独立。依赖是为了减少冗余信息,提高编码效率;而独立是为了使通信更加鲁棒,在错误发生时限制错误的扩散。但是,依赖和独立又是相互矛盾的,往往要在它们之间作取舍。在实现H.264的编解码器时,同样有速度和健壮性的相互矛盾的关系,既要在现有硬件平台上提高编解码的速度,又要作充分的安全检查、建立异常处理机制,如果能详细考察句法元素间的依赖与独立关系,充分利用H.264各句法元素间本身的内在联系与安全机制,便能够设计出即快速又安全、健壮的编解码算法。
基于IP的多媒体应用分为三类:交互应用,如可视电话和视频会议;预编码的视频流下载;基于IP的视频流。为满足这些应用的需求,必须解决四个QoS问题:吞吐量、传输时延、时延抖动和误码率。同时,由于视频应用中大多采用的高压缩率的编码技术,其对传输误码的要求尤其苛刻,但因为Internet的本质是尽力而为的网络,不提供传输的QoS保证,因此在视频应用中提高对传输误码的抗干扰和恢复能力是很有必要的,同时这也是多媒体通信领域研究的热点。
视频通信系统通常由五部分组成:视频源编码、复用/包封装/信道编码、信道传输、解复用/解包/信道解码和视频解码。视频首先在编码器中进行压缩以减少码率,压缩的比特流然后被分割成固定的或变长的包,并与数据、音频等复合,然后打包,最后需要经过一个信道编码阶段,通常使用前向纠错编码(FEC),用来防止传输的错误。在接收端,收到的包按照FEC解码并解包,输出的比特流被放入视频解码器用于重构原始的视频。
导致视频通信错误控制的几种原因:
1)压缩的视频流由于在源编码器中采用了预测编码和可变长编码(VLC),对传输的错误特别敏感。由于使用了空间和时间预测,一个带有错误的采样点将会导致同一帧或后续帧相关采样点的错误,同时由于VLC的使用,一个比特错误会导致解码器失去同步,从而使后续比特的正确接收失去意义。
2)视频源和网络环境通常是时变的。
3)视频源有着很高的码率,因此编码器不可能过于复杂,尤其是对于某些实时应用。
为了使压缩的比特流对传输错误具有抗干扰性,必须在流中加入冗余数据,利用这些冗余数据和有效数据之间的关系,才有可能检测并修正错误。这些冗余可以加入到源端编码或信道编码中,通常采用源和信道联合编码实现,用以限制错误扩散的范围。
即使一个图像采样或一块采样在传输中由于错误而丢失,解码器仍能基于周围的已经收到的采样点,利用空间和时间相邻的采样点的内在相关性,进行估计,从而达到错误恢复,该技术称为“错误隐藏”技术。为了保证解码器的错误隐藏,相邻采样点或块的压缩数据在包封装时必须按照interleaved交织方式,用以提高损坏区域被未损坏区域包围的概率。错误隐藏相对于错误恢复源端编码,优点是不需要增加额外的比特率,仅仅增加了解码器上的运算复杂度。
总体来说,抗传输误码的设计机制分为三类:在源端编码和信道编码中引入冗余数据的方法,使比特流对可能的错误具有更强的恢复能力;在解码器中基于错误检测来对错误的影响进行隐藏;通过源端编码器和解码器之间的交互,来使编码器根据解码器检测到的丢包情况调整操作。
常见的信道编码和错误控制方式。
1)前向纠错编码(FEC,Forward Error Correction)
前向纠错技术是一种重要的纠错编码方式,在视频传输容错技术中得到了广泛的应用,常用的有BCH码和RS码。但FEC的适用范围也是有限的,它只对平均分布的随机性位错比较有效,对于较高的误码率或者突发性错误效果较差。而在无线传输系统中,突发性的错误是常见的,因此为了使FEC在无线视频传输中能发挥容错效力,其实际应用中FEC编码、数据随机化和数据交织相互结合,共同作用。
为了实现良好的容错性能和较高的编码效率,需要根据信道的传输特点如位出错率、报文出错率、传输速率、出错类型等对FEC编码策略进行调整。视频比特流中不同部分的重要性不同,报头(视频图像的尺寸、与解码有关的时间戳以及编码的格式)和MV信息比DCT系数对视频质量的影响要大,低频的DCT系数要比高频的DCT系数对视频质量的影响大。在H.264中,可以采用数据分割(Data Partition)的编码模式,将片的编码信息分为运动向量和DCT系数两部分,这样可以优先对运动向量进行FEC编码,充分发挥FEC的纠错能力,提高编码效率。此外,FEC还可以和自动重传(ARQ)或分层编码模式相结合,发挥更大的作用。
2)数据交织(Interleaving)
许多容错算法能够很好的解决平均分布的随机性位错误,但对于突发性错误和某一段时间内的连续错误,效果很差。而数据交织就是一种把码流中突发性错误转变成随机错误的方法。
数据交织实质上就是一个置换器,目的就是要最大程度的置乱原数据排列顺序,避免置换前两个相邻数据在置换后再次相邻。
上图描述了数据交织的基本原理。其中,假设输入的码流是P0={1,2,3,…,15},经过图(a)的交织器,读出的码流位P1={1,6,11,…,15},按照图(b)的解交织后,正好可以输出码流P2={1,2,3,…,15}。图©给出了在传输过程中发生了突发性错误的情况,显而易见,没有经过交织的比特流的错误是连续的,对于这种错误情况,诸如FEC、错误隐藏等容错算法的效率很低;而经过交织处理的比特流中,突发性错误的位已经分别开,这有利于其他容错的算法的实现。同时,交织的效果与交织器的设计M*N紧密相关,最佳的交织器的设计能够实现相邻位置交织后再次相邻,这样可以充分利用错误位周围正确接收位的相关性,从而纠正恢复错误位。
3)ARQ
自动请求重发ARQ是依靠反馈信息重传出错误报文的差错控制方法。其实现过程如下:首先发送端发送数据报文,经信道传输后,接收端计算接收报文中的校验,如果校验正确,则要求发送端发送后续报文,否则要求发送端重发错误的报文。接收端的反馈信息分为两种ACK和NACK,根据实现过程的不同,ARQ大致可分为三种基本模型:停等型(SW,Stop and Wait)、选择重复型(SP,Selective Repeat)和返回N型(GBN,Go Back N)。
停等型(SW,Stop and Wait):
发送端发送数据报文后,等待接收端的反馈信息ACK,如果ACK正确接收到,则继续发送后续报文;否则,若超过了限定时间,发送端重发数据报文。因此,停等型ARQ只能逐个报文地发送,实现简单,但效率低。
选择重复型(SP,Selective Repeat):
发送端连续发送数据报文,接收端也逐一发送正确接收报文的ACK,若在限定时间内没有接收到某个报文的ACK,发送端则只发出错报文,而后继续前面连续发送的报文的工作。例如,当前发送端刚发送完报文n,同时确定n-2报文错误,则只再重发报文n-2,然后继续发送报文n+1。这需要接收端有接收缓存,方法实现复杂,但效率高。
返回N型(GBN,Go Back N):
此类型和选择重复型一样,采用连续发送报文,一旦确定前面发送的某个报文出错,则发送端从出错报文的位置开始重新发送。返回N型的实现较为简单,效率介于停等型和选择重复型之间。
H.264/AVC标准从系统层面定义了视频编码层(VCL,Video Coding Layer)和网络提取层(NAL, Network Abstraction Layer)。其中,视频编码层独立于网络,主要包括核心压缩引擎和块、宏块和片的语法定义。通过引入一系列新特性,不但使H.264的编码压缩效率提升了近1倍,而且多种错误恢复工具又增强了视频流的鲁棒性。网络提取层主要功能是定义数据的封装格式,把VCL产生的比特字符串适配到各种各样的网络和多元环境中。其涉及片级别以上的语法定义,包括独立于解码所要求的数据表示,防止竞争的编码,附加的增强信息以及编码片的比特字符串。
H.264从框架结构上将NAL和VCL的分离,主要的两个目的是:一、可以定义VCL视频压缩处理与NAL网络传输机制的接口,这样允许视频编码层VCL的设计可以在不同的处理器平台进行移植,而与NAL层的数据封装格式无关;二、VCL和NAL都被设计成工作于不同的传输环境,异构的网络环境并不需要对VCL比特流进行重构和重编码。
H.264的错误恢复工具:参数集;灵活的宏块排序;冗余片等。
FROM:《新一代视频压缩编码标准H.264》
一、总体介绍思维导图二、详细叙述1、绪论1.1 信息化与视频通信信息就是客观世界的描述和分析,它无处不在,无时不在,具有通用性、抽象性、无限性三个特征。地球上的物质资源是有限的。石油、煤等在一定期限总会被开采尽,但信息资源是无限的。对客观规律性的探讨是无尽的。信息要通过不断研究、不断分析,通过科学研究、反复实践来加以利用。 信息化是指“在现代信息技术广为普及的基础上,通过...
视频
码率
视频
码率就是
视频
传输时单位时间传输的数据位数,一般我们用的单位是kbps即千位每秒。通俗一点就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件。
但是文件体积与取样率是成正比的,所以几乎所有的
编码
格式重视的都是如何用最低的码率达到最少的失真,围绕这个核心衍生出来的cbr(固定码率)与vbr(可变码率)。
前言经典的
视频
编解码
标准
有H.264和HEVC,这两种
标准
的
编码
框架(见图1)大致相同,只是其中某几个模块的技术得到了一定的发展,目前在研究的H.266也是基于这个基本框架,在用成百上千次的运算复杂度去获取一点点的
编码
效率提升。
图1 经典
视频
编码
框架
1. 总体把握
这个框架,
视频
编解码简介
文章目录
视频
编解码简介为什么需要
编码
?
编码
方式典型的编解码码流程预测性
编码
转换
编码
(有损
压缩
)熵
编码
(无损
压缩
)解码
为什么需要
编码
?
原始
视频
数据很庞大,比如一个150分钟,30FPS,分辨率为720✖480的彩色电影需要占用280GB。无论是物理存储还是网络传输,这都是难以负担的。所以需要
编码
进行
压缩
。
编码
方式
一般有两种
编码
方式:熵
编码
(entropy coding,以无损...
《
深入浅出
设计模式》是一本介绍软件设计模式的书籍,作者韩陆卫。本书的特点是通俗易懂、
深入浅出
、
图文并茂
,适合初学者学习理解。
本书首先介绍了面向对象编程的基础知识,如封装、继承、多态等等,这些是理解设计模式的前置知识。接下来,本书详细介绍了23种常用的设计模式,包括创建型模式、结构型模式、行为型模式。针对每一种模式,本书都从以下几个方面进行讲解:使用场景、模式结构、参与角色、代码示例等。通过讲解这些具体案例,可以让读者明白这些设计模式的实现原理,并能在实际开发过程中应用它们。
本书结构合理,内容丰富,涵盖面广。作者使用了许多生动的图例来讲解一些抽象的概念,而且每个模式的选取都是实用性强、普遍性高的。本书还特别强调了设计模式的演化历程和实战应用。除了介绍23种经典设计模式,最后一章还介绍了模式的底层机制——反射、代理和装饰器,并通过具体的案例分析来阐述。
《
深入浅出
设计模式》是一本非常适合初学者和需要系统学习设计模式的工程师的入门级书籍,读者可以通过这本书熟悉设计模式的思想和实践应用,提高软件质量和开发效率。