常见视频编码格式与RGB、YUV视频存储格式_第1页
常见视频编码格式与RGB、YUV视频存储格式_第2页
常见视频编码格式与RGB、YUV视频存储格式_第3页
常见视频编码格式与RGB、YUV视频存储格式_第4页
常见视频编码格式与RGB、YUV视频存储格式_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、TCC8900VPU分析常见视频编解码格式及RGB和YUV存储格式预研文档修订记录版本时间修订者|修订内容1.02011-3-27刘文®创建文档:每次修改与增加内容者,需在文档修订记录中进行记录常见视频编解码格式1视频文件类别常言道:物以类聚,人以群分。视频文件也不例外,细细算起来,视频文件可以分成两大类:其一是影像文件,比如说常见的VCD便是一例。其二是流式视频文件,这是随着国际互联网的发展而诞生的后起视频之秀,比如说在线实况转播,就是构架在流式视频技术之上的。1.1 影像格式日常生活中接触较多的VCD多媒体CD光盘中的动画,这些都是影像文件。影像文件不仅包含了大量图像信息,同时还

2、容纳大量音频信息。所以,影像文件的“身材”往往不可小觑。1) AVI格式2) MOV格式3) MPEG/MPG/DA璐式1.2 流式视频格式目前,很多视频数据要求通过Internet来进行实时传输,前面我们曾提及到,视频文件的体积往往比较大,而现有的网络带宽却往往比较“狭窄”,千军万马要过独木桥,具结果当然可想而知。客观因素限制了视频数据的实时传输和实时播放,于是一种新型的流式视频(StreamingVideo)格式应运而生了。这种流式视频采用一种“边传边播”的方法,即先从服务器上下载一部分视频文件,形成视频流缓冲区后实时播放,同时继续下载,为接下来的播放做好准备。这种“边传边播”的方法避免了

3、用户必须等待整个文件从Internet上全部下载完毕才能观看的缺点。到目前为止,Internet上使用较多的流式视频格式主要是以下三种:1)RM(RealMedia脂式RM格式是RealNetworks公司开发的一种新型流式视频文件格式,它麾下共有三员大将:RealAudio>RealVideo和RealFlashRealAudio用来传输接近CD音质的音频数据,RealVideo用来传输连续视频数据,而RealFlash则是RealNetworks公司与Macromedia公司新近合作推出的一种高压缩比的动画格式。RealMedia可以根据网络数据传输速率的不同制定了不同的压缩比率,从

4、而实现在低速率的广域网上进行影像数据的实时传送和实时播放。这里我们主要介绍RealVideo,它除了可以以普通的视频文件形式播放之外,还可以与RealServe服务器相配合,首先由RealEncoder负责将已有的视频文件实时转换成RealMedia格式,RealServer则负责广播RealMedia视频文件。在数据传输过程中可以边下载边由RealPlayer播放视频影像,而不必像大多数视频文件那样,必须先下载然后才能播放。目前,Internet上已有不少网站利用RealVideo技术进行重大事件的实况转播。1) MOV文件格式(QuickTime)MOV也可以作为一种流文件格式。Quick

5、Time能够通过Internet提供实时的数字化信息流、工作流与文件回放功能,为了适应这一网络多媒体应用,QuickTime为多种流行的浏览器软件提供了相应的QuickTimeViewer插件(Plug-in),能够在浏览器中实现多媒体数据的实时回放。该插件的“快速启动(FastStart)”功能,可以令用户几乎能在发出请求的同时便收看到第一帧视频画面,而且,该插件可以在视频数据下载的同时就开始播放视频图像,用户不需要等到全部下载完毕就能进行欣赏。止匕外,QuickTime还提供了自动速率选择功能,当用户通过调用插件来播放QuickTime多媒体文件时,能够自己选择不同的连接速率下载并播放影像

6、,当然,不同的速率对应着不同的图像质量。止匕外,QuickTime还采用了一种称为QuickTimeVR的虚拟现实(VR,VirtualReality)技术,用户只需通过鼠标或键盘,就可以观察某一地点周围360度的景象,或者从空间任何角度观察某一物体。2) ASF(AdvancedStreamingFormat)式Microsoft公司推出的AdvancedStreamingFormat(ASF高级流格式),也是一个在Internet上实时传播多媒体的技术标准,Microsoft公司的野心很大,希图用ASF取代QuickTime之类的技术标准。ASF的主要优点包括:本地或网络回放、可扩充的媒体

7、类型、部件下载、以及扩展性等。ASF应用的主要部件是NetShow服务器和NetShow播放器。有独立的编码器将媒体信息编译成ASF流,然后发送到NetShow服务器,再由NetShow服务器将ASF流发送给网络上的所有NetShow播放器,从而实现单路广播或多路广播。这和Real系统的实时转播则是大同小异。2常见的视频的编码及封装格式2.1常见视频编码格式常见的编码格式有H.264、H.263、MPEG-1MPEG-2MPEG4、SorensonSpark、VC-1、JPEGRVDivX、On2TrueMotionVP6。对于高清视频来说,主流的编码技术目前主要有MPEG-2DivX、XVI

