當前位置:首頁 » 存儲配置 » rgb存儲順序

rgb存儲順序

發布時間: 2023-03-21 13:09:23

Ⅰ 求問RGB存儲模式一個像素佔多少位

一般RGB是0-255是256種顏色,就是2的八次方種顏色也叫8位深,其餘位深可以自己推算
如果說大小,一個位元組(b)是8位,8位深的一個RGB像素共需要24位描述,也就是3位元組大小。

Ⅱ RGB中x y z指的是什麼

RGB一般指Red,Green,Blue;是視頻信息中的3色;在電纜中,代表三條信號線;
x y z指的是相對應的(信號)地線,一般他們是共地線的;在電纜中,就是4根,三條信號線加一條地線;

僅供參考

Ⅲ IplImage結構體中imageData的格式是什麼樣的RGB三種顏色按什麼順序存儲於內存中

張淑軍門下給你回答:
IplImage結構體中imageData的格式是char類型的,RGB三種顏色按分量排列順序為BGR BGR BGR…。

Ⅳ RGB與YUV

每個像素用1個bit表示,可表示的顏色范圍為雙色,即最傳統的黑和白。1個bit只能表示0,1兩種值。需要調色板,不過調色板只包含兩種顏色。

每個像素用4個bit表示,4個bit所能夠表示的索引范圍是0-15,共16個。也就是可以表示16種顏色。即調色板中包含16中顏色。

每個像素用8個bit表示。8個bit所能夠表示的索引范圍是0-255,共256個。也就是可以表示256中顏色。即調色板中包含256中顏色。

RGB像素格式中的bit存儲的是每一個像素點的R,G,B值

一個像素用16個bit = 2個byte表示 ,R=5 G=6 B=5

為什麼綠色為6位?

一個像素用16個bit = 2個byte,但是最高位不用,R=5 G=5 B=5

RGB24圖像每個像素用8個bit,共24個位表示,共3個位元組,注意:在內存中RGB各分量的排列順序為:BGR

RGB32圖像每個像素用32個bit表示,佔4個byte,R,G,B分量分別用8個bit表示,存儲順序為B,G,R,最後8個位元組保留。注意:在內存中RGB各分量的排列順序為:BGR

RGB32圖像每個像素用32個bit表示,佔4個位元組,R,G,B分量分別用8個bit表示,存儲順序為B,G,R,最後8個為透明像素。注意:在內存中RGB各分量的排列順序為:BGRA

注意:java默認使用大端位元組序,c/c++默認使用小端位元組序,android平台下Bitmap.config.ARGB_8888的Bitmap默認是大端位元組序,當需要把這個圖片內存數據給小端語言使用的時候,就需要把大端位元組序轉換為小端位元組序。例如:java層的ARGB_565傳遞給jni層使用時,需要把java層的ARGB_565的內存數據轉換為BGRA565。
詳細驗證請看: Android Bitmap像素排列與JNI操作

YUV有很多變種,我們常說的YUV指的是YCbCr,YUV三個字母中,其中」Y」表示明亮度(Lumina nce或Luma),也就是灰階值;而」U」和」V」表示的則是色度(Chrominance或Chroma)作用是描述影像色彩及飽和度,用於指定像素的顏色。Cb指藍色色度分量,而Cr指紅色色度分量,是標准 YUV 的一個翻版(還有YPbPr等),此文中,我們就用 YUV 指代 YCbCr 了。

首先,YUV按照數據大小分為三個格式,YUV420,YUV422,YUV444。由於人眼對Y的敏感度遠超於對U和V的敏感,所以可以多個Y分量共用一組UV,這樣既可以極大的節省空間,又可以不太損失質量。

按照多個 Y 分量共用一個 UV 的方式,我們可以把 YUV 分為 420,422,444 三種類型,而在這三種類型之下,我們又可以按照 YUV 的排列儲存順序,將其細分為好多種格式,這些格式數量繁多,又不好記憶,這為我們學習過程中造成了不少困難。下面我就為大家一一介紹。

首先,我們將可以按照 YUV 的排列方式,再次將 YUV 分成三個大類,Planar,Semi-Planar 和 Packed。

Planar YUV 三個分量分開存放
Semi-Planar Y 分量單獨存放,UV 分量交錯存放
Packed YUV 三個分量全部交錯存放
按照這三種方式,我們就可以將 YUV 格式進行比較細致的分類了。
YUV的所有格式列表

