1. 程式人生 > >嵌入式視訊處理基礎(二)

嵌入式視訊處理基礎(二)

引言:

作為消費者,我們對於各種形式的視訊系統都已經非常熟悉了。但是從嵌入式開發人員的角度來看,視訊就好像是一張紛繁複雜的網路,裡面充滿了各種不同的解析度、格式、標準與顯示等。

隔行掃描和逐行掃描:

隔行掃描起源於早起的模擬電視廣播,那時候需要按順序將影象快速重新整理,以減小視覺上的閃爍,但是當時的技術還無法做到這麼快速的重新整理整個螢幕。因此,就將每一幀進行交織處理,即分為兩場,一個由奇數掃描行組成,另一個由偶數掃描行組成。

隔行掃描

幀分為奇數和偶數場

NTSC(PAL)的幀重新整理率大約為30(25)幀/秒。這樣,大的區域閃爍頻率為60(50)Hz,而區域性區域閃爍頻率為30(25)Hz。這是一種節省寬頻的折中方案,同時也考慮了眼睛對於大的純色區域的閃爍更加敏感的特性。

隔行掃描不僅僅有閃爍的問題,而且還會引起其他問題。首先,掃描行本身通常是可見的。這是因為每一個NTSC場是1/60秒的時間間隔內發生的事情的一個快照,一個視訊幀由兩個暫時的適當的方式進行的。但是,當我們要將隔行場轉換為逐行場時(這一過程稱為去隔行),可能引起影象中運動部分出現鋸齒狀的邊緣。去隔行非常重要,因為將視訊幀作為一系列相鄰的行來處理往往具有更高的效率。

隔行掃描鋸齒波

隨著數字電視的出現,為了提高影象質量,逐行掃描已經成為一種非常流行的輸入和輸出視訊格式。這種掃描方式下,整個影象按從上到下的順序進行更新,掃描速率是隔行掃描系統的兩倍。這就消除了與隔行掃描有關的許多問題。在逐行掃描中,兩個場組成一個視訊幀的概念就不適用了。

逐行掃描

幀被連續儲存

顏色空間:

有許多種不同的方式可以用來表示顏色,每一種顏色系統適用於不同的目的。最基本的表示方法是RGB顏色空間。

RGB代表“紅、綠、藍”(red-green-blue),這是一種常用於照相機感測器和計算機圖形顯示的顏色系統。三種顏色疊加在一起就構成了白色,將三種顏色按不同的比例組合起來就可以構成可見光範圍內的任何顏色。RGB是所有其他顏色空間的基礎,在計算機圖形領域內,RGB是壓倒性的選擇。

RGB三原色

正如RGB在圖圖形俠士領域佔有統治地位一樣,CYMK在列印領域則一枝獨秀。CYMK代表“Cyan(青色)-Yellow(黃色)-Magenta(品紅)-blacK(黑色)”,在列印和繪畫方面是一種流行的顏色空間。這個顏色空間可以看做是RGB顏色系統的逆向過程,從某種程度上說,RGB是在做加法,而CYMK則是在做減法。換句話說,RGB光加在一起構成了白光,而CY和M墨水加在一起則吸收了所有的白色光,也就是說,構成了黑色。但是由於很難產生真正的純黑色,在現有列印介質的物理特性下,黑色也被加入到這個顏色系統中(因此使用了第四個字母K)。

CYMK顏色

RGB與CMYK對比

CYMK各部分顏色

從上圖可以看出在列印領域CYMK的絕對優勢。

伽馬校正:

在處理顏色空間時,“伽馬”是一個非常重要的現象。這一術語主要用來描述亮度的感知和顯示中存在的非線性特點。要注意的是,這一特點具有兩個方面的表現:第一,人眼是以非線性方式感知亮度。第二,物理輸出裝置是以非線性方式顯示亮度。非常巧合的是,人類感知亮度的敏感度幾乎總是CRT顯示輸出特性的逆。

gamma校正

從另一角度說,顯示器的亮度粗略與輸入模擬訊號電壓的gamma次冪成正比。在CRT或者LCD顯示器上,這個值通常在2.2-2.5之間。在照相機的預補償中,將RGB的值擴充套件到1/gamma的冪。

這樣造成的結果是,攝像機和計算機圖形處理中,通過一個稱為“伽馬校正”的過程,預先將其RGB輸出資料流針對目標顯示器的非線性特點進行補償,同時也產生了一個用來描述眼睛如何真正看待場景模型。

伽馬校正將給定的輸入幅度產生的亮度輸出進行線性化

(a)線性輸入電壓在顯示器上產生了非線性的亮度輸出

(b)通預補償這種失真,顯示器的亮度與輸入電壓保持線性關係