8、DH264/AVCVC-1、RMVBffiWMV-H*等。其中,H264/AVCVC-1、MPEG-2是蓝光(Blu-rayDisc)所选择的编码格式,也是目前最流行的高清视频编码格式。另外就是高清视频的封装格式,封装格式和编码格式是互相区别的,许多人会把它们混淆。下图为常见编码格式的logo:KM图1.1常见编码格式logo H264/X264/AVC编码格式绝大多数视听玩家对于H264编码都不会感到陌生,H264编码的身世显赫,是ITU-T(国际电信联盟视频编码专家组)与ISO/IEC(国际标准化组织动态图像专家组)合作组成的JVT(联合视频组)推动的新一代数字视频编码标准,也称为MPEG

9、-4/AVC编码。H264编码依托雄厚的背景,在技术上独树一帜,大幅领先于其它编码算法。X264编码,是H264编码的一个开源分支,它符合H264标准,其功能在于编码,而不作为解码器使用,X264编码最大的特点在于注重实用,它在不明显降低编码性能的前提下,努力降低编码的计算复杂度,X264对于H264编码中的一些复杂编码特性做了折衷处理,其压缩视频体积小于XVID(MPEG-4编码视频,以小体积、高画质的特点得到了广泛认可。 H.263编码格式H.263是国际电联ITU-T的一个标准草案,是为低码流通信而设计的。但实际上这个标准可用在很宽的码流范围,而非只用于低码流应用,它在许多应用中可以认为

10、被用于取代H.261。H.263的编码算法与H.261一样,但做了一些改善和改变,以提高性能和纠错能力。1998年IUT-T推出的H.263+是H.263建议的第2版,它提供了12个新的可协商模式和其他特征,进一步提高了压缩编码性能。如H.263只有5种视频源格式,H.263+允许使用更多的源格式,图像时钟频率也有多种选择,拓宽应用范围;另一重要的改进是可扩展性,它允许多显示率、多速率及多分辨率,增强了视频信息在易误码、易丢包异构网络环境下的传输。另外,H.263+对H.263中的不受限运动矢量模式进行了改进,加上12个新增的可选模式,不仅提高了编码性能,而且增强了应用的灵活性。H.263已经

11、基本上取代了H.261 MPEG-1编码格式MPEG-健MPEG&织制定的第一个视频和音频有损压缩标准。视频压缩算法于1990年定义完成。1992年底,MPEG-征式被批准成为国际标准。MPEG-吐为CD光碟介质定制的的视频和音频压缩格式。一张70分钟的CD光碟传输速率大约在1.4Mbps。而MPEG-采用了块方式的运动补偿、离散馀弦变换(DCT)、量化等技术,并为1.2Mbps传输速率进行了优化。MPEG-傅后被VideoCD采用作为核心技术。MPEG-酌输出质量大约和传统录像机VCR信号质量相当,这也许是VideoCD在发达国家未获成功的原因 MPEG-2编码格式MPEG-2编码标

12、准是由MPEG(MovingPictureExpertsGroup)工作组发布的视频与音频压缩国际标准。MPEG-2编码于1994年发布,常用于广播信号(卫星电视、有线电视)的视频和音频编码,经过后期不断修改,不仅成为DVD的核心技术,还应用于HDTV高清电视传输。 MPEG-4编码格式MPEG41998年11月公布,原预计1999年1月投入使用的国际标准MPEG4不仅是针对一定比特率下的视频、音频编码,更加注重多媒体系统的交互性和灵活性。MPEG-标准主要应用于视像电话(VideoPhone),视像电子邮件(VideoEmail)和电子新闻(ElectronicNews)等,其传输速率要求较

13、低,在4800-64000bits/sec之间,分辨率为176X144MPEG-利用很窄的带宽,通过帧重建技术,压缩和传输数据,以求以最少的数据获得最佳的图像质量。 SorensenSpark编码格式Sorenson编解码器可以指三个专有的视频编解码器:Sorenson视频,Sorenson视频3或SorensonSpark。Sorenson视频也被称为Sorenson视频编解码器,Sorenson视频量化或SVQSorensonSpark也被称为H.263或FLV1Sorenson(而且有时误为Flash视频(FLV),这是以AdobeFlash容器格式名称命名)。这两种编解码器的设计由So

14、renson媒体公司。Sorenson视频是用在苹果的QuickTime和SorensonSpark在用在AdobeFlash容器中。 VC-1编码格式WMVWindowsMediaVideo)作为经久不衰的一种视频编码,一直在不断改进,2003年,微软基于WMV第九版(WMV9编码技术,正式提出了VC-1编码标准,并于2006年正式成为国际标准。VC-1编码作为较晚推出的高清编码算法,自然吸收了MPEG-2与H264编码的优点,其压缩比介于MPEG2和H264之间,编解码复杂性仅有H264的一半,即压缩时间更短、解码计算更小,在微软的大力推动下,VC-1编码已经得到了BD蓝光光盘、电影及电视

15、学会(SMPTE的支持。近几年来,为了更好的推广WMV9/VC-1编码标准,微软不遗余力的建立了WMV-HD(清资源站点,大量发布采用VC-1编码压制的720P、1080P宣传片及演示片(WMV-HD!频格式),试图营造声势,吸引用户关注。不过,中庸的技术(与H264相比无明显编码优势)、封闭的平台(限于Windows系统)、后发的劣势(2006年通过成为国际标准)仍然给微软VC-1编码的应用前景带来了较大的不确定性。 JPEG®码格式JPEG是JointPhotographicExpertsGroup(联合图像专家小组)的缩写。JPEG勺压缩方式通常是破坏性资料压缩(lossyco

16、mpression),意即在压缩过程中图像的品质会遭受到可见的破坏,有一种以JPE劭基础的标准ProgressiveJPEG是采用无失真的压缩方式,但ProgressiveJPEG并没有受到广泛的支援。 RV编码格式RealVideo格式文件包才5后缀名为RARMRAMRMVB勺四种视频格式。RealVideo是一种高压缩比的视频格式,可以使用任何一种常用于多媒体及Webh制作视频的方法来创建RealVideo文件。例如Premiere、VideoShop以及AfterEffects等,对于文件的播放可用realplayer和暴风影音播放。 DivX编码格式DivX格式,这是由MPEG4衍生出

17、的另一种视频编码(压缩)标准,也即我们通常所说的DVDrip格式,它采用了MPEG酌压缩算法同时又综合了MPEG-4fMP3#方面的技术,说白了就是使用DivX压缩技术对DVD®片的视频图像进行高质量压缩,同时用MPMAC3对音频进行压缩,然后再将视频与音频合成并加上相应的外挂字幕文件而形成的视频格式。其画质直逼DVP且体积只有DVD的数分之一。这种编码对机器的要求也不高,所以DivX视频编码技术可以说是一种对DVD®成威胁最大的新生视频压缩格式,号称DV而手或DV球结者。 On2TrueMotionVP6编码格式On2TrueMotionVP6是主要的移动视频标准,他采用

18、了AdobeFlashLite?3的一些标准,数以百计的网络门户,用户自己制作的内容,以及社交网络普遍采用基于Flash的VP6格式。2.2视频的封装格式封装格式其实是一个“容器”,它不同于编码格式,封装就相当于捆绑打包,将已经编码好的视频文件和音轨文件打包在一起,并按照一定规则建立排序和索引,便于播放器或播放软件来索引播放。常见的封装格式有MKVAVI、MOVTSPS等等,高清媒体文件的后缀名(扩展文件名)一般都是媒体的封装格式。3) MO*式:MO"见于AppleQuickTime网站上的电影预告片。MOVfe似于RMVB过于封闭自守,民间制作组没有人会用这个不方便的形式。4)

19、AVI格式:AVI封装是微软在上世纪90年代初创立的封装标准,是当时为对抗QuickTime的MOV格式而推出的,因为当时还没有流式播放需要,AVI的将索引布置在打包文件的尾部,这就使得AVI封装不能做到流式播放(流媒体)0AVI封装只能支持有限的几种视频音频编码形式,且AVI不能支持音频的VBR动态比特率编码。5) TS格式:TS(TransportStream)是一种比较先进的封装形式,蓝光原盘中,就采用了TS封装。TS封装支持几乎所有编码的高清视频和音轨文件。PS(ProgramStream)封装的技术基本和TS相同,但PS封装和AVI一样,都不是流媒体,不能够支持流式播放,PS封装使用

20、在原先的HDDVD中。在高清标准下,MPEG-2编码的视频文件主要采用TS封装格式。6) MKV格式:MKMMatroska)是一种新兴的多媒体封装格式,可以将各类视频编码、16条或以上不同格式的音频和语言不同的字幕封装在一个文件内,它具有开放源代码、音视频编码丰富、网络亲和性好等优势,已经得到众多视频压制组和玩家的支持,正逐渐成为高清视频的主流视频格式。H264编码与X264编码目前大多采用MKV封装格式。3视频的播放组件及调用流程视频文件的解码过程如下依次需要用到的组件有“分离器”、“解码器”、“渲染器”,它们统称为“滤镜”。 分离器(Splitter)要正确地播放多媒体文件,播放器首先要

