在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文搞懂圖像RGB和YUV編碼及相互轉換

硬件花園 ? 來源:硬件花園 ? 作者:硬件花園 ? 2023-05-17 08:37 ? 次閱讀

1 色彩空間和色彩模型

色彩是人眼對于不同頻率的光線的不同感受。色彩既是客觀存在的,但又是主觀感知的,所以不同人對色彩的感知會存在差異。為了規范色彩的表述,引入了色彩空間一詞。 “色彩空間”源于西方的“Color Space”,又稱作“色域”,色彩學中,人們建立了多種色彩模型,以一維、二維、三維甚至四維空間坐標來表示某一色彩,這種坐標系統所能定義的色彩范圍即色彩空間。我們經常用到的色彩空間主要有RGB、CMYK、Lab等。

08b0055e-f44b-11ed-9c1d-dac502259ad0.png

色彩空間

色彩模型是描述使用一組值(通常使用三個、四個值或者顏色成分)表示顏色方法的抽象數學模型。例如三原色光模式(RGB) 印刷四分色模式(CMYK) 都是色彩模型。

不同的色彩模型的差異和優劣不在本文討論范圍之內。本文主要討論YUVRGB兩種色彩模型的相關知識。

2 RGB色彩模型

我們知道, “色彩” 是人類大腦對事物的一種主觀感覺,為了將這種 “感性” 進行 “理性” 描述,數學家們創建了 RGB 模型的概念:通過三個數的組合(色值)來表述某一種特定的顏色,從而人類可以將這種感性的色彩感受進行理性地表達和傳遞。

2.1 RGB三原色

08b87086-f44b-11ed-9c1d-dac502259ad0.pngRGB和CMY

rgb(255, 0, 0) 代表純紅色,rgb(0, 255, 0) 代表純綠色,rgb(0, 0, 255) 代表純藍色,而 rgb(255, 255, 0) 代表純黃色(光學中紅色和綠色加法混合會呈現黃色)。

08c0ae86-f44b-11ed-9c1d-dac502259ad0.png

RGB三原色 通過 RGB 色彩模型,我們最多能表示出256x256x256=16777216種不同的色值,也就是我們常說的1600萬色。

如果我們創建一個三維坐標系,三個軸的代表字母由X、Y、Z換成 R、G 和 B,即用 Red 代表X軸,Green代表Y軸,Blue代表Z軸,采用光學加法混色的方式構建這個立方空間的話,就形成了一個基于RGB模型的色彩空間了。

08c83408-f44b-11ed-9c1d-dac502259ad0.png

RGB三原色立體空間

我們知道通過 rgb(x, y, z)這種方式構建的每一個顏色點,都對應于這個立方體中的某一個點,也就是說每一種顏色都被包含在我們的色彩空間之內。

2.2RGB顏色模型存在的問題

因為在自然環境下獲取的圖像容易受自然光照、遮擋和陰影等情況的影響,即對亮度比較敏感,而RGB 顏色空間的三個分量都與亮度密切相關,即只要亮度改變,三個分量都會隨之相應地改變。

另外,RGB 顏色空間是一種均勻性較差的顏色空間,人眼對于這三種顏色分量的敏感程度是不一樣的,在單色中,人眼對紅色最不敏感,藍色最敏感,如果顏色的相似性直接用歐氏距離來度量,其結果與人眼視覺會有較大的偏差。對于某一種顏色,我們很難推測出較為精確的三個分量數值來表示。

而且,在視頻領域如果使用RGB存儲的話,視頻數據會非常大。

比如有一個1080p(1920*1080)分辨率、幀率為30幀的視頻,如果使用RGB進行存儲的話,僅僅一分鐘的視頻就能達到 (1920*1080*8*30*60)bit(約等于27G)。這明顯是不現實的,所以我們需要對視頻數據進行壓縮。

基于以上兩點,所以我們需要一種數據相關性沒那么強的顏色編碼系統或色彩空間,而YUV正好就是這樣,從下面的介紹中我們就會明白。YUV能夠方便地編碼和傳輸,并且減少帶寬占用和信息出錯。

