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