21、正确地调用分离器,把视频流和(或)音频流正确地分离出来,然后交给解码器进行解码,这就是分离器的使命。上文中说到有不少的封装格式,每一种封装格式都必须有相对应一种分离器,才能正确的把视频和音频分离出来以供解码器解码。常用的分离器有:GabestMPEGSplitter(MediaPlayerClassic作者编写的分离器)、KMPSplitter(KMPlayer原配的分离器)HailiMediaSplitter这三种分离器能够支持较多的封装格式,其它的分离器还有Moonlight-ElecardMPEG2Demultiplexer(月光分离器)、nVIDIATransportDemux(nVI

22、DIA公司的分离器,配合PureVideo使用)、CyberLinkDemux(PowerDVD软件中的分离器) 解码器(Decoder解码器在整个视频的播放中占据了最主要的位置,它的作用是对由分离器分离出来的音频流和视频流分别进行解码。解码器又分为视频解码器和音频解码器。常见的视频解码器有:MPEG-2视频解码器InterVideoVideoDecoder(WinDVD的解码器)CyberLinkDTVVideo/SPFilterCyberLinkVideo/SPFilter(PowerDVD的解码器)Moonlight-ElecardMPEG2VideoDecodernVIDIAVideo

23、Decoder(nVIDIAPureVideo的解码器)SonicCinemasterVideo、GabestVideoDecoderH264/X264/AVC视频解码器CyberLinkH.264/AVCDecoder(PowerDVD的解码器)、CoreAVCDirectShowVideoDecoderMoonlightH264VideoDecoderffdshowMPEG-4VideoDecoderVC-1视频解码器CyberLinkVC-1Deocder(PowerDVD的解码器)、MediaPlayerClassicVideoDecoder>WMVideoDecoderDMO微

24、软的解码器)等等。常见的音频解码器有:CyberLinkAudioDecoder(PowerDVD的解码器)AC3FilterInterVideoAudioDecodernVIDIAAudioDecoder3.3渲染器(Rendered渲染器与解码器一样,分为视频渲染器和音频渲染器,解码后的视频数据经过视频渲染器的渲染后呈现到显示设备上,解码后的音频经过音频渲染器的渲染后从声卡输出。渲染在视频播放的过程中是很重要的,因为它会影响到视频最终的效果,不同的渲染器有不同的技术特性,对电脑的配置(主要是CPU和显卡)的要求也不一样。视频渲染器主要有以下几种:旧式视频渲染器(VideoRenderer)

25、:这种是最原始的渲染器,它接收到来自解码器解码后的数据流,在显示设备上显示。这种渲染器基本上不能调用到显卡硬件特性,全靠CPU来完成渲染任务。覆盖合成器(OverlayMixer):覆盖合成器能够将若干路视频流合并输出到显示设备上,并且它能够很好地调用显卡硬件的拉伸,颜色空间变换等硬件功能,以减少对CPU资源的占用率。视频覆盖的画面质量事实上取决于显卡硬件。通常在使用覆盖合成器的时候无法直接对正在播放的视频截图。VMR渲染器(VideoMixingRenderer):VMR对覆盖合成器进行了改进,它是基于DirectX的视频渲染器,能够支持16路的视频流混合。VMR根据DirectX版本的不同

26、,可以分为VMR7和VMR9其中VMR7基于DirectDraw7(2D),而VMR9基于Direct3D9(3D),VMR9可以支持视频特效(VideoEffects)和视频变换(VideoTransitions)。VMR根据渲染模式的不同又分为“窗口化”(Windowed、“无窗口”(Windowless)、“未渲染"(Renderless)模式。EVR增强型视频渲染器(EnhancedVideoRenderer)微软在WindowsVista系统就开始引入的新视频渲染器,当然也包含在新的操作系统Windows7中。它与VMR最大的区别就是能够支持DXVA2.0。二、RGB和YU

27、V视频存储格式视频数据,图像数据在存储中的存储格式主要有RGB和YUMRGB是多媒体数据进行数据存储采用的主流格式;YUV格式所需存储空间一般是RGB格式存储空间的一半,所以YUV格式主要用于多媒体数据传输中。RGB视频存储格式RGB既述计算机彩色显示器显示色彩的原理与彩色电视机一样,都是采用R(Red)、G(Green)、B(Blue)相加混色的原理:通过发射出三种不同强度的电子束,使屏幕内侧覆盖的红、绿、蓝磷光材料发光而产生色彩。这种色彩的表示方法称为RGB色彩空间表示。根据三基色原理,任意一种色光F都可以用不同分量的R、G、B三色相加混合而成。F=rR+gG+bB其中,r、g、b分别为三

28、基色参与混合的系数。当三基色分量都为0(最弱)时混合为黑色光;而当三基色分量都为k(最强)时混合为白色光。调整r、g、b三个系数的值,可以混合出介于黑色光和白色光之间的各种各样的色光。常见的RG昭式RGB的GUID(globallyuniqueidentifier全球唯一标识符)格式描述描述如下表表2.1RGB的GUID描述RGB的GUID描述符描述符说明MEDIASUBTYPERGB12每个像素用1位表示,需要调色板MEDIASUBTYPERGB4每个像素用4位表示,需要调色板16MEDIASUBTYPE_RGB8256每个像素用8位表示,需要调色板MEDIASUBTYPE_RGB565每个

29、像素用16位表示,RGB分量分别使用5位、6位、5位MEDIASUBTYPE_RGB555每个像素用16位表示,RGB分量都使用5位(剩下的1位不用)MEDIASUBTYPE_RGB24每个像素用24位表示,RGB分量各使用8位MEDIASUBTYPE_RGB32每个像素用32位表示,RGB分量各使用8位(剩下的8位不用)MEDIASUBTYPE_ARGB32每个像素用32位表示,RGB分量各使用8位(剩下的8位用于表示Alpha通道值)各种RG璐式介绍RGB1、RGB4RGB8都是调色板类型的RGB格式,在描述这些媒体类型的格式细节时,通常会在BITMAPINFOHEADER据结构后面跟着一

30、个调色板(定义一系列颜色)。它们的图像数据并不是真正的颜色值,而是当前像素颜色值在调色板中的索引。RGB1以RGB1(2色位图)为例,比如它的调色板中定义的两种颜色值依次为0x000000(黑色)和0xFFFFFF白色),那么图像数据001101010111,(每个像素用1位表示)表示对应各像素的颜色为:黑黑白白黑白黑白黑白白白,RGB565RGB565使用16位表示一个像素,这16位中的5位用于R,6位用于G,5位用于Bo程序中通常使用一个字(WORD,一个字等于两个字节)来操作一个像素。当读出一个像素后,这个字的各个位意义如下:高字节低字节RRRRRGGGGGGBBBBB可以组合使用屏蔽字

31、和移位操作来得到RGB各分量的值:#defineRGB565_MASK_RED0xF800#defineRGB565_MASK_GREEN0x07E0#defineRGB565_MASK_BLUE0x001FR=(wPixel&RGB565_MASK_RED)>>11;取值范围0-31G=(wPixel&RGB565_MASK_GREEN)>>5;取值范围0-63B=wPixel&RGB565_MASK_BLUE;取值范围0-31RGB555RGB55呢另一种16位的RGB格式,RGB分量都用5位表示(剩下的1位不用)。使用一个字读出一个像素后,

32、这个字的各个位意义如下:高字节低字节XRRRRGGGGGBBBB(0C表示不用,可以忽略)可以组合使用屏蔽字和移位操作来得到RGB各分量的值:#defineRGB555_MASK_RED0x7C00#defineRGB555_MASK_GREEN0x03E0#defineRGB555_MASK_BLUE0x001FR=(wPixel&RGB555_MASK_RED)>>10;取值范围0-31G=(wPixel&RGB555_MASK_GREEN)>>5;取值范围0-31B=wPixel&RGB555_MASK_BLUE;取值范围0-31RGB24

33、RGB248用24位来表示一个像素,RG盼量都用8位表示,取值范围为0-255。注意在内存中RGB各分量的排列顺序为:BGRBGRBGR。通常可以使用RGBTRIPLE据结构来操作一个像素,它的定义为:typedefstructtagRGBTRIPLEBYTErgbtBlue;蓝色分量BYTErgbtGreen;/绿色分量BYTErgbtRed;/红色分量RGBTRIPLE;RGB32RGB32使用32位来表示一个像素,RGB分量各用去8位,剩下的8位用作Alpha通道或者不用。(ARGB3漪是带Alpha通道的RGB32)注意在内存中RGB各分量的排列顺序为:BGRABGRABGRA通常可以

34、使用RGBQUAD&据结构来操作一个像素,它的定义为:typedefstructtagRGBQUADBYTErgbBlue;蓝色分量BYTErgbGreen;/绿色分量BYTErgbRed;/红色分量BYTErgbReserved;淋留字节(用作Alpha通道或忽略)RGBQUAD;2YUV视频存储格式YUV概述在现代彩色电视系统中,通常采用三管彩色摄像机或彩色CCD摄像机进行摄像,然后把摄得的彩色图像信号经分色、分别放大校正后得到RGB再经过矩阵变换电路得到亮度信号Y和两个色差信号R-丫(即U)、BY(即V),最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这种色彩的

35、表示方法就是所谓的YUV色彩空间表示。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。本文讲述的格式全部使用每个像素位置8位的方式来编码Y频道(也称为灯光频道),并使用每样例8位的方式来编码每个U或V色度样例。但是,大多数YUV格式平均使用的每彳t素位数都少于24位,这是因为它们包含的U和V样例比Y样例要少。注在本文中,U一词相当于Cb,V一词相当于Cr。常见YUV的格式在DirectSho

36、w中,常见的YUV格式有YUY2YUYVYVYUUYVYAYUVY41RY411、Y211、IF09IYUVYV12YVU9YUV411、YUV420等。作为视频媒体类型的辅助说明类型(Subtype),它们对应的GUID(GloballyUniqueIdentifier)如下表所示。表2.2YUV的GUID描述YUV的GUID描述符描述符说明MEDIASUBTYPE_YUY2YUY2以4:2:2方式打包MEDIASUBTYPE_YUYVYUYV实际格式与YUY2相同MEDIASUBTYPE_YVYUYVYU以4:2:2方式打包MEDIASUBTYPE_UYVYUYVY以4:2:2方式打包ME

37、DIASUBTYPE_AYUVAYUVAlpha通道的4:4:4YUV格式MEDIASUBTYPE_Y41PY41P以4:1:1方式打包MEDIASUBTYPE_Y411Y411实际格式与Y41P相同MEDIASUBTYPE_Y211Y211MEDIASUBTYPE_IF09IF09格式MEDIASUBTYPE_IYUVIYUV格式MEDIASUBTYPE_YV12YV12格式MEDIASUBTYPE_YVU9YVU9格式2.3YUV主要采样格式主要的采样格式有YCbCr4:2:0YCbCr4:2:2YCbCr4:1:侪口YCbCr4:4:4其中YCbCr4:1:1比较常用,其含义为:每个点保

38、存一个8bit的亮度值(也就是Y值),每2x2个点保存一个Cr和Cb值,图像在肉眼中的感觉不会起太大的变化。所以,原来用RGB(RG,B都是8bitunsigned)模型,1个点需要8x3=24bits,若4:4:4按采样后,YUV仍各占8bit。按4:1:1采样后,而现在一个点平均仅需要8+(8/4)+(8/4)=12bits。这样就把图像的数据压缩了一半。YUV的优点之一是,色度频道的采样率可比Y频道低,同时不会明显降低视觉质量。有一种表示法可用来描述法称为A:B:C表示法:,4:4:4:表示色度频道没有下采样4:2:2:表示2:1的水平下采样,V样例,每个扫描行都包含四个4:2:0:表示

39、2:1的水平下采样,4:1:1:表示4:1的水平下采样,U和V与Y的采样频率比例,这个表示没有垂直下采样。对于每两个U样例或Y样例。2:1的垂直下采样。没有垂直下采样。对于每个U样例或V样例,每个扫描行都包含四个Y样例2.3.1YUV采样格式图示YUV4:4:4采样下图显示了4:4:4图片中使用的采样网格。灯光样例用叉来表示,色度样例则用圈表小。®0d演演国图2.1YUV4:4:4样例位置YUV4:2:2采样4:2:2采样的这种主要形式在ITU-RRecommendationBT.601中进行了定义。图2.1显示了此标准定义的采样网格。因X想X8!X0X0X0X!3X0J图2.2YU

40、V4:2:2样例位置YUV4:2:0采样4:2:0采样有两种常见的变化形式。其中一种形式用于MPEG-2视频,另一种形式用于MPEG-1以及ITU-TrecommendationsH.261和H.26&图2.3显示了MPEG-1方案中使用的采样网格,图2.4显示了MPEG-2方案中使用的采样网格。XIXXXXx)xx)xoQkxXX图2.3YUV4:2:0样例位置(MPEG-1方案)XXXXkxXXpo,KXx>d图2.4YUV4:2:0样例位置(MPEG-2方案)与MPEG-1方案相比,在MPEG-2方案与为4:2:2和4:4:4格式定义的采样网格之间进行转换更简单一些。因此,

