1. 程式人生 > 其它 >技術分享| RTC通訊中常用的影象格式

技術分享| RTC通訊中常用的影象格式

一,概述

在RTC通訊過程中,影象需要採集、美化、壓縮編碼、傳輸、解碼、顯示,這個過程中會涉及到很多影象格式,常用的如YUV、RGB,其中YUV和RGB各自也有很多分類。今天我們就詳細的介紹一下這些影象格式。

二,YUV格式

YUV是視訊、圖片、相機等應用中使用的一類影象格式,是所有“YUV”畫素格式共有的顏色空間的名稱。 與RGB格式(紅 - 綠 - 藍)不同,YUV是用一個稱為Y(相當於灰度)的“亮度”分量和兩個“色度”分量表示,分別稱為U(藍色投影)和V(紅色投影),由此得名。

YUV也可以稱為YCbCr,雖然這些術語意味著略有不同,但它們往往會混淆並可互換使用。

1,什麼是YCbCr

Y表示亮度,CbCr表示顏色。怎麼表示顏色,可以看下面這幅座標圖:


Y表示亮度分量:如果只顯示Y的話,影象看起來會是一張黑白照。

U(Cb)表示色度分量:是照片藍色部分去掉亮度(Y)。

V(Cr)表示色度分量:是照片紅色部分去掉亮度(Y)。

要說清楚YUV,我們時刻需要記住要從bit數,和儲存結構兩方面考察,所以得分別說清楚這兩點:

YUV的取樣格式: 空間-間:不同空間,即描述一個畫素的bit數不同,比如yuv444,yuv422,yuv411,yuv420。即我們在採集圖片、視訊幀時,是如何獲取每個畫素的Y、U、V三個分量的。

YUV的儲存格式: 空間-內:相同空間,即描述一個畫素的bit數相同,但是儲存方式不同,比如對於yuv420而言,又可細分為yuv420p,yuv420sp,nv21,nv12,yv12,yu12,I420。即Y、U、V三個分量的值,是以什麼方式儲存在記憶體或者檔案中的。

2,分類標準

首先,我們可以將 YUV 格式按照資料大小分為三個格式,YUV 420,YUV 422,YUV 444。由於人眼對 Y 的敏感度遠超於對 U 和 V 的敏感,所以有時候可以多個 Y 分量共用一組 UV,這樣既可以極大得節省空間,又可以不太損失質量。這三種格式就是按照人眼的特性制定的。

  • YUV 420,由 4 個 Y 分量共用一套 UV 分量
  • YUV 422,由 2 個 Y 分量共用一套 UV 分量
  • YUV 444,不共用,一個 Y 分量使用一套 UV 分量

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

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

  • Planar YUV 三個分量分開存放
  • Semi-Planar Y 分量單獨存放,UV 分量交錯存放
  • Packed YUV 三個分量全部交錯存放

注意:Interleaved 是屬於 Packed 的,但是在 422 中,用 Interleaved 更加形象一些。

按照這三種方式,我們就可以將 YUV 格式進行比較細緻的分類了。

具體分類我們總結了一張圖:

三,RGB

那麼什麼是RGB影象格式呢,其實他並不陌生,從初中開始接觸的色光的三原色,告訴我們我們可以看到的光可以由這三種顏色按一定的比例去混合得到;後來在HTML以及Android開發中設定元素/控制元件的顏色時,可以通過一串數字,得到某個特定的顏色。這就是RGB的應用。

RGB色彩模式是工業界的一種顏色標準,是通過對紅(R)、綠(G)、藍(B)三個顏色通道的變化以及它們相互之間的疊加來得到各式各樣的顏色的,RGB即是代表紅、綠、藍三個通道的顏色,這個標準幾乎包括了人類視力所能感知的所有顏色,是運用最廣的顏色系統之一。

其原理是: RGB是從顏色發光的原理來設計定的,通俗點說它的顏色混合方式就好像有紅、綠、藍三盞燈,當它們的光相互疊合的時候,色彩相混,而亮度卻等於三者亮度之總和,越混合亮度越高,即加法混合。

紅、綠、藍三盞燈的疊加情況,中心三色最亮的疊加區為白色,加法混合的特點:越疊加越明亮。

紅、綠、藍三個顏色通道每種色各分為256階亮度,在0時“燈”最弱——是關掉的,而在255時“燈”最亮。當三色灰度數值相同時,產生不同灰度值的灰色調,即三色灰度都為0時,是最暗的黑色調;三色灰度都為255時,是最亮的白色調。

RGB 顏色稱為加成色,因為您通過將 R、G 和 B 新增在一起(即所有光線反射回眼睛)可產生白色。加成色用於照明光、電視和計算機顯示器。例如,顯示器通過紅色、綠色和藍色熒光粉發射光線產生顏色。絕大多數可視光譜都可表示為紅、綠、藍 (RGB) 三色光在不同比例和強度上的混合。這些顏色若發生重疊,則產生黃、青和紫。

下圖是常用的RGB格式的總結:

四,總結

數字影象已經發展了近百年的時間,不同的影象格式在這個發展過程中也不斷湧現,影象格式有很多很多種類,因此我們總結了一些常用影象格式型別分類,需要的小夥伴可以收藏,在開發的過程中可以進行快速查閱。