1. 程式人生 > >關於YUV和RGB之間的轉換公式

關於YUV和RGB之間的轉換公式

轉載地址:http://blog.sina.com.cn/s/blog_5713096b0100059i.html

總結了一下網上關於YUV的一些東西

先區分一下YUV和YCbCr

YUV色彩模型來源於RGB模型,

該模型的特點是將亮度和色度分離開,從而適合於影象處理領域。

應用:模擬領域

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

U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y')

V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y')

R' = Y' + 1.140*V'

G' = Y' - 0.394*U' - 0.581*V'

B' = Y' + 2.032*U'

YCbCr模型來源於YUV模型。YCbCr是 YUV 顏色空間的偏移版本.

應用:數字視訊,ITU-R BT.601建議

Y’ = 0.257*R' + 0.504*G' + 0.098*B' + 16

Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128

Cr' = 0.439*R' - 0.368*G' - 0.071*B' + 128

R' = 1.164*(Y’-16) + 1.596*(Cr'-128)

G' = 1.164*(Y’-16) - 0.813*(Cr'-128) - 0.392*(Cb'-128)

B' = 1.164*(Y’-16) + 2.017*(Cb'-128)

PS: 上面各個符號都帶了一撇,表示該符號在原值基礎上進行了伽馬校正,伽馬校正有助於彌補在抗鋸齒的過程中,線性分配伽馬值所帶來的細節損失,使影象細節更加豐富。在沒有采用伽馬校正的情況下,暗部細節不容易顯現出來,而採用了這一影象增強技術以後,影象的層次更加明晰了。

所以說H264裡面的YUV應屬於YCbCr, 也可以點這裡獲得其他一些資訊.

下面在仔細談談YUV格式, YUV格式通常有兩大類:打包(packed)格式和平面(planar)格式。前者將YUV分量存放在同一個陣列中,通常是幾個相鄰的畫素組成一個巨集畫素(macro-pixel);而後者使用三個陣列分開存放YUV三個分量,就像是一個三維平面一樣。

我們常說得YUV420屬於planar格式的YUV, 顏色比例如下:

Y0U0V0             Y1                 Y2U2V2                          Y3

Y4                      Y5                 Y6                                   Y7

Y8U8V8             Y9                 Y10U10V10                   Y11

Y12           Y13          Y14                   Y15

其他格式YUV可以點這裡檢視詳細內容, 而在YUV檔案中YUV420又是怎麼儲存的呢? 在常見H264測試的YUV序列中,例如CIF影象大小的YUV序列(352*288),在檔案開始並沒有檔案頭,直接就是YUV資料,先存第一幀的Y資訊,長度為352*288個byte,然後是第一幀U資訊長度是352*288/4個byte, 最後是第一幀的V資訊,長度是352*288/4個byte, 因此可以算出第一幀資料總長度是352*288*1.5,即152064個byte, 如果這個序列是300幀的話, 那麼序列總長度即為152064*300=44550KB,這也就是為什麼常見的300幀CIF序列總是44M的原因.

相關推薦

關於YUVRGB之間轉換公式

轉載地址:http://blog.sina.com.cn/s/blog_5713096b0100059i.html 總結了一下網上關於YUV的一些東西 先區分一下YUV和YCbCr YUV色彩模型來源於RGB模型, 該模型的特點是將亮度和色度分離開,從而適合於影象處理領域。

YUVRGB互轉各種公式 (YUVRGB轉換公式有很多種,請注意區別!!!)

一、 公式:基於BT.601-6       BT601 UV 的座標圖(量化後): (橫座標為u,縱座標為v,左下角為原點)           通過座標圖我們可以看到UV並不會包含整個座標系,而是呈一個旋轉了一

YUVRGB調節色彩公式

1.YUV調節色彩公式(必須是量化後的YUV(16-235)),非量化後的YUV轉換有問題。 轉換公式為: 原始YUV(Y,U,V),轉換後YUV(Y',U',V'),亮度 :g_Bright (0-1),飽和度:g_Saturation(0-1),對比度:g_Contrast (0-1

android全平臺編譯libyuv庫實現YUVRGB轉換

音視訊實踐學習 android全平臺編譯ffmpeg以及x264與fdk-aac實踐 ubuntu下使用nginx和nginx-rtmp-module配置直播推流伺服器 android全平臺編譯ffmpeg合併為單個庫實踐 android-studio使用c

YUVRGB的相互轉換實驗報告

1、彩色空間轉換基本原理 1)彩色空間轉換公式: 為了實現格式轉換,我們首先要明確待轉換格式和目標格式的特點和相互轉換關係,這是程式設計實現轉換的核心。對於RGB轉YUV的過程,我們要首先拿到RG

