1. 程式人生 > >YCrCb與YPrPb的含義與區別

YCrCb與YPrPb的含義與區別

對一種顏色進行編碼的方法統稱為"顏色空間""色域"RGB和YUV,都是顏色空間的種類,

Y'UV, YUV, YCbCr,YPbPr等專有名詞都可以稱為YUV,彼此有重疊

分量視訊訊號(色差訊號),通常採用YCbCrYPbPr兩種標識,

YUV(YCbCr)525i/625i480i/576i)隔行分量輸入介面

YPbPr是從480i720p的分量輸入介面標準(不區分隔行和逐行),隔行分量端子和逐行分量端子共用,端子標識為YPbPr,無論隔行還是逐行分量訊號都從這個埠輸入。

Y'PbPr是為了滿足高質量視訊傳輸而設計的色彩分量形式及介面形式,採用並行傳輸的方式。PbPr也是由B'-Y'

R'-Y'經過限幅得到的,目前,這種介面多見於模擬分量錄影機、高清攝錄一體機及DVD播放機等。模擬分量傳輸繞過了PAL編碼與解碼,減輕了亮/色串擾等編解碼對影象的損失,但傳輸距離受到限制。

Y'CbCr是數字電視標準化時,為了相容亮度、色差這種色彩編碼方式而採用的一種類似於Y'PbPr的分量形式。

YUV(亦稱YCrCb)是被歐洲電視系統所採用的一種顏色編碼方法(屬於PAL)。YUV主要用於優化彩色視訊訊號的傳輸,使其向後相容老式黑白電視。主要用於電視系統以及模擬視訊領域,它將亮度資訊(Y)與色彩資訊(UV)分離,沒有UV資訊一樣可以顯示完整的影象,只不過是黑白的,這樣的設計很好地解決了彩色電視機與黑白電視的相容問題。與RGB視訊訊號傳輸相比,它最大的優點在於只需佔用極少的頻寬(RGB要求三個獨立的視訊訊號同時傳輸)。

其中“Y”表示明亮度(Luminance或Luma),也就是灰階值;

而“U”和“V”表示的則是色度(Chrominance或Chroma),作用是描述影像色彩及飽和度,用於指定畫素的顏色。

“亮度”是通過RGB輸入訊號來建立的,方法是將RGB訊號的特定部分疊加到一起。“色度”則定義了顏色的兩個方面—色調與飽和度,分別用Cr和CB來表示。其中,Cr反映了GB輸入訊號紅色部分與RGB訊號亮度值之間的差異。而CB反映的是RGB輸入訊號藍色部分與RGB訊號亮度值之同的差異; YUV經常有另外的名字,YCbCr ,其中Y與YUV 中的Y含義一致,Cb , Cr同樣都指色彩,,只是在表示方法上不同而已,Cb Cr 就是本來理論上的“分量/色差”的標識。C代表分量(是component的縮寫)Cr、Cb分別對應r(紅)、b(藍)分量訊號,Y除了g(綠)分量訊號,還疊加了亮度訊號。

以下是標準公式

RGB 轉換成 YUV

Y      = (0.257 * R) + (0.504 * G) + (0.098 * B) +16

Cr    = V =(0.439 * R) -  (0.368 * G) - (0.071 * B) +128

Cb   = U = -(0.148 * R) - (0.291 * G) + (0.439 * B) + 128

YUV 轉換成 RGB

B =1.164(Y - 16) + 2.018(U - 128)

G =1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128)

R =1.164(Y - 16) + 1.596(V - 128)

RGB取值範圍均為0~255,Y=0~255,U=-122~+122,V=-157~+157

以下是經過簡化的公式,運算量比上述公式要小一些。

RGB轉YUV

Y =0.299R + 0.587G + 0.114B

U'=(BY)*0.565

V'=(RY)*0.713

YUVRGB

R = Y+ 1.403V'

G = Y- 0.344U' - 0.714V'

B = Y+ 1.770U'