經過伽馬校正後的RGB座標稱為R’G’B’空間,亮度值Y’就是從這些座標中得到的。嚴格的說,術語“亮度”(luma)僅僅應該用來指伽馬矯正後的亮度值,而真正的“亮度”Y才是一個科學的術語。,這個值使用RGB的加權和得到的。

RGB通道格式是描述真實世界顏色的一種很自然的方式,三個通道中每一個都與其他兩個高度相關。當給定一副影象時,單獨看RGB通道就可以看到這種現象—可以在每個顏色通道中感知整個影象。另外,在影象處理中,RGB並不是很好的選擇,因為一個顏色通道有變化,另外兩個通道也必須做相應的變化,每個通道佔用相等的頻寬。

為了降低傳輸頻寬的要求,提高視訊壓縮率,相應的開發出了其他的顏色空間,這些顏色空間是高度不相關的,這樣才能比RGB具有更好的壓縮特性。最流行的顏色空間有YPbPr、YCbCr和YUV,這些系統無一例外地將亮度訊號從其他兩個色度訊號中分離出來。這種分離操作是通過尺度化的色差因子(B’-Y’)和(R’-Y’)實現的。

下列公式完成8位元表示的YCbCr和RGB顏色空間之間的轉換,這裡的Y、R、G、和B的正常範圍是 16~235,而Cr和Cb正常範圍是16~240。

    • Y=0.299R+0.587G+0.114B
    • Cb=-0.168R-0.330G+0.498B=128
    • Cr0.498R-0.417G-0.081B+128
    • R=Y+1.397(Cr-128)
    • G=Y-0.711(Cr-128)-0.343(Cb-128)
    • B=Y+1.765(Cb-128)

YCbCr:

由於視杆細胞比視錐細胞多的多,人眼對亮度感覺要比對色差更明顯。幸運的是,在YCbCr顏色系統中,我們更加註意的亮度分量Y,而對顏色分量Cb和Cr不太敏感。因此,有些視訊標準和壓縮演算法通過對顏色分量進行下采樣,實現了更高的壓縮率,從而節省了視訊的寬頻。

在進一步討論這個問題之前,我們先熟悉一下專用術語。在下采樣前,假定我們有一個全頻寬的YCbCr流。也就是說,視訊源產生的畫素流是下圖格式:

4:4:4YCbCr取樣

這種格式稱為4:4:4 YCbCr。第一個數字永遠是4,向來對應亮度(luma)取樣平率和NTSC顏色子載波頻率的比值。第二個數字對應於某一水平行中亮度和色度(chroma)之間的比值:如果色度訊號沒有相對亮度做下采樣,這個數字就是4,。第三個數字如果和第二個數字相同,則說明色度訊號在垂直方向沒有下采樣。另一方面,如果第三個數字為0  ,那麼行之間的色度下采樣為2:1。因此,4:4:4意思是每一行的每一個畫素都有各自獨立的Y、Cr和Cb分量。

如果採用水平因子為2來對一個4:4:4的YCbCr訊號色度分量進行下采樣,最終將得到一個4:2:2的YCbCr訊號。這裡的4:2:2意味著,對某一行視訊資料來說,每兩個色度值對應的4個亮度值。每一對(Y,Cb)或(Y,Cr)都代表一個畫素值。從顯示質量上來說,4:2:2的影象只比對應的4:4:4源影象略有下降,但卻比後者節省大約33%的頻寬。

4:2:2YCbCr取樣

需要注意的是,4:2:2並不是唯一的色度下采樣方式。用水平因子來對一個4:4:4的YCbCr色度訊號進行下采樣,最終得到一個4:1:1的YCbCr資料流。一對色度值在空間上與4個亮度值保持一致。這種色度過濾方法將節省50%的頻寬,4:1:1的YCbCr是一種視訊壓縮演算法輸入資料,以及從視訊解壓縮演算法輸出資料時取樣的一種格式。

(a)YCbCr4:4:4 資料流及其色度下采樣後的派生格式

(b)4:2:2

(c)4:1:1

(d)4:2:0

在視訊壓縮和解壓縮中,另一種常用的格式為4:2:0 YCbCr。這種格式要比前面提到的其他格式都複雜,原因主要由兩個。其一,Cb和Cr分量在水平和垂直方向都進行了因子為2的下采樣。這就意味著為了產生下采樣的資料流,就必須儲存多行的視訊資料。其二,更重要的是,有兩種不同的4:2:0 YCbCr格式。MPEG-2壓縮使用了一種水平方向上共位的方案,但MPEG-1和JPEG演算法使用另一種格式,即採用Y樣本中心的色度值。

由於篇幅,嵌入式視訊基礎這期內容先分享到這裡,下期更精彩。

版權所有權歸卿萃科技,轉載請註明出處 

原文地址:卿萃科技FPGA極客空間 微信公眾號

 

 掃描二維碼關注卿萃科技FPGA極客空間