日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

图像和流媒体 -- 详解YUV数据格式

發(fā)布時(shí)間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像和流媒体 -- 详解YUV数据格式 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如需轉(zhuǎn)載請(qǐng)注明出處:https://blog.csdn.net/qq_29350001/article/details/78283369

我們?cè)谥v FFmpeg 系列的時(shí)候,有提到 YUV 的。其中包括YUV播放器、簡(jiǎn)單的YUV格式介紹。

參看:FFmpeg再學(xué)習(xí) -- 視音頻基礎(chǔ)知識(shí)

接下來(lái)詳細(xì)研究一下:

參看:YUV -- 維基百科

參看:圖文詳解YUV420數(shù)據(jù)格式

一、YUV簡(jiǎn)介

YUV,是一種顏色編碼方法。常使用在各個(gè)影像處理元件中。 YUV在對(duì)照片或影片編碼時(shí),考慮到人類的感知能力,允許降低色度的帶寬。
YUV是編譯true-color顏色空間(color space)的種類,Y'UV, YUV, YCbCr,YPbPr等專有名詞都可以稱為YUV,彼此有重疊。“Y”表示明亮度(Luminance、Luma),“U”和“V”則是色度、濃度(Chrominance、Chroma),Y′UV, YUV, YCbCr, YPbPr所指涉的范圍,常有混淆或重疊的情況。從歷史的演變來(lái)說(shuō),其中YUV和Y'UV通常用來(lái)編碼電視的模擬信號(hào),而YCbCr則是用來(lái)描述數(shù)位的影像信號(hào),適合影片與圖片壓縮以及傳輸,例如MPEG、JPEG。 但在現(xiàn)今,YUV通常已經(jīng)在電腦系統(tǒng)上廣泛使用。
Y'代表明亮度(luma; brightness)而U與V儲(chǔ)存色度(色訊; chrominance; color)部分; 亮度(luminance)記作Y,而Y'的prime符號(hào)記作伽瑪校正。
YUV Formats分成兩個(gè)格式:
緊縮格式(packed formats):將Y、U、V值儲(chǔ)存成Macro Pixels陣列,和RGB的存放方式類似。
平面格式(planar formats):將Y、U、V的三個(gè)分量分別存放在不同的矩陣中。

緊縮格式(packed format)中的YUV是混合在一起的,對(duì)于YUV4:4:4格式而言,用緊縮格式很合適的,因此就有了UYVY、YUYV等。

平面格式(planar formats)是指每Y分量,U分量和V分量都是以獨(dú)立的平面組織的,也就是說(shuō)所有的U分量必須在Y分量后面,而V分量在所有的U分量后面,此一格式適用于采樣(subsample)。平面格式(planar format)有I420(4:2:0)、YV12、IYUV等。

二、歷史

Y'UV的發(fā)明是由于彩色電視與黑白電視的過(guò)渡時(shí)期[1]。黑白視訊只有Y(Luma,Luminance)視訊,也就是灰階值。到了彩色電視規(guī)格的制定,是以YUV/YIQ的格式來(lái)處理彩色電視圖像,把UV視作表示彩度的C(Chrominance或Chroma),如果忽略C信號(hào),那么剩下的Y(Luma)信號(hào)就跟之前的黑白電視信號(hào)相同,這樣一來(lái)便解決彩色電視機(jī)與黑白電視機(jī)的相容問(wèn)題。Y'UV最大的優(yōu)點(diǎn)在于只需占用極少的帶寬。
因?yàn)閁V分別代表不同顏色信號(hào),所以直接使用R與B信號(hào)表示色度的UV。 也就是說(shuō)UV信號(hào)告訴了電視要偏移某象素的的顏色,而不改變其亮度。 或者UV信號(hào)告訴了顯示器使得某個(gè)顏色亮度依某個(gè)基準(zhǔn)偏移。 UV的值越高,代表該像素會(huì)有更飽和的顏色。
彩色圖像記錄的格式,常見(jiàn)的有RGB、YUV、CMYK等。彩色電視最早的構(gòu)想是使用RGB三原色來(lái)同時(shí)傳輸。這種設(shè)計(jì)方式是原來(lái)黑白帶寬的3倍,在當(dāng)時(shí)并不是很好的設(shè)計(jì)。RGB訴求于人眼對(duì)色彩的感應(yīng),YUV則著重于視覺(jué)對(duì)于亮度的敏感程度,Y代表的是亮度,UV代表的是彩度(因此黑白電影可省略UV,相近于RGB),分別用Cr和Cb來(lái)表示,因此YUV的記錄通常以Y:UV的格式呈現(xiàn)。