3 YUV色彩模型

我們先回到人類剛擁有彩色電視的時候,在那段從黑白電視向彩色電視的過渡期,電視系統需要提供對黑白電視的兼容性(在一文搞懂HDMI/DP/DVI/VGA顯示器接口歷史演進提到過),另外還要考慮到電視廣播系統那有限的帶寬,如果使用RGB顏色模型,那么傳輸帶寬就是原來的三倍。

所以能夠兼容黑白電視系統和更為節省帶寬的YUV色彩模型就被發明了出來,它與RGB之間是無損轉換的。第4節,會介紹不同標準下YUV與RGB如何相互轉換。

因為相較于色彩,人眼對于亮度信息更為敏感,所以可以在色彩信息上面進行取舍來達到節約大小的目的,通過引入色度二次采樣(subsampling)的方式,YUV對原始的RGB信息進行重編碼。

亮度信息與色彩信息相分離的設計使得YUV可以減少一些色彩信息以達到節省傳輸帶寬和保存體積的目的。這也是YUV顏色模型相比于RGB顏色模型的優勢所在。

YUV同樣使用三個分量來存儲數據,他們分別是

Y:用于表示 明亮度(Luminance或Luma);

U:用于表示色度(Chrominance或Chroma);

V:用于表示色度(Chrominance或Chroma);

Y其實就是我們常說的灰度值,是圖片的總體輪廓,而U和V則用于描述色彩顏色和顏色飽和度。08cf42e8-f44b-11ed-9c1d-dac502259ad0.png

YUV圖像,從上到下依次為原圖、亮度Y、色度U、色度V。

一張色彩艷麗的圖片如果存儲成YUV格式的話,Y就是這張圖的黑白照、UV就是涂上顏色。

08d81436-f44b-11ed-9c1d-dac502259ad0.png

YUV彩色圖像

08e0d2a6-f44b-11ed-9c1d-dac502259ad0.png

YUV黑白圖像

3.1 YUV圖像處理流水線pipeline

08e6ca9e-f44b-11ed-9c1d-dac502259ad0.png

YUV圖像處理流水線

3.2 YUV色度抽樣方式

常見的YUV圖像色度抽樣方式有如下三種:YUV 444、YUV 422、YUV420。

不同類型之間的主要區別是使用了不同的方式進行U、V分量的采樣。08ec348e-f44b-11ed-9c1d-dac502259ad0.png

YUV采樣方式

如上圖所示,其中實心黑點表示像素點的Y分量,空心圓圈表示采用該像素點的UV分量。

可見:

YUV 444:每個Y分量分別對應一個U分量和一個V分量

YUV 422:每兩個Y分量共用一個U分量和一個V分量

YUV 420:每四個Y分量共用一個U分量和一個V分量

08f20954-f44b-11ed-9c1d-dac502259ad0.png

YUV色度抽樣方式

YUV444和RGB顏色模型的圖像大小是一樣的,并沒有節省存儲空間。當RGB圖像轉換為YUV圖像時,也是先轉換為YUV444采樣方式的圖像。

YUV42和RGB顏色模型圖像大小相比,節省了三分之一的存儲空間,在傳輸時占用的帶寬也會隨之減少。

YUV420采樣方式,Y平面的信息完全保留,而UV這兩個色度平面的信息交錯保留,并且精度只有Y平面的一半,最終圖像、視頻的體積也就少了很多,而畫質損失實際是被控制在一個合理的范圍內。

由此,可得出對于一張1280*720大小的圖片,采用YUV420采樣比YUV 422、YUV444、RGB采樣的圖像節省的空間最大,所以現在最常見的就是YUV420采樣方式。

3.3 YUV的存儲方式

YUV有packed(打包)和 planar(平面)兩種存儲方式。

packed :packed格式是先連續存儲所有的Y分量,然后依次交叉儲存U、V分量;

planar:planar格式也會先連續存儲所有的Y分量,但planar會先連續存儲U分量的數據,再連續存儲V分量的數據,或者先連續存儲V分量的數據,再連續存儲U分量的數據;將YUV分量分別存儲到矩陣,每一個分量矩陣稱為一個平面。

