2020-11-27

總結各種RGB轉YUV的轉換公式

如果數據位寬都以8位來說.
ITU709:允許 0~255之間所有數據
ITU601:只允許 16~235之間數據,

601是SDTV的數據結構; 656是SDTV的interface
709是HDTV的數據結構 ;1120是HDTV的interface

最近在學習視頻的顏色空間轉換,由于攝像機拍出來的視頻很多都是用YUV格式保存的,而顏色空間的轉換必須在RGB顏色模型上才能完成,所以第一步自然就是將YUV顏色模型轉成RGB顏色模型。在網上查到了許多的YUV與RGB互轉的公式,但是總覺得有些雜亂,沒有系統的總結。

首先說一說YUV顏色模型,單單就YUV顏色模型來說,就有很多中叫法,而且總是讓人頗感困惑。一般來講,我們把YUV、Y`UV、YCbCr, YPbPr包含在YUV顏色模型的范圍內,其中Y都表示亮度,UV表示兩個色度分量,但是具體的顏色模型的用途又各不相同,當然,他們與RGB的互轉公式也就不盡相同。那就先說說這些不同叫法的YUV的用途和由來。在電視系統發展的早期,YUV和Y`UV都是顏色信息的模擬信號編碼形式,雖然Y和Y`都表示亮度,但是兩種亮度的意義卻天差地別,Y用來代指luminance,表示的是自然顏色的亮度,而Y`代指luma,表示的是經過伽馬壓縮之后電信號的強度。在現在的計算機系統中,YUV一般用來代指YCbCr,用來表示文件的編碼格式,用于數字視頻的編碼,而YPbPr顏色模型常常用在模擬分量視頻中。所以YUV顏色模型到RGB顏色模型的轉換,應該對應兩種方式,分別是模擬YUV->模擬RGB、數字YUV->數字RGB。不過因為標清、高清、以及超清幅面,YUV轉RGB的權重值各不相同,需要將模擬信號和數字信號再做一次幅面劃分,就出現了2*3 = 6,6中轉換公式。

1.模擬YUV->模擬RGB

  1) BT601(標清國際定義)

1

2

3

4

5

6

7

8

//*********************BT601***********************************//

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

// Pb =-0.169 * R - 0.331 * G + 0.500 * B????????????????? //

// Pr = 0.500 * R - 0.439 * G - 0.081 * B????????????????? //

//? R = Y + 1.402* Pr???????????????????              //

//? G = Y - 0.344 * Pb? - 0.792* Pr                 //

//? B = Y + 1.772 * Pb???????????????????              //

//*********************BT601***********************************//

  2)BT709(高清)

1

2

3

4

5

6

7

8

//*********************BT601***********************************//

//? Y = 0.213 * R + 0.715 * G + 0.072 * B????????     ? //

// Pb =-0.115 * R - 0.385 * G + 0.500 * B????????????????? //

// Pr = 0.500 * R - 0.454 * G - 0.046 * B????????????????? //

//? R = Y + 1.402* Cr???????????????????              //

//? G = Y - 0.344 * Cb? - 0.792* Cr                 //

//? B = Y + 1.772 * Cb???????????????????              //

//*********************BT601***********************************//

2 數字YUV->數字RGB

  1)BT601

1

2

3

4

5

6

7

8

//*********************BT601***********************************//

//? Y = 16? + 0.257 * R + 0.504 * g + 0.098 * b??????????????? //

// Cb = 128 - 0.148 * R - 0.291 * g + 0.439 * b??????????????? //

// Cr = 128 + 0.439 * R - 0.368 * g - 0.071 * b??????????????? //

//? R = 1.164 *(Y - 16) + 1.596 *(Cr - 128)??????????????????? //

//? G = 1.164 *(Y - 16) - 0.392 *(Cb - 128) - 0.812 *(Cr - 128)//

//? B = 1.164 *(Y - 16) + 2.016 *(Cb - 128)??????????????????? //

//*********************BT601***********************************//

  2)BT709

1

2

3

4

5

6

7

8

//*********************BT709***********************************//

//? Y = 16? + 0.183 * R + 0.614 * g + 0.062 * b??????????????? //

// Cb = 128 - 0.101 * R - 0.339 * g + 0.439 * b??????????????? //

// Cr = 128 + 0.439 * R - 0.399 * g - 0.040 * b??????????????? //

//? R = 1.164 *(Y - 16) + 1.792 *(Cr - 128)??????????????????? //

//? G = 1.164 *(Y - 16) - 0.213 *(Cb - 128) - 0.534 *(Cr - 128)//

//? B = 1.164 *(Y - 16) + 2.114 *(Cb - 128)??????????????????? //

