肖文娟 梁鳳梅
(太原理工大學(xué) 信息工程學(xué)院,山西 太原 030024)
隨著微處理器、專用邏輯器件、以及DSP算法以IP核的形式嵌入到FPGA中,FPGA可實(shí)現(xiàn)的功能越來越強(qiáng),使得FPGA在現(xiàn)代圖像處理領(lǐng)域中發(fā)揮著越來越重要的作用[1]。在現(xiàn)代工業(yè)設(shè)計(jì)中,很多顯示器都只支持RGB格式,而很多時(shí)候圖像并非此格式,所以圖像色彩空間的格式轉(zhuǎn)換有很高的研究價(jià)值。
首先圖像采集設(shè)備采集到的圖像數(shù)據(jù)經(jīng)A/D轉(zhuǎn)換后,與行同步、場同步、數(shù)據(jù)使能和時(shí)鐘控制信號一起送給FPGA,F(xiàn)PGA利用外部有源晶振提供的40M時(shí)鐘信號將數(shù)據(jù)寫入DDR SDRAM中,當(dāng)系統(tǒng)發(fā)出讀使能信號時(shí),F(xiàn)PGA從DDR SDRAM中讀取一幀的圖像信息,進(jìn)行格式轉(zhuǎn)換、去隔行、分辨率變換等處理。FPGA輸出的數(shù)字圖像數(shù)據(jù)信號經(jīng)D/A芯片轉(zhuǎn)換后生成RGB真彩模擬信號,通過VGA接口使采集到的高分辨率圖像信號在顯示器上實(shí)時(shí)顯示。
基于XC3S250E[2]的圖像采集系統(tǒng)的硬件框圖如圖1所示。設(shè)計(jì)選用Xilinx公司的Spartan-3e系列FPGA,綜合考慮了它有5508個(gè)邏輯單 元 、216Kbit的 塊 RAM、支 持 DDR SDRAM、最多有158個(gè)可用的I/O等因素。美光的CMOS圖像傳感器MT9D111[3],輸出每秒15幀、分辨率為 1024×768 的 16bit YCbCr(4:2:2)格式圖像數(shù)據(jù)??伤愠鲈撓到y(tǒng)每秒鐘傳輸?shù)臄?shù)據(jù)大小約為189M,在選擇外部存儲芯片DDR SDRAM的時(shí)候要考慮該因素;另外由于圖像處理算法比較復(fù)雜[4],對存儲器內(nèi)存要求更大,所以采用Hynix內(nèi)存為512M的HY5DU121622C(L)TP作為外部存儲芯片。系統(tǒng)選用比較常用的D/A轉(zhuǎn)換芯片ADV7125,其輸入圖像數(shù)據(jù)是RGB(8:8:8)格式。
圖1 系統(tǒng)硬件框圖
系統(tǒng)在XC3S250E中實(shí)現(xiàn)圖像數(shù)據(jù)的處理,主要實(shí)現(xiàn)YCbCr與RGB色彩空間的轉(zhuǎn)換[5]。RGB在產(chǎn)生任何一種顏色時(shí)其三色都需要同樣的帶寬,處理效率不高,而YCbCr則有著很高的壓縮率和傳輸率。所以在圖像處理過程中,很多時(shí)候也要用到Y(jié)CbCr與RGB色彩空間的轉(zhuǎn)換。
我們經(jīng)常用到色彩空間的主要有RGB、YCbCr、CMYK、YIQ等,其中RGB用于彩色監(jiān)視器和一大類彩色視頻攝像機(jī);YCbCr有4:4:4,4:2:2 ,4:1:1,4:2:0幾種采樣格式,其中YCbCr(4:2:2)是DVD、數(shù)字電視、HDTV 以及其它消費(fèi)類視頻設(shè)備的最常用格式;CMYK多用于印刷業(yè);YIQ色彩系統(tǒng)通常被北美的電視系統(tǒng)所采用(屬于NTSC系統(tǒng))。
MT9D111輸出YCbCr(4:2:2)格式的數(shù)據(jù)信號,Y 的范圍是(16,235),Cb和 Cr的范圍是(16,240)。本設(shè)計(jì)采用臨近插值法,原YCbCr(4:2:2)碼流如表1,插值后如表2所示。
根據(jù)ITU-RBT1601標(biāo)準(zhǔn),經(jīng)伽瑪校正后YCbCr到RGB色空間的轉(zhuǎn)換公式為[6]:
用硬件描述語言在FPGA中實(shí)現(xiàn)小數(shù)乘法是數(shù)字化的處理,本設(shè)計(jì)將小數(shù)轉(zhuǎn)化為2的整數(shù)倍冪次方,取整進(jìn)行乘法運(yùn)算后將結(jié)果進(jìn)行移位。為了提高轉(zhuǎn)換運(yùn)算精度,避免在運(yùn)算時(shí)進(jìn)行四舍五入帶入的誤差,本設(shè)計(jì)轉(zhuǎn)換運(yùn)算精度取11位,則YCbCr與 RGB關(guān)系式為:
具體實(shí)現(xiàn)過程為:輸入的8bit Y、Cb、Cr信號分量轉(zhuǎn)換成23bit信號后運(yùn)算,通過移位輸出8bitR、G、B信號。圖2是G分量的轉(zhuǎn)換,R、B分量轉(zhuǎn)換類似。
圖4 功能仿真結(jié)果
本轉(zhuǎn)換采用VHDL語言描述,功能分離后按層次進(jìn)行設(shè)計(jì)[7]。下面給出部分程序,以G分量的轉(zhuǎn)換為例。
先將8bit三行并行的Y、Cb、Cr數(shù)據(jù)分量擴(kuò)展為23bit:
colorout <=STD_LOGIC_VECTOR (TO_UNSIGNED(cst_mult*TO_INTEGER(UNSIGNED(color)),
colorout'length));
定義分量Y、Cb、Cr系數(shù):
constant cst_g_y:integer:=2384;constant cst_g_cb:integer:=803;
constant cst_g_cr:integer:=1665;
G信號轉(zhuǎn)換的具體實(shí)現(xiàn)過程:
g_cst_y<=g_y_kcm+278766;
g_cb_cr<=g_cb_kcm+g_cr_kcm;
if g_cst_y>g_cb_cr then
g_full<=g_cst_y-g_cb_cr;
最后運(yùn)算結(jié)果是23位,其中低11位是為了實(shí)現(xiàn)小數(shù)乘法,中間8位是有效數(shù)據(jù)位。當(dāng)g_full高4位為“0000”時(shí),右移11位得到8位G輸出信號。
g<=g_full(18 downto 11)when g_full(22 downto 19)="0000"else "11111111";
設(shè)計(jì)采用VHDL語言,在ISE9.1i開發(fā)環(huán)境下結(jié)合功能仿真軟件Modelsim進(jìn)行綜合及仿真。頂層模塊的RTL圖如圖3所示,其功能仿真波形如圖4所示。
從仿真測試結(jié)果可以看出,本文設(shè)計(jì)的轉(zhuǎn)換精度高、速度快、實(shí)時(shí)性好、占用內(nèi)存資源,同時(shí)驗(yàn)證了轉(zhuǎn)換的正確性以及實(shí)時(shí)性。
本文完成了基于XC3S250E的圖像采集系統(tǒng)的設(shè)計(jì),并且采用VHDL語言實(shí)現(xiàn)了 YCbCr(4:2:2)到RGB(8:8:8)圖像色彩空間的轉(zhuǎn)換。該系統(tǒng)體積小、重量輕,可以便捷地在不同場合使用;同時(shí)設(shè)計(jì)的色彩空間轉(zhuǎn)換有著比同類轉(zhuǎn)換精度高等優(yōu)點(diǎn),在現(xiàn)代視頻圖像處理領(lǐng)域有很高的實(shí)用以及研究價(jià)值。
[1]黃焱等.FPGA應(yīng)用開發(fā)入門與典型實(shí)例.[M].北京:人民郵電出版社,2008.7.
[2]XILINX.Spartan-3e FPGA Family:Complete Data Sheet.[EB/OL].www.xilinx.com,2009.
[3]Micron.MT9D111SOCDigitalImageSensor:DataSheet.[EB/OL].MicronTechnology,Inc.
[4]胡為.DDRSDRAM在嵌入式系統(tǒng)中的應(yīng)用.[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2006,(3).
[5]李成奇.基于FPGA技術(shù)的視頻采集系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)[D].哈爾濱.哈爾濱理工大學(xué).2008.
[6]BenoitPayetteColorSpaceConverter:RGBto YCbCr.[J].XILINXxapp-637(v1.0)2002.
[7]潘松,黃繼業(yè)等.EDA技術(shù)實(shí)用教程[M].北京:科技出版社,2008.3.