41、在Windows中首选MPEG-2方案,应该考虑将其作为4:2:0格式的默认转换方案。2.3.2YUV存储方式本文讲述推荐用于视频呈现的8位YUV格式。这些格式可以分为几个类别:4:4:4格式,每像素32位4:2:2格式,每像素16位4:2:0格式,每像素16位4:2:0格式,每像素12位首先,理解下列概念,这样才能理解接下来的内容:表面原点:对于本文讲述的YUV格式,原点(0,0)总是位于表面的左上角。跨距:表面的跨距,有时也称为间距,指的是表面的宽度,以字节数表示。对于一个表面原点位于左上角的表面来说,跨距总是正数。对齐:表面的对齐是根据图形显示驱动程序的不同而定的。表面始终应该DWORD

42、对齐,就是说,表面中的各个行肯定都是从32位(DWORD)边界开始的。对齐可以大于32位,但具体取决于硬件的需求。打包格式与平面格式:YUV格式可以分为打包格式和平面格式。在打包格式中,Y、U和V组件存储在一个数组中。像素被组织到了一些巨像素组中,巨像素组的布局取决于格式。在平面格式中,Y、U和V组件作为三个单独的平面进行存储。4:4:4格式,每像素32位推荐一个4:4:4格式,FOURCC码为AYUM这是一个打包格式,其中每个像素都被编码为四个连续字节,其组织顺序如下所示。Increasingmemoryaddr2&getVOUOYDAOV1LJ1Y1A1V2U2YZA2图2.5AY