3.4 YUV顏色編碼格式

由于色度抽樣方式和存儲方式的不同,YUV衍生出很多種格式。

注意下文中所述,YUV和YCbCr對應關系,Y對應Y,U對應Cb,V對應Cr。

3.4.1基于YUV422采樣的格式

YUYV格式和UYVY格式采用打包packed存儲方式。

YVUV格式

08f948c2-f44b-11ed-9c1d-dac502259ad0.png

YVUV為YUV422采樣的存儲格式,相鄰的兩個Y共用其相鄰的兩個Cb、Cr。對于像素點Y’00、Y’01而言,其Cb、Cr的值均為Cb00、Cr00,其他的像素點YUV取值依此類推。

UYVY格式

08fee3ae-f44b-11ed-9c1d-dac502259ad0.png

UYVY格式與YVUV不同的是,UV即Cb、Cr排列順序不一樣,還原其每個像素點的YUV值的方法與上面一樣。

YUV422P格式

YUV422P格式,又叫做I422,采用的是平面格式進行存儲,先存儲所有的Y分量,再存儲所有的U分量,再存儲所有的V分量。

090db80c-f44b-11ed-9c1d-dac502259ad0.png

3.4.2.基于YUV420采樣的格式

YUV420是以平面方式(planar)存儲,色度抽樣為40的色彩編碼格式。其中YUV420P為三平面存儲,YUV420SP為兩平面存儲。

常見的yuv格式列表如下:

I420: YYYYYYYY UU VV =>YUV420P,主要用來遠程傳輸

YV12: YYYYYYYY VV UU =>YUV420P,先Y再V再UYU12: YYYYYYYY UU VV =>YUV420P,先Y再U再V

0912da9e-f44b-11ed-9c1d-dac502259ad0.png

YV12和YU12,分別將Y、U、V打包,依次存儲。其中每一個像素點的YUV數據提取遵循YUV420格式的提取方式,即4個Y分量共用一組UV。注意,上圖中,Y’00、Y’01、 Y’10、Y’11共用Cb00、Cr00,其他依此類推。

NV12: YYYYYYYY UVUV =>YUV420SP //IOS中有的模式

NV21: YYYYYYYY VUVU =>YUV420SP //安卓Camera默認格式

0918e4c0-f44b-11ed-9c1d-dac502259ad0.png

NV12和UV21是一種兩平面存儲方式,Y為一個平面,交錯的UV為另一個平面。提取方式與YU12和YV12類似,即Y’00、Y’01、 Y’10、Y’11共用Cb00、Cr00,其他依此類推。

091ed7c2-f44b-11ed-9c1d-dac502259ad0.png

4YUV與RGB之間的轉換

YUV與RGB之間的轉換是存在標準的,常見的標準有:

ITU-R BT.601(標清)

ITU-R BT.709(高清)

ITU-R BT.2020(超高清)

不同的標準有不同的轉換公式,同時還要區分不同的Color Range。Color Range用于指定RGB分量的取值范圍,可分為Full Range(取值范圍為0255)和Limited Range(取值范圍為16235)。

BT.601, LimitedRange, which is the standard for SDTV(標清數字電視)

RGB —> YUV

Y = 0.299R+0.587G+0.114B

V = 0.713(R?Y)=0.500R?0.419G?0.081B

U = 0.564(B?Y)=?0.169R?0.331G+0.500B

YUV —> RGB

R = 1.164Y+1.596V-0.871;

G = 1.164Y-0.813V-0.391U+0.529;

B = 1.164Y+2.018U-1.0729;

BT.601, Full Range

RGB —> YUV

Y = 0.299 * R + 0.587 * G + 0.114 * B

V = -0.169 * R - 0.331 * G + 0.500 * B

U = 0.500 * R - 0.439 * G - 0.081 * B

YUV —> RGB

R = Y + 1.400V - 0.7

G = Y - 0.343U - 0.711V + 0.526