一張從上到下分別為原圖、Y、U 和 V:

YUV 4:4:4 采樣,意味著 Y、U、V 三個分量的采樣比例相同,因此在生成的圖像里,每個像素的三個分量信息完整,都是 8 bit,也就是一個位元組。

如下圖所示:

其中,Y 分量用叉表示,UV 分量用圓圈表示。

舉個例子 :
假如圖像像素為:[Y0 U0 V0]、[Y1 U1 V1]、[Y2 U2 V2]、[Y3 U3 V3]
那麼采樣的碼流為:Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
最後映射出的像素點依舊為 [Y0 U0 V0]、[Y1 U1 V1]、[Y2 U2 V2]、[Y3 U3 V3]

假如圖像像素為:[Y0 U0 V0]、[Y1 U1 V1]、[Y2 U2 V2]、[Y3 U3 V3]
那麼采樣的碼流為:Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
最後映射出的像素點依舊為 [Y0 U0 V0]、[Y1 U1 V1]、[Y2 U2 V2]、[Y3 U3 V3]

可以看到這種采樣方式的圖像和 RGB 顏色模型的圖像大小是一樣,並沒有達到節省帶寬的目的,當將 RGB 圖像轉換為 YUV 圖像時,也是先轉換為 YUV 4:4:4 采樣的圖像。

YUV 4:2:2 采樣,意味著 UV 分量是 Y 分量采樣的一半,Y 分量和 UV 分量按照 2 : 1 的比例采樣。如果水平方向有 10 個像素點,那麼采樣了 10 個 Y 分量,而只採樣了 5 個 UV 分量。

如下圖所示:

舉個例子 :
假如圖像像素為:[Y0 U0 V0]、[Y1 U1 V1]、[Y2 U2 V2]、[Y3 U3 V3] 那麼采樣的碼流為:Y0 U0 Y1 V1 Y2 U2 Y3 V3
其中,每采樣過一個像素點,都會采樣其 Y 分量,而 U、V 分量就會間隔一個採集一個。
最後映射出的像素點為 [Y0 U0 V1]、[Y1 U0 V1]、[Y2 U2 V3]、[Y3 U2 V3]

假如圖像像素為:[Y0 U0 V0]、[Y1 U1 V1]、[Y2 U2 V2]、[Y3 U3 V3]
那麼采樣的碼流為:Y0 U0 Y1 V1 Y2 U2 Y3 V3 其中,每采樣過一個像素點,都會采樣其 Y 分量,而 U、V 分量就會間隔一個採集一個。
最後映射出的像素點為 [Y0 U0 V1]、[Y1 U0 V1]、[Y2 U2 V3]、[Y3 U2 V3]

采樣的碼流映射為像素點,還是要滿足每個像素點有 Y、U、V 三個分量。但是可以看到,第一和第二像素點公用了 U0、V1 分量,第三和第四個像素點公用了 U2、V3 分量,這樣就節省了圖像空間。

一張 1280 * 720 大小的圖片,在 YUV 4:2:2 采樣時的大小為:

可以看到 YUV 4:2:2 采樣的圖像比 RGB 模型圖像節省了三分之一的存儲空間,在傳輸時佔用的帶寬也會隨之減少。

YUV 4:2:0 采樣,並不是指只採樣 U 分量而不採樣 V 分量。而是指,在每一行掃描時,只掃描一種色度分量(U 或者 V),和 Y 分量按照 2 : 1 的方式采樣。比如,第一行掃描時,YU 按照 2 : 1 的方式采樣,那麼第二行掃描時,YV 分量按照 2:1 的方式采樣。對於每個色度分量來說,它的水平方向和豎直方向的采樣和 Y 分量相比都是 2:1 。

如下圖所示:

假設第一行掃描了 U 分量,第二行掃描了 V 分量,那麼需要掃描兩行才能夠組成完整的 UV 分量。