43、UV内存布局标记了A的字节包含alpha的值。4:2:2格式,每像素16位支持两个4:2:2格式,FOURCC码如下:YUY2UYVY两个都是打包格式,其中每个巨像素都是编码为四个连续字节的两个像素。这样会使得色度水平下采样乘以系数2。YUY2在YUY2格式中,数据可被视为一个不带正负号的char值组成的数组,其中第一个字节包含第一个Y样例,第二个字节包含第一个U(Cb)样例,第三个字节包含第二个Y样例,第四个字节包含第一个V(Cr)样例,如图2.6所示。ricrnsmcnrgod陪s®1yq|in1加¥2|tn|u图2.6YUY2内存布局如果该图像被看作由两个little

44、-endianWORD值组成的数组,则第一个WORD在最低有效位(LSB)中包含Y0,在最高有效位(MSB)中包含U。第二个WORD在LSB中包含Y1,在MSB中包含V。YUY2是用于MicrosoftDirectX?VideoAcceleration(DirectXVA)的首选4:2:2像素格式。预期它会成为支持4:2:2视频的DirectXVA加速器的中期要求。UYVY此格式与YUY2相同,只是字节顺序是与之相反的一就是说,色度字节和灯光字节是翻转的(图7)。如果该图像被看作由两个little-endianWORD值组成的数组,则第一个WORD在LSB中包含U,在MSB中包含Y0,第二个W