B = Y + 1.765U - 0.883

BT.709, which isthe standard for HDTV(高清電視)

RGB —> YUV

Y = 0.0627 + 0.183 * R + 0.614 * g + 0.062 * b

U = 0.5 - 0.101 * R - 0.339 * g + 0.439 * b

V = 0.5 + 0.439 * R - 0.399 * g - 0.040 * b

YUV —> RGB

R = 1.164Y + 1.739V - 0.97

G = 1.164Y - 0.213U - 0.533V + 0.301

B = 1.164Y + 2.112U - 1.129

接下來,以圖像處理課程里面經常會出現的一張圖片,作為示例,演示YUV與RGB之間的轉換。

1. 從YUV420P圖像中提取Y、U、V分量

09266d66-f44b-11ed-9c1d-dac502259ad0.png

YUV420P圖像

092f4b34-f44b-11ed-9c1d-dac502259ad0.png從左往右依次為Y、U、V分量
  1. 2.將YUV420P圖像轉換為RGBA8888圖像

09440902-f44b-11ed-9c1d-dac502259ad0.pngYUV 圖像 094f3174-f44b-11ed-9c1d-dac502259ad0.pngYUV轉換為RGBA8888

碼字不易,文末“分享”、“收藏”、”和“在看支持下

《一文搞懂》系列文章

一文搞懂HDMI/DP/DVI/VGA顯示器接口歷史演進一文搞懂USB各個版本的歷史演進一文搞懂高速TIA跨阻放大器設計一文搞懂電阻,這篇講得很全面,建議收藏一文搞懂共模電感原理一文搞懂MLCC電容的特性及生產工藝流程一文搞懂電感Isat、Irms以及測量方法

本號對所有文章陳述的觀點均保持中立,文章僅供讀者交流學習。資訊、圖片來源網絡,版權歸原作者所有,侵權請聯系刪除。


095c14ca-f44b-11ed-9c1d-dac502259ad0.png喜歡就關注咯!09621212-f44b-11ed-9c1d-dac502259ad0.png

關注我,回復【交流群】,加入內部技術交流群。

碼字不易,“分享”、“收藏”、”和“在看支持下


審核編輯黃宇


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • RGB
    RGB
    +關注

    關注

    4

    文章

    800

    瀏覽量

    58613
  • YUV
    YUV
    +關注

    關注

    0

    文章

    11

    瀏覽量

    2897