[#1] YCbCr與RGB轉換公式

== 數字電視 .com 文檔 ram delay times param 技術 1 YCbCr簡介 YCbCr顏色空間是將RGB顏色空間進行坐標轉換後得到的,常用於數字電視系統。Y取值範圍:16~235 Cb、Cr的取值範圍:16~240 YCbCr經常和YUV混淆。兩者

YUV420P、YUV420SP、NV12、NV21RGB互相轉換並存儲為JPEG以及PNG圖片

音視訊實踐學習 android全平臺編譯ffmpeg以及x264與fdk-aac實踐 ubuntu下使用nginx和nginx-rtmp-module配置直播推流伺服器 android全平臺編譯ffmpeg合併為單個庫實踐 android-studio使用c

Java日期字串之間轉換,自己封裝日期與字串轉換

一:日期與字串轉換 public class DateFormatDemo { public static void main(String[] args) throws ParseException { //日期轉換成字串 Date d = new Date(); Simple

VC charTCHAR之間轉換

                char:計算機程式語言(c、c++、java、VFP等)中可容納單個字元的一種基本資料型別。TCHAR:為了滿足Unicode編碼,對char的擴充套件,即_T(“str”)表示TCHAR型別C++支援兩種字串,即常規的ANSI編碼(使用""包裹)和Unicode編碼(使用L

JS時間戳時間之間轉換

一、時間轉換時間戳 var date =newDate();//時間物件var str = date.getTime();//轉換成時間戳 二、時間戳轉換為時間 1.轉換成 2015/7/18 下午4:50:43 格式: function getDate(tm){v

C# 實現16進位制字串之間轉換的程式碼

獲取字串中每個字元的十六進位制值。  獲取與十六進位制字串中的每個值對應的字元。  將十六進位制 string 轉換為整型。  將十六進位制 string 轉換為浮點型。  將位元組陣列轉換為十六進位制 string。 示例一:  輸出 string 中的每個字元的十六進位制值。 首先,它將 str

不同格式的YUV RGB互轉

YUV色彩空間:        Y是亮度值,也就是說8位的灰度值即可組成一幅黑白影象,黑白電視機就是這樣的.        UV是色彩值,是給Y上色用的.U是Cb也就是RGB中的藍色分量,V是Cr也就是RGB中的紅色分量.        YUV444 指的是每四個畫素取樣中每個亮度Y分量都有一個色彩UV分

YUVRGB格式分析

寫的比較詳細。 正文: 做嵌入式專案的時候,涉及到YUV視訊格式到RGB影象的轉換,雖然之前有接觸到RGB到都是基於opencv的處理,很多東西並不需要我們過多深入的去探討,現在需要完全拋棄現有的演算法程式,需要從記憶體中一個位元組一個位元組的處

CMYK與RGB引數轉換公式轉換方法

1. RGB色彩模式  自然界中絕大部分的可見光譜可以用紅、綠和藍三色光按不同比例和強度的混合來表示。RGB分別代表著3種顏色:R代表紅色,G代表綠色、B代表藍色。RGB模型也稱為加色模型,如圖5所示。RGB模型通常用於光照、視訊和螢幕影象編輯。 RGB色彩模式使用RGB模型為影象中每一個畫素的RGB分量分

Java 時間戳Date之間轉換

一. 背景: 在資料庫中為了保證資料在取和存的過程中沒有被其他人修改過,通常會加入一個控制版本的欄位version, 這個欄位的值通常會使用時間戳,類似這樣的格式:yyyy-MM-dd HH:mm:s

學習筆記-JS角度弧度之間轉換

所有Math三角方法如sin()、cos()、tin()...接受弧度值,並且返回弧度值作為結果。將角度轉換為弧度:var radians = degrees * (Math.PI/180);將弧度轉換為角度:var degrees = radians * (180/Math

YUVRGB格式轉換

原文:http://www.cnblogs.com/dwdxdy/p/3713990.html YUV格式具有亮度資訊和色彩資訊分離的特點,但大多數影象處理操作都是基於RGB格式。 因此當要對影象進行後期處理顯示時,需要把YUV格式轉換成RGB格式。 RGB與YUV的變換公式如下:   YU

python矩陣陣列之間轉換

直接上程式碼 from pylab import * # 把陣列轉化為矩陣要用到 list = [(1,2,3),(4,5,6)] # 初始列表 matrix = mat(list)

JavaScript是如何工作的:深入類繼承內部原理 + BabelTypeScript之間轉換

概述 這一 stack ast check 主體 text orm value 現在構建任何類型的軟件項目最流行的方法這是使用類。在這篇文章中,探討用 JavaScript 實現類的不同方法,以及如何構建類的結構。首先從深入研究原型工作原理,並分析在流行庫中模擬基於類的繼承

RGB與HSV之間轉換公式及顏色表

bsp 公式 blog log b- size 分享 ont idt RGB & HSV 英文全稱  RGB - Red, Green, Blue  HSV - Hue, Saturation, Value HSV --> RGB 轉換公式 HSV --&g