三、常用的YUV格式

為節(jié)省帶寬起見(jiàn),大多數(shù)YUV格式平均使用的每像素位數(shù)都少于24位元。主要的抽樣(subsample)格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和YCbCr 4:4:4。YUV的表示法稱為A:B:C表示法:
4:4:4表示完全取樣。
4:2:2表示2:1的水平取樣,垂直完全采樣。
4:2:0表示2:1的水平取樣,垂直2:1采樣。
4:1:1表示4:1的水平取樣,垂直完全采樣。
最常用Y:UV記錄的比重通常1:1或2:1,DVD-Video是以YUV 4:2:0的方式記錄,也就是我們俗稱的I420,YUV4:2:0并不是說(shuō)只有U(即Cb), V(即Cr)一定為0,而是指U:V互相援引,時(shí)見(jiàn)時(shí)隱,也就是說(shuō)對(duì)于每一個(gè)行,只有一個(gè)U或者V分量,如果一行是4:2:0的話,下一行就是4:0:2,再下一行是4:2:0...以此類推。至于其他常見(jiàn)的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等。

?

用三個(gè)圖來(lái)直觀地表示采集的方式吧,以黑點(diǎn)表示采樣該像素點(diǎn)的Y分量,以空心圓圈表示采用該像素點(diǎn)的UV分量。

先記住下面這段話,以后提取每個(gè)像素的YUV分量會(huì)用到。
YUV 4:4:4采樣,每一個(gè)Y對(duì)應(yīng)一組UV分量。
YUV 4:2:2采樣,每?jī)蓚€(gè)Y共用一組UV分量。?
YUV 4:2:0采樣,每四個(gè)Y共用一組UV分量。?

四、存儲(chǔ)方式

下面我用圖的形式給出常見(jiàn)的YUV碼流的存儲(chǔ)方式,并在存儲(chǔ)方式后面附有取樣每個(gè)像素點(diǎn)的YUV數(shù)據(jù)的方法,其中,Cb、Cr的含義等同于U、V。

(1) YUVY 格式 (屬于YUV422)

YUYV為YUV422采樣的存儲(chǔ)格式中的一種,相鄰的兩個(gè)Y共用其相鄰的兩個(gè)Cb、Cr,分析,對(duì)于像素點(diǎn)Y'00、Y'01 而言,其Cb、Cr的值均為 Cb00、Cr00,其他的像素點(diǎn)的YUV取值依次類推。?

(2) UYVY 格式 (屬于YUV422)

UYVY格式也是YUV422采樣的存儲(chǔ)格式中的一種,只不過(guò)與YUYV不同的是UV的排列順序不一樣而已,還原其每個(gè)像素點(diǎn)的YUV值的方法與上面一樣。

(3) YUV422P(屬于YUV422)

YUV422P也屬于YUV422的一種,它是一種Plane模式,即平面模式,并不是將YUV數(shù)據(jù)交錯(cuò)存儲(chǔ),而是先存放所有的Y分量,然后存儲(chǔ)所有的U(Cb)分量,最后存儲(chǔ)所有的V(Cr)分量,如上圖所示。其每一個(gè)像素點(diǎn)的YUV值提取方法也是遵循YUV422格式的最基本提取方法,即兩個(gè)Y共用一個(gè)UV。比如,對(duì)于像素點(diǎn)Y'00、Y'01 而言,其Cb、Cr的值均為 Cb00、Cr00。

(4)YV12,YU12格式(屬于YUV420)

YU12和YV12屬于YUV420格式,也是一種Plane模式,將Y、U、V分量分別打包,依次存儲(chǔ)。其每一個(gè)像素點(diǎn)的YUV數(shù)據(jù)提取遵循YUV420格式的提取方式,即4個(gè)Y分量共用一組UV。注意,上圖中,Y'00、Y'01、Y'10、Y'11共用Cr00、Cb00,其他依次類推。

(5)NV12、NV21(屬于YUV420)

NV12和NV21屬于YUV420格式,是一種two-plane模式,即Y和UV分為兩個(gè)Plane,但是UV(CbCr)為交錯(cuò)存儲(chǔ),而不是分為三個(gè)plane。其提取方式與上一種類似,即Y'00、Y'01、Y'10、Y'11共用Cr00、Cb00

(6)了解更多

想了解更多類型的存儲(chǔ)方式,參看:YUV Formats