收藏 人收藏

    評論

    相關推薦

    搞懂圖像RGBYUV編碼相互轉換

    ”源于西方的“Color Space”,又稱作“色域”,色彩學中,人們建立了多種色彩模型,以維、二維、三維甚至四維空間坐標來表示某色彩,這種坐標系統所能定義的色彩范圍即色彩空間。我們經常用到的色彩空間主要有RGB、CMYK、
    的頭像 發表于 06-28 08:39 ?1.1w次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>搞懂</b><b class='flag-5'>圖像</b><b class='flag-5'>RGB</b>和<b class='flag-5'>YUV</b><b class='flag-5'>編碼</b>及<b class='flag-5'>相互轉換</b>

    RGB-YUV轉換的Verilog程序

    RGB-YUV轉換的Verilog程序
    發表于 08-12 16:22

    字符 數字相互轉換

    很慚愧,俺對基礎的東西不是很了解,數字 1和字符 ‘1’ 怎么相互轉換 ,因為在LCD1602和TFT彩屏顯示涉及到相互轉換,總是弄不清楚,請大蝦給科普下,‘0’是代表字符 0 嗎?
    發表于 05-26 11:22

    基于FPGA的RGB2YUV圖像增強、YUV2RGBIP仿真實例

    `基于FPGA的RGB2YUV圖像增強、YUV2RGBIP仿真實例AT7_Xilinx開發板(USB3.0+LVDS)資料共享騰訊鏈接:https://share.weiyun.com
    發表于 08-12 18:50

    字符數字相互轉換‘0’是代表字符0嗎?

    很慚愧,俺對基礎的東西不是很了解,數字 1和字符 ‘1’ 怎么相互轉換 ,因為在LCD1602和TFT彩屏顯示涉及到相互轉換,總是弄不清楚,請大蝦給科普下,‘0’是代表字符 0 嗎?為什么 1+‘0’ 就轉換為字符1了呢?字符1
    發表于 03-13 03:59

    如何實現了SPI/ASI的相互轉換

    如何實現了SPI/ASI的相互轉換
    發表于 06-08 06:32

    H264編碼如何將RGBYUV格式?

    您好,我正在使用 Raw 傳感器開發 IMX8MM。我已經完成了 YUV 格式的編碼 (h264),同樣我需要使用 RGB 在 h264 上流式傳輸。有沒有人使用 h264 將 rgb
    發表于 03-16 07:23

    HEX文件和BIN文件相互轉換的軟件

    HEX文件和BIN文件相互轉換的軟件:
    發表于 09-13 15:28 ?380次下載
    HEX文件和BIN文件<b class='flag-5'>相互轉換</b>的軟件

    各種進制相互轉換

    各種進制相互轉換 1、其它進制轉換為十進制  方法是:將其它進制按權位展開,然后各項相加,就得到相應的十進制數。
    發表于 09-19 11:29 ?3898次閱讀
    各種進制<b class='flag-5'>相互轉換</b>

    數模、模數相互轉

    數模、模數相互轉化數模、模數相互轉化數模、模數相互轉
    發表于 01-15 15:07 ?8次下載

    實現多線程IP和DomainName相互轉換_Delphi教程

    Delphi教程實現多線程IP和DomainName相互轉換,很好的Delphi學習資料。
    發表于 03-16 14:58 ?7次下載

    yuv444、yuv422、yuv420之間的關系和轉換

    先來說說YUV信號: 準確來說,YUV種顏色編碼方法,而yuv信號是由RGB經過矩陣變換電路
    發表于 01-16 18:40 ?2123次閱讀

    什么是YUV

    簡單的講YUV圖像和視頻的編碼方式,RGB通過三種顏色來表達現實世界中的各種顏色,YUV
    的頭像 發表于 03-03 09:50 ?1819次閱讀
    什么是<b class='flag-5'>YUV</b>

    YUVRGB是如何進行轉換

    首先要明確待轉換格式和目標格式的特點和相互轉換關系,這是編程實現轉換的核心。對于 RGBYUV 的過程,我們要首先拿到
    的頭像 發表于 07-30 10:06 ?2009次閱讀

    衛星通話和網絡通話如何相互轉換

    衛星通話和網絡通話如何相互轉換? 在當今信息化社會,通信和信息的傳播變得越來越發達。無線通信,尤其是衛星通信的出現,極大地改變了人們之間的通信方式。人們在地球上可以使用網絡通話和短信,也可以通過
    的頭像 發表于 08-30 17:27 ?1814次閱讀
    主站蜘蛛池模板: 5151四虎永久在线精品免费| www.av片| 三级不卡| 日本高清www| 欧美成网| 国产精品美女在线| 综合网视频| 三级黄网| 成人一级网站| 成人免费看黄网站yyy456| 轻点灬大ji巴太大太深了| 亚洲天天做日日做天天看2018| 亚洲成人网在线| 日本三级在线视频| 久久99热狠狠色精品一区| a亚洲天堂| 日本最黄视频| 亚洲hhh| 午夜a视频| 五月六月伊人狠狠丁香网| 七月婷婷精品视频在线观看| 国产亚洲精品自在久久77| 五月天婷婷免费观看视频在线| 久久国产精品系列| xxxx日本老师hd| 永久看日本大片免费| 日韩精品网址| 国产一二三区精品| 天天搞天天操| 视频黄色在线| 中文天堂最新版资源新版天堂资源| 色色色色网站| 国产精品嫩草影院在线播放| 手机看片久久| 69日本xxⅹxxxxx19| 亚洲最大黄色网址| 女人张腿让男桶免费视频观看 | 黄免费看| 人人澡人人射| 在线视频久久| 2018天天干天天射|