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

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

生活随笔

當(dāng)前位置: 首頁(yè) >

RGB、YUV像素基础知识及处理数据

發(fā)布時(shí)間:2024/4/11 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RGB、YUV像素基础知识及处理数据 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

RGB、YUV像素基礎(chǔ)知識(shí)及處理數(shù)據(jù)


目錄

  • RGB
  • YUV
  • RGB、YUV像素?cái)?shù)據(jù)處理
  • 轉(zhuǎn)載自Gemfield的知乎文章:從YUV到RGB
    轉(zhuǎn)載自雷神的博客:視音頻數(shù)據(jù)處理入門(mén):RGB、YUV像素?cái)?shù)據(jù)處理


    1. RGB

    1. RGB基本概述

  • RGB色彩模式是工業(yè)界的一種顏色標(biāo)準(zhǔn),是通過(guò)對(duì)紅?、綠(G)、藍(lán)(B)三個(gè)顏色通道的變化以及它們相互之間的疊加來(lái)得到各式各樣的顏色的,RGB即是代表紅、綠、藍(lán)三個(gè)通道的顏色,這個(gè)標(biāo)準(zhǔn)幾乎包括了人類(lèi)視力所能感知的所有顏色,是運(yùn)用最廣的顏色系統(tǒng)之一。

  • 通常情況下,RGB各有256級(jí)亮度,用數(shù)字表示為從0、1、2…直到255,所以每一個(gè)顏色用1個(gè)字節(jié)=8bit就可以完全在計(jì)算機(jī)內(nèi)部表示出來(lái)。按照計(jì)算,256級(jí)的RGB色彩總共能組合出約1678萬(wàn)種色彩,即256×256×256=16777216。通常也被簡(jiǎn)稱(chēng)為1600萬(wàn)色或千萬(wàn)色,也稱(chēng)為24位色(2的24次方)。

  • 比如一張1080p的圖片,代表著有 1920 * 1080 個(gè)像素點(diǎn)。如果采用 RGB 編碼方式,每個(gè)像素點(diǎn)都有紅、綠、藍(lán)三個(gè)原色,其中每個(gè)原色占用 1 個(gè)字節(jié),每個(gè)像素占用3個(gè)字節(jié),則一張1080p的圖片就占用 1920 * 1280 * 3 / 1024 / 1024 = 7.03125MB 存儲(chǔ)空間。比如著名的BMP位圖就是這樣保存圖片的(所謂的RGB888格式,或者24位位圖格式)。

  • 圖片的信息量有7.03125MB并不代表對(duì)應(yīng)的圖片文件的大小就是7.03125MB,因?yàn)閮牲c(diǎn):

  • 圖片的信息會(huì)被壓縮,減小文件的大小;
  • 圖片文件會(huì)注入meta data,又會(huì)稍微增大文件大小;
  • 總體上圖片文件肯定是變小了。而壓縮又主要分為兩種:

  • 無(wú)損壓縮,比如BMP位圖文件——頂多是使用行程長(zhǎng)度編碼(RLE,run-length encoding)來(lái)進(jìn)行輕度的無(wú)損數(shù)據(jù)壓縮(COCO數(shù)據(jù)集的分割data也使用了RLE),所以7.03125MB大小的內(nèi)容會(huì)保存為6MB左右的文件;
  • 有損壓縮,最流行的就是jpg了,各種復(fù)雜的壓縮算法,會(huì)根據(jù)圖片內(nèi)容的不同,使得圖片文件的大小降低到幾十KB到幾百KB左右。
  • 2. RGB的格式

    簡(jiǎn)單來(lái)講,RGB在計(jì)算機(jī)中的表示主要分為兩大類(lèi),一種是索引形式,一種是像素形式。

  • 索引:
  • 諸如RGB1,RGB4,RGB8,分別表示每個(gè)像素用1個(gè)bit,4個(gè)bit, 8個(gè)bit來(lái)表示,那么,這些bit存儲(chǔ)的并非是實(shí)際的R,G, B值,而是對(duì)應(yīng)點(diǎn)的像素在調(diào)色板中的索引。
  • 像素形式:
  • 諸如RGB565,RGB555,RGB24,RGB32,ARGB32,這些格式,存儲(chǔ)的是每一個(gè)像素點(diǎn)的R,G,B值。比如RGB24,分別用8個(gè)bit去表示R, G, B。
  • 3. RGB圖片中的CHW和BGR概念

  • 以著名的圖像算法庫(kù)OpenCV為例,我們常常聽(tīng)到一個(gè)概念:一個(gè)API輸出或者輸出的圖片格式是CHW還是HWC,是RGB還是BGR…但是這代表什么意思呢?
  • 使用一個(gè)例子來(lái)解釋下,在Python中,使用OpenCV來(lái)讀取一個(gè)圖片gemfield.jpg(640x640):
  • (640, 640, 3)這樣的結(jié)果一看就是hwc格式(HWC三個(gè)字母分別代表Height、Width、Channel),相當(dāng)于在內(nèi)存中,img是個(gè)三維數(shù)組,從外層向內(nèi)層依次是height、width、channel;也就是說(shuō):img是由640個(gè)height組成的,每個(gè)height是由640個(gè)width組成的,每個(gè)width是由3個(gè)channel組成的。而在每個(gè)width上,如果是BGR格式,則一個(gè)width就是[B,G,R],如果是RGB的話(huà),則一個(gè)width就是[R,G,B]。而OpenCV的imread輸出的是BGR格式,因此img對(duì)象看起來(lái)就是這樣的三維數(shù)組:
  • 如果想要把hwc格式轉(zhuǎn)換為chw格式,則使用numpy的transpose:
  • 那么就是chw格式了,img依然是BGR格式,依然是3維數(shù)組:由3個(gè)channel組成,每個(gè)channel由640個(gè)height組成,每個(gè)height由640個(gè)width組成。img在內(nèi)存中看起來(lái)就是這樣:

  • 2. YUV

    1. YUV基本概述

  • 大家已經(jīng)知道的是,YUV 編碼采用了明亮度和色度表示每個(gè)像素的顏色。其中Y表示明亮度(Luminance、Luma),也就是灰階值。U、V 表示色度(Chrominance 或 Chroma)。Y’UV是工程師希望在黑白基礎(chǔ)結(jié)構(gòu)中使用彩色電視時(shí)發(fā)明的。他們需要一種與黑白(B&W)電視兼容的信號(hào)傳輸方法,同時(shí)又能增加色彩。亮度分量已經(jīng)以黑白信號(hào)形式存在,于是他們添加了UV信號(hào)作為解決方案。

  • Y’UV模型根據(jù)一個(gè)亮度分量(Y’)和兩個(gè)色度分量(分別稱(chēng)為U(藍(lán)色投影)和V(紅色投影))定義了色彩空間。Y’UV顏色模型用于PAL 復(fù)合彩色視頻(不包括PAL-N)標(biāo)準(zhǔn)中。先前的黑白系統(tǒng)僅使用亮度(Y’)信息。顏色信息(U和V)是通過(guò)副載波單獨(dú)添加的,因此黑白接收器仍然能夠以接收器的本機(jī)黑白格式接收和顯示彩色圖片。

  • Y’代表亮度分量(亮度),U和V代表色度(顏色)分量;術(shù)語(yǔ)Y’UV,YUV,YCbCr,YPbPr等的范圍有時(shí)是模棱兩可和重疊的。歷史上,術(shù)語(yǔ)YUV和Y’UV用于電視系統(tǒng)中顏色信息的特定模擬編碼,而YCbCr用于顏色信息的數(shù)字編碼,適用于視頻和靜止圖像壓縮和傳輸,例如MPEG和JPEG。如今,術(shù)語(yǔ)YUV在計(jì)算機(jī)行業(yè)中通常用于描述使用YCbCr編碼的文件格式。

  • YUV不是一種格式,而是有多種細(xì)分格式。從存儲(chǔ)格式維度和采樣格式維度來(lái)分別介紹下。

  • 2. YUV的存儲(chǔ)格式

  • 首先,YUV按照儲(chǔ)存方法的不同,可以分為packeted formats和planar formats;前者是YUV分量交叉排著,類(lèi)似于RGB領(lǐng)域的hwc;后者是YUV分量分成三個(gè)數(shù)組存放,不摻和在一起,類(lèi)似于RGB領(lǐng)域的chw。
  • 3. YUV的采樣格式

  • 其次,YUV根據(jù)采樣率和采樣方式的不同,又可以劃分為各種格式。
  • 要說(shuō)YUV相比于RGB有什么優(yōu)勢(shì),那就是節(jié)省空間。為什么呢?因?yàn)閅UV分量中,UV分量對(duì)人眼來(lái)說(shuō)不敏感,因此可以降低采樣率,而對(duì)人的視覺(jué)又不構(gòu)成什么影響。以下面的YUV420格式來(lái)說(shuō):
  • 可以看到UV分量只有Y分量的四分之一,這樣每4個(gè)像素就是6個(gè)字節(jié)(而RGB是12個(gè)字節(jié)),相比RGB節(jié)省了一半空間。除了YUV420外,還有YUV444(和RGB一樣的空間大小)和YUV422等主流格式。
  • 4. 主流的YUV420格式

  • 這些主流YUV格式中,YUV420更常見(jiàn)(因?yàn)楦?jié)省空間啊),而從YUV420這種采樣格式引申出來(lái),疊加上不同的存儲(chǔ)格式,就又可以細(xì)分為很多。你可以參考:http://www.fourcc.org/yuv.php 。
  • 當(dāng)YUV420采樣格式疊加上planar 儲(chǔ)存格式后,可以產(chǎn)生出YUV420P和YUV420SP格式。YUV420P是Y之后U之后V來(lái)儲(chǔ)存,相當(dāng)于RGB中的chw了,又可以細(xì)分為I420(又叫YU12)和YV12格式;而YUV420SP是Y之后UV交替…,又可以細(xì)分為NV12和NV21格式。這四種細(xì)分格式如下所示:
  • NV12 ,FourCC為0x3231564E ,1個(gè)像素12 bit, 8-bit Y plane,Y通道平面結(jié)束后是交叉進(jìn)行的 U/V 通道平面,U/V使用2x2的采樣率(各是Y的四分之一)。
  • NV21 ,FourCC為0x3132564E ,1個(gè)像素12 bit, 和NV12一樣——除了U/V交叉的時(shí)候是先V再U,也就是U/V和V/U的區(qū)別;這個(gè)是Android上攝像頭圖像的標(biāo)準(zhǔn);
  • I420 (也叫YU12),FourCC為0x30323449 ,1個(gè)像素12 bit,8 bit Y 通道平面結(jié)束后,是U通道平面,最后是V通道平面;
  • YV12 ,FourCC為0x32315659,1個(gè)像素12 bit,8 bit Y 通道平面結(jié)束后,是V通道平面,最后是U通道平面;
  • 5. YUV到RGB的轉(zhuǎn)換

  • 一邊是YUV格式的生產(chǎn)者,一邊是RGB格式的消費(fèi)者。那如何從YUV轉(zhuǎn)換到RGB呢?上文已經(jīng)說(shuō)過(guò),YUV的細(xì)分格式有很多種(幾十種),沒(méi)有那么多的精力,也沒(méi)必要花那個(gè)精力一一介紹,因此,這里只給出主流中的主流YUV格式到RGB的轉(zhuǎn)化。
  • 1. Y’UV420p(和Y’V12或YV12)到RGB888的轉(zhuǎn)換
  • Y’UV420p是平面格式,這意味著Y’,U和V值組合在一起而不是散布在一起。這樣做的原因是,通過(guò)將U和V值分組在一起,圖像變得更加可壓縮。當(dāng)給定Y’UV420p格式的圖像數(shù)組時(shí),所有Y’值首先出現(xiàn),然后是所有U值,最后是所有V值。

  • Y’V12格式本質(zhì)上與Y’UV420p相同,但是它切換了U和V數(shù)據(jù):Y’值后跟V值,最后是U值。只要注意從適當(dāng)?shù)奈恢锰崛和V值,就可以使用相同的算法處理Y’UV420p和Y’V12。

  • 與大多數(shù)Y’UV格式一樣,Y’值與像素一樣多。在X為像素?cái)?shù),則數(shù)組中的前X個(gè)元素是對(duì)應(yīng)于每個(gè)單獨(dú)像素的Y’值。但是,U和V值只有Y的四分之一,這意味著每個(gè)U和V元素均適用于四個(gè)像素。

  • 如上圖所示,Y’UV420中的Y’,U和V分量分別在順序塊中編碼。為每個(gè)像素存儲(chǔ)一個(gè)Y’值,而為每個(gè)2×2正方形像素塊分別存儲(chǔ)一個(gè)U值和一個(gè)V值。上圖中使用相同的顏色顯示了相應(yīng)的Y’,U和V值。從設(shè)備逐行讀取字節(jié)流,Y’塊位于位置0,U塊位于x×y(在此示例中為6×4 = 24),V塊位于位置x ×y +(x×y)/ 4(這里6×4 +(6×4)/ 4 = 30)。


  • 3. RGB、YUV像素?cái)?shù)據(jù)處理

    視音頻數(shù)據(jù)處理入門(mén):RGB、YUV像素?cái)?shù)據(jù)處理


    總結(jié)

    以上是生活随笔為你收集整理的RGB、YUV像素基础知识及处理数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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