1. 程式人生 > >數字視訊基礎(一)

數字視訊基礎(一)

轉自https://blog.csdn.net/shanghaiqianlun/article/details/26477675

 

1.    基本概念

1.1視訊的表示

1.1.1影象的表示

         把一個影象用一個個畫素來表示,每個畫素有確定的位置和確定的亮度值(這裡假設是黑白影象)。於是構成了圖象。

 

比如下面的圖片:

我們用0表示白,1表示黑,則影象可表示成:

 

         影象有2個解析度:一個是空間解析度

,也就是圖中的水平解析度N和垂直解析度M;另一個是灰度級解析度,也就是用幾個bit來表示灰度等級。極端的有二值圖,如剛才那個“1”的圖。

 

1.1.2視訊的表示

         視訊也就是在時間軸上的影象序列,如果把影象看成是二維(空間x,y),那麼視訊就是三維了(空間x,y,加時間t,這個t有時候可能是幀號)。視訊的數學表達是f(x, y, t)或f( ,t) 或f(x, y, n)或f( ,n)

         每秒影象的幀數,稱為視訊的幀頻。

1.1.3逐行視訊和隔行視訊

逐行掃描就是成像時一行行掃描形成一幀視訊,顯示的時候將一幀視訊顯示在螢幕上。

        隔行視訊是成像時先掃描偶數行,形成一場叫偶場,然後再掃描奇數行形成奇場影象。這樣將一幀影象分成了2場:偶場和奇場,這兩場在空間上和時間上都是不一樣的。顯示的時候,也應該先在顯示器的偶行位置顯示偶場影象,再在奇行位置顯示奇場影象。

 

逐行視訊和隔行視訊的比較:

 

         下面討論一些問題:

(1)      為什麼有隔行掃描這種視訊格式?

假設一個720x576解析度幀頻是25Hz的視訊,如果是逐行掃描,則資料量為720x576x25畫素/秒。如果我們採用隔行掃描,則資料量為720x288x50畫素/秒,隔行掃描是場頻為50Hz。顯然資料量是相同的,但是,隔行掃描帶來的好處是影象的重新整理頻率是50Hz了,這樣大大降低了早期映象管顯示器的顯示視覺效果,視訊閃爍感會大大降低。

(2)      隔行視訊的顯示問題:

我們現在大量使用的LCD顯示器均是逐行掃描的顯示器,對於隔行視訊,要把奇偶兩場合併到一起形成一幀一次性顯示出來,我們前面討論過偶場和奇場在空間上和時間上都是不一樣的,因此,這種簡單的合併,如果影象是靜止的,不會有問題;但是如果攝像機是運動的,或者說影象內容是運動的,就會出現毛刺樣的鋸齒問題,影象質量嚴重惡化,如下圖,這個圖是不難理解的且一定要理解。如何解決這個問題,需要一個去隔行演算法,我們後面再做介紹。

(3)      隔行視訊的解析度的問題

如果視訊內容是靜止的,那麼隔行視訊能達到逐行視訊的解析度。如果視訊內容是變化的,在隔行顯示器中顯示,垂直方向解析度會降低一半連載逐行顯示器中顯示,即便採用去隔行演算法,垂直分佈率也會略有降低。

1.2 色彩空間

1.2.1 不同的色彩空間用處不一樣

         對於黑白影象,一個畫素,我們用亮度(或灰度)來表示其亮暗程度,一般我們用8bit或10bit、甚至16bit的無符合整數來表示一個畫素的灰度。

         對於彩色影象,我們都知道可以用R(紅分量)、G(綠色分量)、B(藍色分量)來這三個分量表示一個畫素。

         用RGB來表示影象非常適合CCD、顯示器等裝置,但是有時做影象處理時用RGB並不是很方便,比如:我們想調整影象亮度、飽和度等的時候,或者僅僅想調整亮度的時候,或者分析視訊物件的亮度特徵的時候,我們在RGB這個色彩空間是做。於是,我們又用了YUV(YCbCr)、HSI等色彩空間,無論是RGB、YUV、HSI它們都能夠對彩色影象進行表述,因此,互相之間可以轉換。

         HSI:H分量反映色度,S分量反映飽和度,I分量反映亮度。

         YUV(YCbCr):Y亮度分量,U、V(或Cb、Cr)顏色分量。

1.2.2 色彩空間的互相轉換

(1)RGB轉HSI

 

(2)HSI轉RGB:

 

(1)RGB轉YUV:

 

(2)YUV轉RGB:

1.2.3 彩色影象的格式

         RGB表示的影象,一般均是4:4:4格式,也就是每個畫素都有自己的RGB,資料格式R0,G0,B0,R1,G1,B1….

一般我們用8Bit無符合數來表示RGB三個分量,因此一個畫素需要24bit,為了節省空間,我們有RGB444(三個分量都是4bit),RGB555(三個分量都是5bit),RGB565(R、B分量都是5bit,G分量是6bit)

YUV表示的影象有4:4:4、4:2:2、4:2:0

關於4:4:4,4:2:2,4:2:0用下圖解釋:

 

    RGB和YUV每個分量資料所佔的儲存記憶體大小如下圖:

 

 

         彩色影象的Bayer編碼:

         Bayer編碼是一種使用8bit的資料位寬輸出24bit(RGB)彩色訊號的一種方法,給每個畫素分配三個分量(R、G、B)之一,這一你可以利用每個畫素自身及其臨近位置畫素的顏色資訊來獲得該畫素RGB資訊。

 

Line0:BGBGBGBG。。。

Line1:GRGRGRGR。。。

Line2:BGBGBGBG。。。

Line3:GRGRGRGR。。。

假設你想確定Line2,Col 3這個位置的畫素的RGB值,其周邊畫素顏色分量值如下:

RGR   -----   200  50  220

GBG   ----    60  100  62

RGR   ----    196  58  198

則該畫素的RGB值可以計算如下:

R = (200+220+196+198)/4

G = (50 + 80+62+58)/4 = 58

B = 100

當然這種計演算法比較簡單,還有更簡單,也有更復雜,這些不過是運算量、速度、硬體、和影象質量之間的一種交易。