YUV 像素格式

來源:互聯網
上載者:User
 
 1簡介

YUV是種顏色編碼方法,是彩色電視為了相容黑白電視而發展起來的。在現代彩色電視系統中,通常採用三管彩色攝影機或彩色CCD攝影機進行取像,然後把取得的彩色映像訊號經分色、分別放大校正後得到RGB,再經過矩陣變換電路得到亮度訊號Y和兩個色差訊號R-Y(即U)、B-Y(即V),然後對這三個訊號分別進行編碼。Y就是所謂的流明(luminance),表示光的濃度且為非線性,使用伽馬修正(gamma correction)編碼處理,而CB和CR則為藍色和紅色的濃度位移量成份。

 

2 YUV採樣格式

  (1) YUV 4:4:4

  YUV三個通道的抽樣率相同,因此在產生的映像裡,每個象素的三個分量資訊完整(每個分量通常8位元),經過8位元量化之後,未經壓縮的每個像素佔用3個位元組。

  下面的四個像素為: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

  存放的碼流為: Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3

  (2) YUV 4:2:2

  每個色差通道的抽樣率是亮度通道的一半,所以水平方向的色度抽樣率只是4:4:4的一半。對非壓縮的8位元量化的映像來說,每個由兩個水平方向相鄰的像素組成的宏像素需要佔用4位元組記憶體。

  下面的四個像素為:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

  存放的碼流為:Y0 U0 Y1 V1 Y2 U2 Y3 V3

  映射出像素點為:[Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3]

  (3) YUV 4:1:1

  4:1:1的色度抽樣,是在水平方向上對色度進行4:1抽樣。對於低端使用者和消費類產品這仍然是可以接受的。對非壓縮的8位元量化的視頻來說,每個由4個水平方向相鄰的像素組成的宏像素需要佔用6位元組記憶體。

  下面的四個像素為: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

  存放的碼流為: Y0 U0 Y1 Y2 V2 Y3

  映射出像素點為:[Y0 U0 V2] [Y1 U0 V2] [Y2 U0 V2] [Y3 U0 V2]

  (4)YUV4:2:0

  4:2:0並不意味著只有Y,Cb而沒有Cr分量。它指得是對每行掃描線來說,只有一種色度分量以2:1的抽樣率儲存。相鄰的掃描行儲存不同的色度分量,也就是說,如果一行是4:2:0的話,下一行就是4:0:2,再下一行是4:2:0...以此類推。對每個色度分量來說,水平方向和豎直方向的抽樣率都是2:1,所以可以說色度的抽樣率是4:1。

  下面八個像素為:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

   [Y5 U5 V5] [Y6 U6 V6] [Y7U7 V7] [Y8 U8 V8]

  存放的碼流為:Y0 U0 Y1 Y2 U2 Y3 Y5 V5 Y6 Y7 V7 Y8

  映射出的像素點為:[Y0 U0 V5] [Y1 U0 V5] [Y2 U2 V7] [Y3 U2 V7]

   [Y5 U0 V5] [Y6 U0 V5] [Y7U2 V7] [Y8 U2 V7]

 3 YUV 儲存格式

YUV格式分為packed格式和planar格式,packed格式會將YUV資料按順序放進數組裡,planar則分將YUV的資料分為三部分放進數組裡,即先放Y部分的資料,再放U,接著是V的資料。

3.1 Packed YUV Formats

Label

Bits per pixel

Description

AYUV

32

Combined YUV and alpha

CLJR

8

Cirrus Logic format with 4 pixels packed into a u_int32. A form of YUV 4:1:1 wiht less than 8 bits per Y, U and V sample.

cyuv

16

Essentially a copy of UYVY except that the sense of the height is reversed - the image is upside down with respect to the UYVY version.

GREY

8

Apparently a duplicate of Y800 (and also, presumably, "Y8  ")

IRAW

?

Intel uncompressed YUV. I have no information on this format - can you help?

IUYV

16

Interlaced version of UYVY (line order 0, 2, 4,....,1, 3, 5....) registered by Silviu Brinzei of LEAD Technologies.

IY41

12

Interlaced version of Y41P (line order 0, 2, 4,....,1, 3, 5....) registered by Silviu Brinzei of LEAD Technologies.

IYU1

12

12 bit format used in mode 2 of the IEEE 1394 Digital Camera 1.04 spec. This is equivalent to Y411

IYU2

24

24 bit format used in mode 0 of the IEEE 1394 Digital Camera 1.04 spec

HDYC

16

YUV 4:2:2 (Y sample at every pixel, U and V sampled at every second pixel horizontally on each line). A macropixel contains 2 pixels in 1 u_int32. This is a suplicate of UYVY except that the color components use the BT709 color space (as used in HD video).

UYNV

16

A direct copy of UYVY registered by NVidia to work around problems in some old codecs which did not like hardware which offered more than 2 UYVY surfaces.

UYVP

24?

YCbCr 4:2:2 extended precision 10-bits per component in U0Y0V0Y1 order. Registered by Rich Ehlers of Evans & Sutherland. (Awaiting confirmation of component packing structure)

UYVY

16