中文的有人翻譯了,參看:V4L2文檔翻譯(十)

?

  • 2.6.1. Packed?YUV?formats
  • 2.6.2. V4L2_PIX_FMT_GREY (‘GREY’)
  • 2.6.3. V4L2_PIX_FMT_Y10 (‘Y10 ‘)
  • 2.6.4. V4L2_PIX_FMT_Y12 (‘Y12 ‘)
  • 2.6.5. V4L2_PIX_FMT_Y10BPACK (‘Y10B’)
  • 2.6.6. V4L2_PIX_FMT_Y16 (‘Y16 ‘)
  • 2.6.7. V4L2_PIX_FMT_Y16_BE (‘Y16 ‘ | (1 << 31))
  • 2.6.8. V4L2_PIX_FMT_Y8I (‘Y8I ‘)
  • 2.6.9. V4L2_PIX_FMT_Y12I (‘Y12I’)
  • 2.6.10. V4L2_PIX_FMT_UV8 (‘UV8’)
  • 2.6.11. V4L2_PIX_FMT_YUYV (‘YUYV’)
  • 2.6.12. V4L2_PIX_FMT_UYVY (‘UYVY’)
  • 2.6.13. V4L2_PIX_FMT_YVYU (‘YVYU’)
  • 2.6.14. V4L2_PIX_FMT_VYUY (‘VYUY’)
  • 2.6.15. V4L2_PIX_FMT_Y41P (‘Y41P’)
  • 2.6.16. V4L2_PIX_FMT_YVU420 (‘YV12’), V4L2_PIX_FMT_YUV420 (‘YU12’)
  • 2.6.17. V4L2_PIX_FMT_YUV420M (‘YM12’), V4L2_PIX_FMT_YVU420M (‘YM21’)
  • 2.6.18. V4L2_PIX_FMT_YUV422M (‘YM16’), V4L2_PIX_FMT_YVU422M (‘YM61’)
  • 2.6.19. V4L2_PIX_FMT_YUV444M (‘YM24’), V4L2_PIX_FMT_YVU444M (‘YM42’)
  • 2.6.20. V4L2_PIX_FMT_YVU410 (‘YVU9’), V4L2_PIX_FMT_YUV410 (‘YUV9’)
  • 2.6.21. V4L2_PIX_FMT_YUV422P (‘422P’)
  • 2.6.22. V4L2_PIX_FMT_YUV411P (‘411P’)
  • 2.6.23. V4L2_PIX_FMT_NV12 (‘NV12’), V4L2_PIX_FMT_NV21 (‘NV21’)
  • 2.6.24. V4L2_PIX_FMT_NV12M (‘NM12’), V4L2_PIX_FMT_NV21M (‘NM21’), V4L2_PIX_FMT_NV12MT_16X16
  • 2.6.25. V4L2_PIX_FMT_NV12MT (‘TM12’)
  • 2.6.26. V4L2_PIX_FMT_NV16 (‘NV16’), V4L2_PIX_FMT_NV61 (‘NV61’)
  • 2.6.27. V4L2_PIX_FMT_NV16M (‘NM16’), V4L2_PIX_FMT_NV61M (‘NM61’)
  • 2.6.28. V4L2_PIX_FMT_NV24 (‘NV24’), V4L2_PIX_FMT_NV42 (‘NV42’)
  • 2.6.29. V4L2_PIX_FMT_M420 (‘M420’)

五、YUV與RGB的轉(zhuǎn)換公式

參看:YUV -- 維基百科

這部分我沒(méi)看懂... ??

六、推薦一個(gè)工具

參看:Image Analyzer

參看:GSG:Debugging projects

參看:軟件操作演示

文章最后,是有視頻都哦!!可以下載下來(lái)看看。

?

  • Bayer?File:Bayer.zip
    • bayer720480_8of16_prop.txt: size 720 x 480 pixels, even B lines, GR/BG order, 8 bits out of 16 bits
    • bayer720480_10of16_prop.txt: size 720 x 480 pixels, even B lines, GR/BG order, 10 bits out of 16 bits
  • DaVinci HD?File:DaVinciHD.zip
  • NV12 Tiled?File:Nv12 tiled.zip
  • YUV 4:2:0 planar?File:Yuv420planar.zip
  • YUV 4:2:2 packed?File:Yuv422packed.zip
  • YUV 4:2:2 planar?File:Yuv422planar.zip

?

七、RGB 介紹

既然都提到RGB了,就簡(jiǎn)單講一下吧。

