數字視頻基本知識探討
在電視機中,彩色視頻信號首先分解為亮度信號Y和色度信號,色度信號再分解為U色差信號和V色差信號,最后由YUV三個分量經過矩陣運算變換為RGB信號,以便在顯像管上顯示。那么YUV具體是怎樣變換為RGB呢?這個問題又叫做“彩色空間變換”,我將在本文的后面詳細地討論這個問題。
通過前面的討論,我們已經知道:黑白視頻信號帶寬6 MHz,由幀、場、行、像素等組成,像素用亮度值Y來描述。彩色視頻信號在黑白視頻信號中插入了一個帶寬1.3 MHz的色度信號,由這個信號來得到UV色差信號,最后把YUV變換為RGB來描述像素。
現在我們來分析一下視頻信號的缺點。1、幀頻低。視頻信號的幀頻只有25 Hz,必然導致圖像閃爍。2、分辨率低。在一幀中有效的行只有576行。由于采用了隔行掃描,一幀圖像要由連續的兩場來拼合而成,而實際上很難保證兩場中的行準確地錯開(對準間隙),這進一步導致垂直方向的分辨能力損失。3、亮色串擾。亮度信號和色度信號混合在一起,解碼的時候不能很好地分開,導致亮度信號和色度信號互相干擾。4、缺乏改進余地。除非重新制定新的標準,否則前面提到的三個問題在現有基礎上都很難改進。視頻信號格式有這么多缺點,是因為受當年制定這個標準時的技術條件制約造成的,而近年來通過在電視中加入一些數字處理的手段,比如倍頻掃描(100 Hz場頻)、使用數字梳狀濾波器等方法,電視的圖像質量也得到一些提高。而現在正在研究的數字電視,是重新制定的全新的標準,用以獲得膠片質量的圖像,可能會徹底淘汰現在的視頻標準和電視設備,當然這是將來的事情,也不是我討論的主題。
我想討論的是“數字視頻”,而前面說的都是模擬視頻,這是因為我所說的數字視頻是現有的模擬視頻的數字表示,先搞清楚了模擬視頻,下面的討論就很簡單了。
視頻信號起初是以模擬信號的形式保存在錄像磁帶上的,而現在隨著數字技術的發展,可以變成數字信號保存在光盤或計算機硬盤中,當然這些離不開功能強大的計算機,實際上,在嵌入式領域,數字視頻也是可以應用的,比如用單片機或DSP來處理數字視頻數據。下面,我們就來討論數字視頻數據的格式、轉換、保存、顯示等方面的問題。
從哪個問題開始呢?我們先來討論一下模擬視頻信號解碼并量化成連續的數字視頻流后所包含的一些信號元素。前面我們已經討論了,模擬視頻信號每秒25幀,每幀周期40ms,而每幀又分為2場,每場20ms,先輸出的是奇場,然后是偶場,奇場的行號為第1至312.5行,偶場的行號為第312.5至625行,其中,奇場的第23.5至310行包含有效的視頻信號,偶場的第336至622.5行包含有效的視頻信號。把模擬視頻信號解碼為YUV分量后,分別進行A/D量化采樣,轉換為數字視頻流,時間上也應該是按上面的順序依次輸出。有幾個相關的國際標準對此作了一些約定。比如1994年國際無線電咨詢委員會出臺了CCIR601標準,這個標準主要是針對演播室的要求制定的,其中規定亮度信號的采樣頻率是13.5 MHz,色度信號的采樣頻率是6.75 MHz,采用8位PCM編碼。這樣,每行的Y采樣數為864個,其中有效的Y采樣數為720個。而每行的U或V采樣數為432個,有效的U或V采樣數為360個。平均描述每個像素的YUV的位數分別為8bit、4bit、4bit,又叫做YUV422編碼方案(當然還有很多別的方案,如YUV411等)。國際無線電咨詢委員會還出臺了CCIR656建議,其中規定視頻數據的量化值中的0和255保留不用,而量化數據串行輸出的順序是:U0、Y0、V0、Y1,U2,Y2,V2,Y3,U4,Y5,V4,Y6,如此循環。通過上面的討論,我們可以看出,數字視頻流應包含的元素有:奇偶場指示信號FI(有的稱為ODD)、場同步信號、行同步信號、像素時鐘、YUV數據輸出。在此我們順便計算一下數字視頻流的數據量,每秒的數據量=(720像素*576行*25幀)*2字節=20736000字節,數據率約165Mbps,由此可見數字視頻的數據量之大,數據率之高!
可以想象,保存和描述數字視頻流的最簡單辦法當然就是記錄和描述連續的一幀幀的靜止圖像。保存靜止圖像的最簡單格式是BMP格式,就是位圖。我們現在就來分析一下BMP文件格式。BMP文件記錄圖像的方式實際上有很多種,甚至可以直接在其中記錄YUV分量,但是我不準備討論那么多。BMP文件由文件頭、圖像特征描述、顏色表、圖像數據四部分構成。為了簡單起見,下面用的是VB的語法,下面用到的數字沒特別說明的都是十進制表示。
BMP文件頭數據結構如下:
Type BitMapFileHeader ‘共14字節
bfType As Integer ‘2個字節,填入字符”BM”,即 4D42(16進制)
bfSize As Long ‘4個字節,填入整個BMP文件的字節數大小
bfReserverd1 As Integer ‘2個字節,保留,填入0
bfReserverd2 As Integer ‘2個字節,保留,填入0
bfOffBits As Long ‘4個字節,表示圖像數據在整個BMP文件中的起始位置
End Type
圖像特征描述塊的數據結構如下:
Type BitMapInfoHeader ‘共40字節
biSize As Long ‘4個字節,表示本結構的字節數大小,填入固定的值40
biWidth As Long ‘4個字節,填入圖像水平方向像素數,其值必須是4的整數倍
biHeight As Long ‘4個字節,填入圖像垂直方向像素數
biPlanes As Integer ‘2個字節,填入固定的值1
biBitCount As Integer ‘2個字節,表示每個像素的位數,灰度圖填8,24位真彩圖填24
biCompression As Long ‘4個字節,填入0表示不壓縮
biXSizeImage As Long ‘4個字節,表示圖像的像素總數
biXPelsPerMeter As Long ‘4個字節,填入固定值3780
biYPelsPerMeter As Long ‘4個字節,填入固定值3780
biClrUsed As Long ‘4個字節,填入固定值0
biClrlmportant As Long&
評論