YUV 4:2:2 (Y sample at every pixel, U and V sampled at every second pixel horizontally on each line). A macropixel contains 2 pixels in 1 u_int32.

V210

32

10-bit 4:2:2 YCrCb equivalent to the Quicktime format of the same name.

V422

16

I am told that this is an upside down version of UYVY.

V655

16?

16 bit YUV 4:2:2 format registered by Vitec Multimedia. I have no information on the component ordering or packing.

VYUY

?

ATI Packed YUV Data (format unknown but you can get hold of a codec supporting ithere)

Y422

16

Direct copy of UYVY as used by ADS Technologies Pyro WebCam firewire camera.

YUY2

16

YUV 4:2:2 as for UYVY but with different component ordering within the u_int32 macropixel.

YUYV

16

Duplicate of YUY2

YUNV

16

A direct copy of YUY2 registered by NVidia to work around problems in some old codecs which did not like hardware which offered more than 2 YUY2 surfaces.

YVYU

16

YUV 4:2:2 as for UYVY but with different component ordering within the u_int32 macropixel.

Y41P

12

YUV 4:1:1 (Y sample at every pixel, U and V sampled at every fourth pixel horizontally on each line). A macropixel contains 8 pixels in 3 u_int32s.

Y411

12

YUV 4:1:1 with a packed, 6 byte/4 pixel macroblock structure.

Y211

8

Packed YUV format with Y sampled at every second pixel across each line and U and V sampled at every fourth pixel.

Y41T

12

Format as for Y41P but the lsb of each Y component is used to signal pixel transparency .

Y42T

16

Format as for UYVY but the lsb of each Y component is used to signal pixel transparency .

YUVP

24?

YCbCr 4:2:2 extended precision 10-bits per component in Y0U0Y1V0 order. Registered by Rich Ehlers of Evans & Sutherland.

Y800

8

Simple, single Y plane for monochrome images.

Y8

8

Duplicate of Y800 as far as I can see.

Y16

16

16-bit uncompressed greyscale image.

 UYVY儲存結構

UYVY 是一種最常用的 YUV 4:2:2 格式,其資料排列如下:

  

3.2 Planar YUV Formats

Label

Bits per pixel

Description

YVU9

9

8 bit Y plane followed by 8 bit 4x4 subsampled V and U planes. Registered by Intel.

YUV9

9?

Registered by Intel., this is the format used internally by Indeo video code

IF09

9.5

As YVU9 but an additional 4x4 subsampled plane is appended containing delta information relative to the last frame. (Bpp is reported as 9)

YV16

16

8 bit Y plane followed by 8 bit 2x1 subsampled V and U planes.

YV12

12

8 bit Y plane followed by 8 bit 2x2 subsampled V and U planes.

I420

12

8 bit Y plane followed by 8 bit 2x2 subsampled U and V planes.

IYUV

12

Duplicate FOURCC, identical to I420.

NV12

12

8-bit Y plane followed by an interleaved U/V plane with 2x2 subsampling

NV21

12

As NV12 with U and V reversed in the interleaved plane

IMC1

12

As YV12 except the U and V planes each have the same stride as the Y plane

IMC2

12

Similar to IMC1 except that the U and V lines are interleaved at half stride boundaries

IMC3

12

As IMC1 except that U and V are swapped

IMC4

12

As IMC2 except that U and V are swapped

CLPL

12

Format similar to YV12 but including a level of indirection.

Y41B

12?

Weitek format listed as "YUV 4:1:1 planar". I have no other information on this format.

Y42B

16?

Weitek format listed as "YUV 4:2:2 planar". I have no other information on this format.

Y800

8

Simple, single Y plane for monochrome images.

Y8

8

Duplicate of Y800 as far as I can see.

CXY1

12

Awaiting clarification of format.

CXY2

16

Awaiting clarification of format.

Y42B儲存結構

YCbCr 4:2:2 的方式儲存

 4 YUV與RGB的轉換關係

yuv422 planar to rgb565
轉換公式:
R=Y+1.4075*(V-128)
G=Y-0.3455*(U-128) - 0.7169*(V-128)
B=Y+1.779*(U-128)
為了加快運算速度,採用下面的整形計演算法:
u = YUVdata[UPOS] - 128;
v = YUVdata[VPOS] - 128;

rdif = v + ((v * 103) >> 8);
invgdif = ((u * 88) >> 8) +((v * 183) >> 8);
bdif = u +( (u*198) >> 8);

r = YUVdata[YPOS] + rdif;
g = YUVdata[YPOS] - invgdif;
b = YUVdata[YPOS] + bdif;
r=r>255?:255:(r<0:?0:r);
g=g>255?:255:(g<0:?0:g);
b=b>255?:255:(b<0:?0:b);
以上得到的是rgb888的資料,再將rgb888轉為rgb555
RGBdata[1] =( (r & 0xF8) | ( g >> 5) );
RGBdata[0] =( ((g & 0x1C) << 3) | ( b >> 3) );
YUV422 Planar  FORMAT size:
size=width*height*2;
YSIZE = size/2;
USIZE = size/4;
VSIZE = size/4;
YPOS=0;
UPOS=YPOS + size/2;
VPOS=UPOS + size/4;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.