45、ORD在LSB中包含V,在MSB中包含Y1。ric降维ng:msmenrgodfe加纳图2.7UYVY内存布局4:2:0格式,每像素16位推荐两个4:2:0每像素16位格式,FOURCC码如下:IMC1IMC3两个FOURCC码都是平面格式。色度频道在水平方向和垂直方向上都要以系数2来进行再次采样。IMC1所有Y样例都会作为不带正负号的char值组成的数组首先显示在内存中。后面跟着所有V(Cr)样例,然后是所有U(Cb)样例。V和U平面与Y平面具有相同的跨距,从而生成如图2.8所示的内存的未使用区域。i"口®®niBTOT*idre33«IMC3推荐四个

46、4:2:0每像素12位格式,FOURCC码如下:IMC2IMC4YV12NV122来进在所有这些格式中,色度频道在水平方向和垂直方向上都要以系数行再次采样。IMC2此格式与IMC1相同,只是V(Cr)和U(Cb)行在半跨距边界处进行了交错。换句话说,就是色度区域中的每个完整跨距行都以一行V样例开始,然后是一行在下一个半跨距边界处开始的U样例。此布局与IMC1相比,能够更加高效地利用地址空间。它的色度地址空间缩小了一半,因此整体地址空间缩小了25%。在各个4:2:0格式中,IMC2是第二首选格式,排在NV12之后。IMC4此格式与YV12所有Y样例都会作为不带正负号的char值组成的数组首先显示

