程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> RGB與YUV簡介

RGB與YUV簡介

編輯:關於C++

RGB:

紅綠藍(RGB)是計算機顯示的基色,RGB565支持的色深可編程至高達每像素16位,

即 RGB565(紅色5位,綠色6位,藍色5位)。

YUV:

視頻編解碼器功能

視頻編碼器要求YUV4:2:0格式的視頻輸入,因此可能根據應用需要進行視頻輸入的預處 理,即對YUV4:2:2隔行掃描(例如從攝像機)到YUV 4:2:0非隔行掃描轉換,僅抽取但不過濾UV分。對視頻解碼器而言,還需要進行後處理,以將解碼的YUV 4:2:0數據轉換為RGB進行顯示,包括:YUV 4:2:0到RGB轉換;16位或12位RGB顯示格式;0到90度旋轉,實現橫向或縱向顯示。此外,視頻編解碼器通常還要求具有以下功能和特性:

支持MPEG-4簡單類 0、1 與 2 級;

兼容H.263與 MPEG-4 編解碼標准;

MPEG-4視頻解碼器支持的可選項有:AC/DC預測、可逆可變長度編碼(RVLC)、再同步標志(RM)、數據分割(DP)、錯誤隱藏專利技術、支持每個宏塊4個運動矢量(4MV)、自由運動補償、解碼VOS層;

MPEG-4視頻編碼器選項有:RVLC、RM、DP、支持每個宏塊4個運動矢量(4MV)、報頭擴展碼、支持編碼期間碼率改變、支持編碼期間編碼幀率改變、插入或不插入可視對象序列起始碼;

支持編碼期間序列中插入I幀;

支持編碼器自適應幀內刷新(AIR);

支持多編解碼器,可用相同代碼運行多個編解碼器實例。

  計算機彩色顯示器顯示色彩的原理與彩色電視機一樣,都是采用R(Red)、G (Green)、B(Blue)相加混色的原理:通過發射出三種不同強度的電子束,使屏幕內側覆蓋的紅、綠、藍磷光材料發光而產生色彩。這種色彩的表示方 法稱為RGB色彩空間表示(它也是多媒體計算機技術中用得最多的一種色彩空間表示方法)。

根據三基色原理,任意一種色光F都可以用不同分量的R、G、B三色相加混合而成。

F = r [ R ] + g [ G ] + b [ B ]

其中,r、g、b分別為三基色參與混合的系數。當三基色分量都為0(最弱)時混合為黑色光;而當三基色分量都為k(最強)時混合為白色光。調整r、g、b三個系數的值,可以混合出介於黑色光和白色光之間的各種各樣的色光。

那麼YUV又從何而來呢?在現代彩色電視系統中,通常采用三管彩色攝像機或彩色CCD攝像機 進行攝像,然後把攝得的彩色圖像信號經分色、分別放大校正後得到RGB,再經過矩陣變換電路得到亮度信號Y和兩個色差信號R-Y(即U)、B-Y(即 V),最後發送端將亮度和色差三個信號分別進行編碼,用同一信道發送出去。這種色彩的表示方法就是所謂的YUV色彩空間表示。

采用YUV色彩空間的重要性是它的亮度信號Y和色度信號U、V是分離的。如果只有Y信號分量而沒有U、V分量,那麼這樣表示的圖像就是黑白灰度圖像。彩色電視采用YUV空間正是為了用亮度信號Y解決彩色電視機與黑白電視機的兼容問題,使黑白電視機也能接收彩色電視信號。

YUV與RGB相互轉換的公式如下(RGB取值范圍均為0-255):

Y = 0.299R + 0.587G + 0.114B

U = -0.147R - 0.289G + 0.436B

V = 0.615R - 0.515G - 0.100B

R = Y + 1.14V

G = Y - 0.39U - 0.58V

B = Y + 2.03U

YUV轉換為RGB的公式

第一個公式是YUV轉換RGB(范圍0-255)時用的,第二個公式是用在YUV(601)也成為YCbCr轉換RGB(范圍0-255)時用的。

1.Y =  0.299R + 0.587G + 0.114B

U = -0.147R - 0.289G + 0.436B

V =  0.615R - 0.515G - 0.100B

R = Y + 1.14V

G = Y - 0.39U - 0.58V

B = Y + 2.03U

2.

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

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

R= 1.164 * (Y - 16)  + 1.159 * (V - 128)

YUV 覆蓋(Overlay)

多媒體領域中,尤其在涉及到 MPEG 播放時,通常使用 YUV 顏色空間來表示顏色,如果要在屏幕上顯示一副 MPEG 解壓之後的圖片,則需要進行 YUV 顏色空間到 RGB 顏色空間的轉換。YUV 覆蓋最初來自一些顯示芯片的加速功能。

這種顯示芯片能夠在硬件基礎上完成 YUV 到 RGB 的轉換,免去軟件轉換帶來的

性能損失。在這種顯示芯片上建立了 YUV 覆蓋之後,可以直接將 YUV 信息寫入

緩沖區,硬件能夠自動完成 YUV 到 RGB 的轉換,從而在 RGB 顯示器上顯示出來

。在不支持 YUV 覆蓋的顯示芯片上,MiniGUI 也能夠通過軟件實現 YUV 覆蓋,

這時,需要調用 DisplayYUVOverlay 函數將 YUV 信息轉換並縮放顯示在建立

YUV 覆蓋的 DC 設備上。

reference from:http://6xudonghai.blog.163.com/blog/static/336406292009728052275/

本文出自 “驿落黃昏” 博客,請務必保留此出處http://yiluohuanghun.blog.51cto.com/3407300/860229

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved