基于NiosII的視頻采集與DVI成像研究及實(shí)現
3.2 圖像剪裁處理
PAL-D制式視頻在ITU-RBT.656標準下,輸出像素面為720×576大小,而本設計中要求輸出大小為640×480像素面,所以必須使得行720像素變?yōu)?40個(gè),采用每9個(gè)像素丟棄1個(gè)像素,因為Y/Cb/Cr是交替輸出的,即Cb-Y-Cr-Y傳輸,每個(gè)像素都有亮度數據Y,但是色度Cr和Cb是交替的。如果第1個(gè)像素是Cb和Y數據,則第8個(gè)像素即為Cr和Y數據,第9個(gè)像素為Cb和Y數據,現在丟棄第9個(gè)像素數據,先把第10個(gè)素的Cr數據和第11個(gè)像素的Cb交換,這樣就保持了Cb和Cr的交替。視頻中采取每6行可視像素丟棄1行,對于576行可視像素,實(shí)際丟棄96行,即變?yōu)閷?shí)際可顯示480行。
3.3 圖像交織與存儲處理
視頻信號采集控制處理后產(chǎn)生行、場(chǎng)、幀、視頻有效標志及每場(chǎng)視頻行數、每行像素點(diǎn)數。本設計利用這些信號組合作為存儲地址控制字寫(xiě)入SSRAM,每2個(gè)DATACLK為1個(gè)像素數據,4個(gè)DATACLK為2個(gè)像素數據32 bit,FPGA控制每4個(gè)DATACLK寫(xiě)入一次32 bit數據。
每場(chǎng)視頻可視行為288行,占用2進(jìn)制位9 bit,奇偶場(chǎng)標志1 bit,每行像素有640個(gè),存入SSRAM時(shí)按照每2個(gè)像素寫(xiě)入一次,故每行像素為360個(gè)寫(xiě)入次,設計為9 bit,總共為19 bit,正好占用完19 bit地址線(xiàn)。
奇偶場(chǎng)標志就是上述EAV/SAV狀態(tài)字中的F,電視視頻中,首先傳輸的是偶數場(chǎng),此時(shí)A9=0;其次傳輸的是奇數場(chǎng),此時(shí)A9=1。幀控制位frame定義為1 bit,當完成一幀的傳輸后就使frame=frame+1,這樣幀控制位就是0-1-0-1-0-1序列,完成一幀傳輸就翻轉一次。幀控制位用來(lái)切換存儲體,當幀控制位切換在第一片SSRAM上時(shí),偶數場(chǎng)先存入到SSRAM中,然后奇數場(chǎng)數據嵌入到SSRAM中。
4 圖像處理和DVI編碼顯示
視頻采集的圖像已經(jīng)交替存入SSRAM中,當一幀存儲完畢,該存儲體就可以進(jìn)行處理上傳。圖像處理包括Y/Cb/Cr 4:2:2格式轉化為Y/Cb/Cr 4:4:4,Y/Cb/Cr轉化為RGB格式,可實(shí)時(shí)RGB像素處理,像素處理后按照行、場(chǎng)同步信號依次送入DVI芯片。
4.1 YCrCb轉RGB處理
首先處理的是Y/Cb/Cr 4:2:2格式轉化為Y/Cb/Cr 4:4:4格式,就是對每個(gè)像素擴展其色度數據,使得每個(gè)像素為24 bit。其中8 bit為亮度數據,8 bit為Cr數據,8 bit為Cb數據。
由YCrCb數據轉換為RGB數據可按照下式:
R=1.164×(Y-16)+1.596×(Cr-128)
G=1.164×(Y-16)-0.813×(Cr-128)-0.392×(Cb-128)(1)
B=1.164×(Y-16)+2.017×(Cb-128)
實(shí)際上FPGA片內不能進(jìn)行小數運算,因此把需要運算的數左移9 bit,且運用FPGA片內的乘法器宏單元完成。則式(1)變?yōu)槭?2):
R=596×Y+817×Cr-114 131
G=596×Y-416×Cr-200×Cb+69 370(2)
B=596×Y+1 033×Cb-141 787
這樣得到的RGB信號只需要右移9 bit就可以得到正確的8 bit數據位寬度的RGB信號,對RGB像素的處理受NiosII核控制,掛接在NiosII核上的Avalon從設備有3 bit控制信號,其值從0~7,分別對應灰度處理、像素水平線(xiàn)性放大插值處理、水平縮小處理、原三彩色輸出和無(wú)定義。
若進(jìn)行灰度處理,則按照下式計算:
Y=0.299×R+0.587×G+0.114×B(3)
在計算時(shí)也需要先左移9 bit,采用3路乘法MULT_
ADD宏單元計算,計算結果右移9 bit。如果進(jìn)行水平像素放大,則采取線(xiàn)性插值法,其他圖像處理按照相應算法進(jìn)行。
評論