YUV碼流的儲存格式其實與其取樣的方式密切相關,主流的取樣方式有三種,YUV4:4:4,YUV4:2:2,YUV4:2:0;

用三個圖來直觀地表示採集的方式吧,以黑點表示取樣該畫素點的Y分量,以空心圓圈表示採用該畫素點的UV分量。


先記住下面這段話,以後提取每個畫素的YUV分量會用到。

YUV4:4:4取樣,每一個Y對應一組UV分量

YUV4:2:2取樣,每兩個Y共用一組UV分量

YUV4:2:0取樣,每四個Y共用一組UV分量

4:4:4 表示色度值(UV)沒有減少採樣。即Y,U,V各佔一個位元組,加上Alpha通道一個位元組,總共佔4位元組.這個格式其實就是24bppRGB格式了。

4:2:2 表示UV分量取樣減半,比如第一個畫素取樣Y,U,第二個畫素取樣Y,V,依次類推,這樣每個點佔用2個位元組.二個畫素組成一個巨集畫素.

4:2:0  這種取樣並不意味著只有YCb而沒有Cr分量,這裡的0說的UV分量隔行才取樣一次。比如第一行取樣 4:2:0 ,第二行取樣 4:0:2 ,依次類推...在這種取樣方式下,每一個畫素佔用16bits10bits空間.

4:1:1 可以參考4:2:2分量,是進一步壓縮,每隔四個點才採一次UV分量。一般是第0點採Y,U,1點採Y,3點採YV,第四點採Y,依次類推。

下面我用圖的形式給出常見的YUV碼流的儲存方式,並在儲存方式後面附有取樣每個畫素點的YUV資料的方法,其中,CbCr的含義等同於UV

YUYV格式


YUYV為YUV422取樣的儲存格式中的一種,相鄰的兩個Y共用其相鄰的兩個Cb、Cr,分析,對於畫素點Y'00、Y'01 而言,其Cb、Cr的值均為 Cb00、Cr00,其他的畫素點的YUV取值依次類推。

UYVY格式

UYVY格式也是YUV422取樣的儲存格式中的一種,只不過與YUYV不同的是UV的排列順序不一樣而已,還原其每個畫素點的YUV值的方法與上面一樣。

YUV422P格式

YUV422P也屬於YUV422的一種,它是一種Plane模式,即打包模式,並不是將YUV資料交錯儲存,而是先存放所有的Y分量,然後儲存所有的UCb)分量,最後儲存所有的VCr)分量,如上圖所示。其每一個畫素點的YUV值提取方法也是遵循YUV422格式的最基本提取方法,即兩個Y共用一個UV。比如,對於畫素點Y'00Y'01而言,其CbCr的值均為 Cb00Cr00

YV12,YU12格式

YU12YV12屬於YUV420格式,也是一種Plane模式,將YUV分量分別打包,依次儲存。其每一個畫素點的YUV資料提取遵循YUV420格式的提取方式,即4Y分量共用一組UV。注意,上圖中,Y'00Y'01Y'10Y'11共用Cr00Cb00,其他依次類推。

NV12,NV21格式

NV12NV21屬於YUV420格式,是一種two-plane模式,即YUV分為兩個Plane,但是UVCbCr)為交錯儲存,而不是分為三個plane。其提取方式與上一種類似,即Y'00Y'01Y'10Y'11共用Cr00Cb00

I420格式

I420就是YUV420P格式;儲存方式參考YUV422P;

一般來說,直接採集到的視訊資料是RGB24的格式,RGB24一幀的大小size=width×heigth×3 Bit,RGB32的size=width×heigth×4,如果是I420(即YUV標準格式4:2:0)的資料量是 size=width×heigth×1.5 Bit。

在採集到RGB24資料後,需要對這個格式的資料進行第一次壓縮。即將影象的顏色空間由RGB2YUV。因為X264在進行編碼的時候需要標準的YUV420。但是這裡需要注意的是,雖然YV12也是(4:2:0),但是YV12和I420的卻是不同的,在儲存空間上面有些區別。如下:

YV12:亮度(行×列)+U(行×列/4) +V(行×列/4)

I420亮度(行×列)+V(行×列/4) +U(行×列/4)

可以看出,YV12和I420基本上是一樣的,就是UV的順序不同。

YUV420 planar資料,以720×488大小圖象YUV420 planar為例,其儲存格式是:共大小為(720×480×3>>1)位元組,

分為三個部分:Y,U和V

Y分量:    (720×480)個位元組

U(Cb)分量:(720×480>>2)個位元組

V(Cr)分量:(720×480>>2)個位元組

三個部分內部均是行優先儲存,三個部分之間是Y,U,V 順序儲存。即YUV資料的

0 - 720×480位元組是Y分量值,        

720×480 - 720×480×5/4位元組是U分量   

720×480×5/4 - 720×480×3/2位元組是V分量。

4:2:2 4:2:0 轉換:

最簡單的方式:

YUV4:2:2 --->YUV4:2:0  Y不變,將U和V訊號值在行(垂直方向)在進行一次隔行抽樣。 YUV4:2:0 --->YUV4:2:2  Y不變,將U和V訊號值的每一行分別拷貝一份形成連續兩行資料。

相關推薦

YCrCbYPrPb含義區別

對一種顏色進行編碼的方法統稱為"顏色空間"或"色域",RGB和YUV,都是顏色空間的種類, Y'UV, YUV, YCbCr,YPbPr等專有名詞都可以稱為YUV,彼此有重疊 分量視訊訊號(色差訊號),通常採用YCbCr和YPbPr兩種標識, YUV(YCbCr)

usb2.0、usb3.0、usb3.1、type-c 接口含義區別

區別 wikipedia baidu 分享 3.0 沒有 速度 ID 外觀 簡單說: usb3.0比2.0的傳輸速率快,充電快,能向下兼容2.0 usb3.1比2.0的傳輸速率更快、充電更快,同兼容 先看下usb2.0接口 usb2.0 理論傳輸速率4

netstat命令各個引數含義 lsof 檢視程序指令的區別