47、在内存中此数组后面紧接着所有V(Cr)样例。V平面的跨距为Y平面跨距的一半,面包含的行为Y平面包含行的一半。V平面后面紧接着所有U(Cb)样例,它的跨距和行数与NV12所有Y样例都会作为由不带正负号的char值组成的数组首先显示在内存中,并且行数为偶数。Y平面后面紧接着一个由不带正负号的char值组成的数组,其中包含了打包的U(Cb)和V(Cr)样例,如图2.13所示。当组合的U-V数组被视为一个由little-endianWORD值组成的数组时,LSB包含U值,MSB包含V值。NV12是用于DirectXVA的首选4:2:0像素格式。预期它会成为支持4:2:0视频的DirectXVA加速器的

48、中期要求。3YCbCr视频存储格式YCbCr其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。人的肉眼对视频的Y分量更敏感,因此在通过对色度分量进行子采样来减少色度分量后,肉眼将察觉不到的图像质量的变化。主要的子采样格式有YCbCr4:2:0、YCbCr4:2:2和YCbCr4:4:4。4:2:0表示每4个像素有4个亮度分量,2个色度分量(YYYYCbCr),仅采样奇数扫描线,是便携式视频设备(MPEG-4)以及电视会议(H.263)最常用格式。4:2:2表示每4个像素有4个亮度分量,4个色度分量(YYYYCbCrCbCr),是DVD、数字电视、HDTV以及其它消费类视频设备的最常

49、用格式。4:4:4表示全像素点阵(YYYYCbCrCbCrCbCrCbCr),用于高质量视频应用、演播室以及专业视频产品。4YUV与YCbCr的对比两者与rgb之间换算公式的差异yuv<->rgbY'=0.299*R'+0.587*G'+0.114*B'U'=-0.147*R'-0.289*G'+0.436*B'=0.492*(B'-Y')V'=0.615*R'-0.515*G'-0.100*B'=0.877*(R'-Y')R'=Y'+1.

50、140*V'G'=Y'-0.394*U'-0.581*V'B'=Y'+2.032*U'yCbCr<->rgbY'=0.257*R'+0.504*G'+0.098*B'+16Cb'=-0.148*R'-0.291*G'+0.439*B'+128Cr'=0.439*R'-0.368*G'-0.071*B'+128R'=1.164*(Y-16)+1.596*(Cr'-128)两者来源上的差异YUV色彩模型来源于RG