//*********************BT709***********************************//

至于超清幅面的計算公式,大家可以按照下面的推導方式自己推導一下。

模擬RGB轉YUV的推導公式 :?

1

2

3

4

Wr + Wg + Wb = 1; UMax = 0.5; VMax = 0.5

Y? = Wr * R + Wg * G + Wb * B;

Pb = Umax * (B - Y) / (1 - Wb);

Pr = Vmax * (R - Y) / (1 - Wr);

  

數字RGB轉YUV的推導公式:

1

2

3

4

Wr + Wg + Wb = 1; Umax = Vmax = 0.5;

Y = 16 + 219 * (Wr * R? + Wg * G + Wb * B)?? / 255;

Cb = 128 + 224 * (Umax * (B - Y) / (1 - Wb)) / 255;

Cr = 128 + 224 * (Vmax * (R - Y) / (1 - Wr)) / 255;

  

BT601 Wr = 0.299 Wg = 0.587 Wb = 0.114

BT709 Wr? = 0.2126 Wg = 0.7152 Wb = 0.0722

BT2020 Wr = 0.2627 Wg = 0.678 Wb = 0.0593

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252663.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252663.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252663.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python學習筆記1-基礎語法

1 在3版本中print需要加上括號2 多行語句:用\連接 1 item_one1 2 item_two2 3 item_three3 4 total item_one \ 5 item_two \ 6 item_three 7 print (total) 3 引號   字符串通常在引號中 不管是單引號 雙引號還是三引號   必須保證前后一致…

『原創』一個基于Win CE 5.0的Txt文件閱讀器

最近,拿到一臺親戚送的GPS導航儀,其系統是基于WinCE5.0的,所以我覺得可以寫點小程序上去,上網一搜,還附帶破解方法,把GPS破解后就變成一臺屏幕超大的PDA了,于是我想用它看電子書,無奈…

ARM Cortex-A系列(A53、A57、A73等)處理器性能分類與對比

在如今這個電子產品泛濫的年代,僅僅靠品牌或是外觀已經不足以辨別產品的優劣,其內置的處理器自然也就成為了分辨產品是否高端的標準之一。那么我們今天就不妨好好了解一下近幾年來電子產品中較為主流的RAM處理器。 在這之前讓我們先簡單認識一下處理器的…

批量創建10個系統帳號tianda01-tianda10并設置密碼

#1、添加用戶 useradd tianda01#2、非交互式給密碼 echo "pass"|passwd --stdin tianda#3、01-10 加0思路 (1)echo {00..10}(2)seq -w 10#隨機密碼6種方法 (1)echo $RANDOM | md5sum | cut -c 1-8(2)yum -y install expect mkpasswd -l 12 -d 5 #expect隨機mkpasswd …

DIV常用屬性大全自己整理

一、屬性列表 代碼如下:color : #999999 文字顏色 font-family : 宋體 文字字型 font-size : 10pt 文字大小 font-style:itelic 文字斜體育 font-variant:small-caps 小字體 letter-spacing : 1pt 文字間距 line-height : 200% 設定行高 font-weight:bold 文字粗體 vertical-a…

.NET 3.5 - DLINQ(LINQ to SQL)之面向對象的添加、查詢、更新和刪除

步步為營VS 2008 .NET 3.5(8) - DLINQ(LINQ to SQL)之面向對象的添加、查詢、更新和刪除作者&#xff1a;webabcd介紹以Northwind為示例數據庫&#xff0c;DLINQ(LINQ to SQL)之完全面向對象的添加操作、查詢操作、更新操作和刪除操作示例Sample.aspx <% Page Language&quo…

ARM處理器的分類

對于ARM處理器而言&#xff0c;其目前有Classic系列、Cortex-M系列、Cortex-R系列、Cortex-A系列和Cortex-A50系列5個大類。 Classic系列 該系列處理器由三個子系列組成&#xff1a; ARM7系列&#xff1a;基于ARMv3或ARMv4架構 ARM9系列&#xff1a;基于ARMv5架構 ARM11系列…

Poj 1019

傳送門&#xff1a;http://poj.org/problem?id1019 主要是找數學規律 然后用好pow和log函數&#xff0c;由于數組過大&#xff0c;數組的類型用unsigned 1 #include<iostream>2 #include<cmath>3 using namespace std;4 5 int t;6 int k;7 int n;8 unsigned a[312…

ARM版本系列及家族成員梳理