參看:三原色光模式 -- 維基百科

三原色光模式(RGB color model),又稱RGB顏色模型或紅綠藍(lán)顏色模型,是一種加色模型,將紅(Red)、綠(Green)、藍(lán)(Blue)三原色的色光以不同的比例相加,以產(chǎn)生多種多樣的色光。(且三原色的紅綠藍(lán)不可能用其他單色光合成)

三原色光的相加:紅光加綠光為黃光,黃光加藍(lán)光為白光

再有一個(gè)是 ?RGB顏色查詢對(duì)照表??

?

八、像素

最后,我要講一下像素,上面提到很多次了。

參看:分辨率和像素是什么關(guān)系? -- 知乎

像素即px,是畫(huà)面中最小的點(diǎn)(單位色塊)。像素的大小是沒(méi)有固定長(zhǎng)度值的,不同設(shè)備上1個(gè)單位像素色塊的大小是不一樣的。
分辨率=畫(huà)面水平方向的像素值 * 畫(huà)面垂直方向的像素值。分辨率可以分為兩方面:屏幕分辨率和圖像分辨率。

1. 屏幕分辨率: ? ??

例如,屏幕分辨率是1024×768,也就是說(shuō)設(shè)備屏幕的水平方向上有1024個(gè)像素點(diǎn),垂直方向上有768個(gè)像素點(diǎn)。像素的大小是沒(méi)有固定長(zhǎng)度的,不同設(shè)備上一個(gè)單位像素色塊的大小是不一樣的。 ? ?例如,尺寸面積大小相同的兩塊屏幕,分辨率大小可以是不一樣的,分辨率高的屏幕上面像素點(diǎn)(色塊)就多,所以屏幕內(nèi)可以展示的畫(huà)面就更細(xì)致,單個(gè)色塊面積更小。而分辨率低的屏幕上像素點(diǎn)(色塊)更少,單個(gè)像素面積更大,可以顯示的畫(huà)面就沒(méi)那么細(xì)致。

2. 圖像分辨率: ? ?

例如,一張圖片分辨率是500x200,也就是說(shuō)這張圖片在屏幕上按1:1放大時(shí),水平方向有500個(gè)像素點(diǎn)(色塊),垂直方向有200個(gè)像素點(diǎn)(色塊)。 ? ?在同一臺(tái)設(shè)備上,圖片分辨率越高,這張圖片1:1放大時(shí),圖片面積越大;圖片分辨率越低,這張圖片1:1縮放時(shí),圖片面積越小。(可以理解為圖片的像素點(diǎn)和屏幕的像素點(diǎn)是一個(gè)一個(gè)對(duì)應(yīng)的)。 ? ?但是,在屏幕上把圖片超過(guò)100%放大時(shí),為什么圖片上像素色塊也變的越大,其實(shí)是設(shè)備通過(guò)算法對(duì)圖像進(jìn)行了像素補(bǔ)足,我們把圖片放的很大后看到的一塊一塊的方格子,雖然理解為一個(gè)圖像像素,但是其實(shí)是已經(jīng)補(bǔ)充了很多個(gè)屏幕像素;同理,把圖片小于100%縮小時(shí),也是通過(guò)算法將圖片像素進(jìn)行減少。 ? ??

最后,雖然不同設(shè)備上像素塊大小會(huì)不一樣,但是同一臺(tái)硬件設(shè)備上的屏幕分辨率、像素塊大小是不會(huì)變的。PC電腦上之所以可以調(diào)整屏幕分辨率,其實(shí)也是通過(guò)算法轉(zhuǎn)換了。

?

舉個(gè)例子吧,我用的華為P8手機(jī)(是該換了...),看看其參數(shù)。

這里就有攝像頭參數(shù)介紹了,后置攝像頭 1300萬(wàn)像素。或者說(shuō)?vivo X9前置2000萬(wàn)柔光雙攝,這個(gè)廣告熟不熟悉。

1300萬(wàn)像素啥意思呢?

打開(kāi)手機(jī)相機(jī)設(shè)置,查看分辨率,你可以看到有如下幾個(gè)選項(xiàng)。

其中圖片大小最大的 13M 4160x3120(4:3) 即攝像頭最大像素

4160x3120 = 12979200 = 1300 萬(wàn)像素

如需轉(zhuǎn)載請(qǐng)注明出處:https://blog.csdn.net/qq_29350001/article/details/78283369

?

總結(jié)

以上是生活随笔為你收集整理的图像和流媒体 -- 详解YUV数据格式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。