51、B模型。该模型的特点是将亮度和色度分离开,从而适合于图像处理领域。颜色模型用于模拟彩色电视广播。YCbC横型来源于YUV模型。YCbC是一个的YUV色彩空间缩放和偏移的版本应用:数字视频,ITU-RBT.601T推荐标准。5颜色空间和色度采样率转换本节提供了在YUV和RGB之间进行转换的指南,以及在某些不同YUV格式之间进行转换的指南。在本节中,我们会以两个RGB编码方案为例:8位计算机RGB和studio视频RGB,前者也称为sRGB或全范围”RGB后者也称为带有头空间和脚空间的RGB。这两个方案的定义如下:计算机RGB对于每个红色、绿色和蓝色样例都使用8位。黑色表示为R=G=B=0白色则表

52、示为R=G=B=255Studio视频RGB对于每个红色、绿色和蓝色样例使用一定的位数,即N位,其中N为8或更大的数字。Studio视频RGB使用的缩放系数与计算机RGB使用的缩放系数不同,它具有一个偏移量。黑色表示为R=G=B=16*2n-8,白色则表示为R=G=B=235*2-8。但是,实际的值可能不在此范围之内。Studio视频RGB是Windows中视频的首选RGB定义,而计算机RGB则是非视频应用的首选RGB定义。在这两种形式的RGB中,色度座标都与在RGB原色定义的ITU-RBT.709中指定的一样。R、G和B的(x,y)座标分别为(0.64,0.33)、(0.30,0.60)和(

53、0.15,0.06)。基准白色为D65,座标为(0.3127,0.3290)。标称灰度系数为1/0.45(大名勺为2.2),精确的灰度系数在ITU-RBT.709中进行了详细定义。RGB和YUV之间的转换我们首先讲述RGB和4:4:4YUV之间的转换。要将4:2:0或4:2:2YUV转换为RGB我们建议首先将YUV数据转换为4:4:4YUV然后再将4:4:4YUV转换为RGBAYUV格式是一个4:4:4格式,它又t于每个Y、U和V样例都使用8位。对于某些应用,还可以使用每样例多于8位的位数定义YU对于数字视频,定义了从RGB到两个主要YUV的转换。这两个转换都基于称为ITU-RRecommen

54、dationBT.709的规范。第一个转换是BT.709中定义用于50-Hz的较早的YUV格式。它与在ITU-RRecommendationBT.601中指定的关系相同,ITU-RRecommendationBT.60也被称为它的旧名称CCIR601这种格式应该被视为用于标准定义TV分辨率(720x576)和更低分辨率视频的首选YUV格式。它的特征由下面两个常量Kr和Kb的值来定义:Kr=0.299Kb=0.114第二个转换为BT.709中定义用于60-Hz的较新YUV格式,应该被视为用于高于SDTV的视频分辨率的首选格式。它的特征由下面两个不同的常量值来定义:Kr=0.2126Kb=0.07

55、22从RGB到YUV转换的定义以下列内容开始:L=Kr*R+Kb*B+(1-Kr-Kb)*G然后,按照下列方式获得YUV值:Y=floor(2A(M-8)*(219*(LN)/S+16)+0.5)U=clip3(0,2AM-1,floor(2A(M-8)*(112*(B-L)/(1-Kb)*S)+128)+0.5)V=clip3(0,2AM-1,floor(2A(M-8)*(112*(R-L)/(1-Kr)*S)+128)+0.5)M为每个YUV样例的位数(M>=8)。Z为黑电平变量。对于计算机RGB,Z等于00对于studio视频RGB,Z等于16*2n-8,其中N为每个RGB样例的位

56、数(N>=8)。S为缩放变量。对于计算机RGB,S等于255。对于studio视频RGB,S等于219*2N-80函数floor(x)返回大于或等于x的最大整数。函数clip3(x,y,z)的定义如下所示:clip3(x,y,z)=(z<x)?x:(z>y)?y:z)Y样例表示亮度,U和V样例分别表示偏向蓝色和红色的颜色偏差。Y的标称范围为16*2M-8到235*2M-8O黑色表示为16*2m-8,白色表示为235*2M-8。U和V的标称范围为16*2M-8至I240*2m-8,值128*2M-8表示中性色度。但是,实际的值可能不在这些范围之内。对于studio视频RGB形式

57、的输入数据,要使得U和V值保持在0到2M-1范围之内,必需进行剪辑操作。如果输入为计算机RGB,则不需要剪辑操作,这是因为转换公式不会生成超出此范围的值。这些都是精确的公式,没有近似值。本文后面的所有内容均派生自这些公式。示例:将RGB888转换为YUV4:4:4示例:将8位YUV转换为RGB888将4:2:0YUV转换为4:2:2YUV将4:2:2YUV转换为4:4:4YUV将4:2:0YUV转换为4:4:4YUV示例:将RGB888转换为YUV4:4:4在输入为计算机RGB,输出为8位BT.601YUV的情况下,我们相信前面一节中给出的公式可以按照下列公式进行合理近似计算:Y=(66*R+129*G+25*B+128)>>8)+16U=(-38*R-74*G+112*B+128)>>8)+128V=(112*R-94*G-18*B+128)>>8)+128这些公式使用精确度不大于8位(不带正负号)的系数计算出8位结果。中间结果需要最多16位的精确度。示例:将8位YUV转换为RGB888从

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论