舉個例子 :
假設圖像像素為:[Y0 U0 V0]、[Y1 U1 V1]、 [Y2 U2 V2]、 [Y3 U3 V3][Y5 U5 V5]、[Y6 U6 V6]、 [Y7 U7 V7] 、[Y8 U8 V8]
那麼采樣的碼流為:Y0 U0 Y1 Y2 U2 Y3 Y5 V5 Y6 Y7 V7 Y8其中,每采樣過一個像素點,都會采樣其 Y 分量,而 U、V 分量就會間隔一行按照 2 : 1 進行采樣。
最後映射出的像素點為:[Y0 U0 V5]、[Y1 U0 V5]、[Y2 U2 V7]、[Y3 U2 V7][Y5 U0 V5]、[Y6 U0 V5]、[Y7 U2 V7]、[Y8 U2 V7]

假設圖像像素為:[Y0 U0 V0]、[Y1 U1 V1]、 [Y2 U2 V2]、 [Y3 U3 V3][Y5 U5 V5]、[Y6 U6 V6]、 [Y7 U7 V7] 、[Y8 U8 V8]
那麼采樣的碼流為:Y0 U0 Y1 Y2 U2 Y3 Y5 V5 Y6 Y7 V7 Y8其中,每采樣過一個像素點,都會采樣其 Y 分量,而 U、V 分量就會間隔一行按照 2 : 1 進行采樣。
最後映射出的像素點為:[Y0 U0 V5]、[Y1 U0 V5]、[Y2 U2 V7]、[Y3 U2 V7][Y5 U0 V5]、[Y6 U0 V5]、[Y7 U2 V7]、[Y8 U2 V7]

從映射出的像素點中可以看到,四個 Y 分量是共用了一套 UV 分量,而且是按照 2*2 的小方格的形式分布的,相比 YUV 4:2:2 采樣中兩個 Y 分量共用一套 UV 分量,這樣更能夠節省空間。

一張 1280 * 720 大小的圖片,在 YUV 4:2:0 采樣時的大小為:

可以看到 YUV 4:2:0 采樣的圖像比 RGB 模型圖像節省了一半的存儲空間,因此它也是比較主流的采樣方式。

YUV 的存儲格式,有兩種:

YUYV 格式是採用打包格式進行存儲的,指每個像素點都採用 Y 分量,但是每隔一個像素采樣它的 UV 分量,排列順序如下:

UYVY 格式也是採用打包格式進行存儲,它的順序和 YUYV 相反,先採用 U 分量再采樣 Y 分量,排列順序如下:

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

基於 YUV 4:2:0 采樣的格式主要有 YUV 420P 和 YUV 420SP 兩種類型,每個類型又對應其他具體格式。

I420 的單幀結構示意圖如下(Planar 方式)

這幅圖的上面一幅可以看出 Y1、Y2、Y7、Y8 共用 U1 和 V1。後面的線性數組為其存儲順序,可以看出 Y、U 和 V 都是順序存儲的,往外寫的時候,先按順序將 Y 分量寫出,然後再根據 U、V 分別將它們依次寫出即可。

NV12的單幀結構示意圖如下(Planar 方式)

可以看出與 YV12 不同的時,它的 Y 雖然也是順序存儲,但 U、V 卻是交錯存儲的,這種方式存儲在往外寫出時則先直接順序寫出 Y,然後對 UV 分別依次寫出。

PS:Android的Camera Preview默認圖像格式為NV21。

把RGB和YUV的范圍都縮放到[0,255]
YUV轉RGB

RGB轉YUV

參考資料:
圖片RGB數據格式
一文讀懂 YUV 的采樣與格式
視音頻數據處理入門:RGB、YUV像素數據處理
Android Bitmap像素排列與JNI操作
YUV420_SVG

熱點內容
二級程序編譯答案 發布:2024-05-03 18:41:35 瀏覽:653
領動自動精英版是哪個配置 發布:2024-05-03 18:37:30 瀏覽:150
java編譯器中cd什麼意思 發布:2024-05-03 18:36:00 瀏覽:389
傳奇伺服器如何刷錢 發布:2024-05-03 18:36:00 瀏覽:977
安卓版twitter怎麼注冊 發布:2024-05-03 18:28:05 瀏覽:893
Python邏輯優先順序 發布:2024-05-03 18:26:14 瀏覽:267
linux查看svn密碼 發布:2024-05-03 18:12:47 瀏覽:804
地鐵逃生怎麼進入游戲安卓 發布:2024-05-03 17:49:35 瀏覽:992
aws雲存儲 發布:2024-05-03 17:48:50 瀏覽:955
安卓微信王者號怎麼轉成蘋果 發布:2024-05-03 17:44:38 瀏覽:745