ARM公司簡介 ARM是Advanced RISC Machines的縮寫&#xff0c;它是一家微處理器行業的知名企業&#xff0c;該企業設計了大量高性能、廉價、耗能低的RISC &#xff08;精簡指令集&#xff09;處理器。 1985年第一個ARM原型在英國劍橋誕生。 公司的特點是只設計芯片&#xff0c…

z-index ie無效

首先來個 解釋了三個原因&#xff1a;http://www.cnblogs.com/hakuci/archive/2011/01/05/1926212.html 我這個還比較特殊 爸爸級別在最底層 遮羞層在中間 兒子最外邊 <div>遮羞層</div> z-index2 <div>爺爺 <div>小爸爸</div> <div>爸…

數據結構與算法問題 AVL二叉平衡樹

AVL樹是帶有平衡條件的二叉查找樹。這個平衡條件必須保持&#xff0c;并且它必須保證樹的深度是O&#xff08;logN&#xff09;。 一棵AVL樹是其每一個節點的左子樹和右子樹的高度最多差1的二叉查找樹。&#xff08;空樹的高度定義為-1&#xff09;。在插入以后。僅僅有那些從插…

tomcat源碼閱讀之StandardHost和StandardEngine

StandardHost及UML類圖&#xff1a; 1、StandardHost類是Host接口的默認實現&#xff1b;其繼承自ContainerBase類&#xff0c;說明他也是一個容器類&#xff0c;既然是容器類&#xff0c;那肯定也有管道對象PipeLine和閥門&#xff0c;其基礎閥門&#xff08;Basic Valve&…

安防監控產業鏈全景梳理

安防行業是隨著現代社會安全需求應運而生的產業&#xff0c;圍繞著視頻監控技術的改革創新&#xff0c;行業從“看得見、看得遠、看得清到看得懂”&#xff0c;一共經歷模擬監控、數字監控、網絡高清監控和智能監控4個階段&#xff0c;每一階段的突破&#xff0c;都由上游技術的…

Vue項目搭建步驟

一&#xff0e; vue-cli初始化1. 全局安裝 vue-cli  npm install --global vue-cli2. 創建一個基于 webpack 模板的新項目  vue init webpack my-project3. 安裝依賴  cd my-project  npm install (換源安裝: npm install --registry https://registry.npm.taobao.org …

Python tutor 簡介

Python tutor 能夠直觀顯示object 引用關系。 網址是 http://www.pythontutor.com/visualize.html 先分享一下我的一個Python tutor&#xff1a; 點我出現神奇&#xff1a; 1&#xff09; 編輯code。 2&#xff09; 運行&#xff0c; 能夠看到以下界面。 這個工具是很酷的&…

提高CSS性能

1、選擇器 了解CSS的查找匹配原理&#xff0c;讓CSS更簡潔、高效使用高效率的CSS選擇器如何使CSS渲染更高效 總結 不要在ID選擇器前使用標簽名 一般寫法&#xff1a;div#divBox 更好寫法&#xff1a;#divBox 解釋&#xff1a; 因為ID選擇器是唯一的&#xff0c;加上div反而增加…

光學鏡頭行業發展現狀及趨勢,智能手機應用領域占比最高

一、光學鏡頭分類 光學鏡頭也叫攝像鏡頭或攝影鏡頭&#xff0c;簡稱鏡頭&#xff0c;其功能就是光學成像。光學鏡頭是光學成像系統中的必備組件&#xff0c;直接影響到成像質量的好壞&#xff0c;影響算法的實現和效果。從結構來看&#xff0c;光學鏡頭一般由精密五金、塑膠零…

關于_vmvare workstation裝32ubuntu的問題

剛開始啟動的時候是黑屏&#xff0c;沒有任何反應 1.bios也設置BIOS intel virtual technology 設置了enabled(開啟硬件虛擬化:要運行一些操作系統&#xff0c;虛擬化軟件和虛擬機&#xff0c;硬件虛擬化就需要啟用。大多數情況下&#xff0c;不需要虛擬化技術的操作系統可以正…

window screen (獲取屏幕信息)

document.write("屏幕寬度"screen.width);document.write("屏幕高度"screen.height);//&#xff08;整個電腦的屏幕的高&#xff09;上面和下面不是有效區的也被包括了 document.write("可用高度"screen.availHeight)//除了上面的任務欄 其他的全…

360°環視(全景影像)系統發展趨勢

360環視系統&#xff0c;系統同時采集車輛四周的影像&#xff0c;經過圖像處理單元一系列的智能算法處理&#xff0c;最終形成一幅車輛四周的全景俯視圖顯示在屏幕上&#xff0c;直觀地呈現出車輛所處的位置和周邊情況。系統大大地拓展了駕駛員對周圍和環境的感知能力&#xff…