netstat命令各個引數說明如下:   -t : 指明顯示TCP埠        -a : 顯示所有socket(套接字),包括正在監聽的(LISTEN)   -u : 指明顯示UDP埠   -l : 僅顯示監聽套接字(所謂套接字就是使應用程

get、put、post、delete含義區別

get、put、post、delete含義與區別 1、GET請求會向資料庫發索取資料的請求,從而來獲取資訊,該請求就像資料庫的select操作一樣,只是用來查詢一下資料,不會修改、增加資料,不會影響資源的內容,即該請求不會產生副作用。無論進行多少次操作,結果都是一樣的。 2、與GET不同的是,PUT請求是

C++ . -> :: 符號含義區別

.和->的區別 結構體 首先介紹一下C++中的結構。對於一個結構: struct MyStruct {   int member_a; }; 如果有個變數MyStruct s,那麼使用其中的成員元素時可以用: s.member_a = 1; 如果採用指標方法

Rest模式get,put,post,delete含義區別(轉)

解釋程式碼    POST   /uri     建立   DELETE /uri/xxx 刪除    PUT    /uri/xxx 更新或建立   GET    /uri/xxx 檢視   GET操作是安全的。所謂安全是指不管進行多少次操作,資源的狀態都不會

system.exit(0) system.exit(1) 含義區別

s首先他倆都是退出程式的意思: 區別在於:system.exit(0):正常退出,程式正常執行結束退出                    system.exit(1):是非正常退出,就是說無論程式

畫素、解析度及PPI各自含義區別及目前主流手機的解析度介紹

一、畫素 畫素是構成點陣圖的基本單元,當點陣圖影象放大到一定程度時,所看到的一個一個的馬賽克色塊就是畫素且畫素色塊的大小不是絕對的。 1.物理畫素(裝置畫素) 一個顯示屏的成像原理是通過一系列的小點排列成一個大的矩形,不同的小點通過顯示不同的顏色來顯示成影

Alpha測試、Beta測試和驗收測試的含義區別

1、Alpha測試 Alpha測試是由使用者在開發環境下進行的測試,也可以是開發機構內部的使用者在模擬實際操作環境下進行的測試。開發者坐在使用者旁邊,這是在開發者受控的環境下進行的測試。由開發者隨時記

1、Alpha測試、Beta測試和驗收測試的含義區別

轉載來源:https://blog.csdn.net/li5066520/article/details/49230905 1、Alpha測試    Alpha測試是由使用者在開發環境下進行的測試,也可以是開發機構內部的使用者在模擬實際操作環境下進行的測試。開發者坐在使用者旁

VPS、雲伺服器、虛擬主機、物理伺服器的含義區別

物理伺服器: 一臺實實在在物理機,伺服器效能和穩定性比普通PC強,但是價格昂貴,一般有錢的大佬才會使用獨立的物理伺服器(就是需要自己實實在在買一臺裝置放在那裡)。效能強,但是無論用還是不用,機器和網路等成本都在那裡。 VPS: VPS(Virtual Private

10. Override和Overload的含義區別

Override(重寫,執行時多型): 是子類對容許訪問父類的方法進行新的編寫的稱呼。其中方法名和形參不能發生改變;即外殼不變,內容可以發生改變。 優點:子類可以根據實際需要,定義特定於自己的行為。也就是說子類能夠實際根據需要實現父類的方法。

Override和Overload的含義區別

java中的繼承,方法覆蓋(重寫)override與方法的過載overload的區別 方法的重寫(Overriding)和過載(Overloading)是Java多型性的不同表現。   重寫(Overriding)是父類與子類之間多型性的一種表現,而過載(Overloadi

理解Java中字符流字節流的區別

png 技術 print 復制代碼 bar 顯式 數字 length ava 1. 什麽是流 Java中的流是對字節序列的抽象,我們可以想象有一個水管,只不過現在流動在水管中的不再是水,而是字節序列。和水流一樣,Java中的流也具有一個“流動的方向”,通常可以從中讀

對象的區別

一份 訪問 class dai 增加 -c static 編譯器 get 類與對象是不同的,類是對象的藍本,你創建出來的是對象,而它的結構由類預先定義。對象是一些操作(方法)和信息(屬性)的集合,並占據內存中的一塊存儲空間,你可以通過函數調用的方式讓它對它的屬性執行默寫操作

angular js 中conpilelink應用區別

點擊 ive 增刪 html ret ont 綁定 function cli link方法是compile拋出來的一個方法 應用 app.directive("thumbNail",function(){ return{ restrict:"AC

Mysql中Left Join Right Join Inner Join Full Join的區別

chinese ron 兩張 ansi 左連接 ima money key sel 看看Left Join 與Right Join 與 Inner Join 與 Full Join對表進行操作後得到的結果。 在數據庫中新建兩張表,並插入要測試的數據。 新建表:

正向代理反向代理的區別

高流量 反向代理 網站 代理軟件 shadows 們的 上網 正向代理 .cn 在計算機世界,代理可分為正向代理和反向代理,比如著名的FQ軟件Shadowsocks就是一款正向代理軟件,全世界前1000的高流量網站都在用的Web服務器Nginx作為反向代理服務器,那麽兩者之

論證 Assigned(btn) Assigned(@btn) 的區別

href hive .html lan n) .com btn sign ive 論證 Assigned(btn) 與 Assigned(@btn) 的區別 http://www.cnblogs.com/del/archive/2008/05/21/1203872.htm

Ftp、FtpsSftp之間的區別

進行 down 不同的 在那 用戶目錄 方案 重要 新的 信息安全 Ftp FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱為“文傳協議”。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序(Applicatio