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

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

消費者 更新 數字 滿了 多行 如何 之前 圖像 jpg

技術分享


引言:

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


隔行掃描和逐行掃描:

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

技術分享

隔行掃描

技術分享

幀分為奇數和偶數場

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樣本中心的色度值。

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


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

作者:卿萃科技ALIFPGA

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


技術分享

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


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