基于FPGA的圖像實(shí)時(shí)處理系統(tǒng)設(shè)計(jì)
由于現(xiàn)場(chǎng)實(shí)時(shí)測(cè)量的需要,機(jī)器視覺(jué)技術(shù)越來(lái)越多地借助硬件來(lái)完成,如DSP芯片、專用圖像信號(hào)處理卡等。但是,DSP做圖像處理也面臨著由于數(shù)據(jù)存儲(chǔ)與處理量大,導(dǎo)致處理速度較慢,系統(tǒng)實(shí)時(shí)性較差的問(wèn)題。本文將FPGA的IP核內(nèi)置緩存模塊和乒乓讀寫結(jié)構(gòu)相結(jié)合,實(shí)現(xiàn)了圖像數(shù)據(jù)的緩存與提取,節(jié)省了存儲(chǔ)芯片所占用的片上空間,并且利用圖像預(yù)處理重復(fù)率高,但算法相對(duì)簡(jiǎn)單的特點(diǎn)和FPGA數(shù)據(jù)并行處理,結(jié)合流水線的結(jié)構(gòu),大大縮短了圖像預(yù)處理的時(shí)間,解決了圖像處理實(shí)時(shí)性差的問(wèn)題。
本文引用地址:http://www.ex-cimer.com/article/276158.htm1系統(tǒng)架構(gòu)和流程簡(jiǎn)介
本系統(tǒng)采用了FPGA與DSP相結(jié)合的架構(gòu),綜合了各自的優(yōu)點(diǎn),使系統(tǒng)滿足實(shí)時(shí)性要求的同時(shí),又可以在后續(xù)任務(wù)中完成復(fù)雜算法的處理。系統(tǒng)的整體架構(gòu)如圖1所示。
系統(tǒng)上電后,CCD相機(jī)向AD轉(zhuǎn)換芯片TVP5150輸入PAL制式模擬圖像信號(hào),TVP5150將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)后,以ITU-R BT656格式傳輸?shù)紽PGA,F(xiàn)PGA對(duì)采集到的ITU-R BT656格式的圖像數(shù)據(jù)去消隱化后進(jìn)行預(yù)處理,處理完之后傳輸?shù)紻M642的VP0口,VP0以8位RAW格式接收?qǐng)D像數(shù)據(jù),并通過(guò)EDMA通道存儲(chǔ)到連接在EMIFA接口上的SDRAM中。經(jīng)過(guò)DSP的圖像處理后,將SDRAM中的圖像數(shù)據(jù)以ITU-R BT656的格式經(jīng)DM642的VP2口傳輸?shù)紻A芯片SAA7121,然后SAA7121進(jìn)行DA轉(zhuǎn)換后,將PAL制式的模擬信號(hào)輸出到LCD顯示器上顯示。需要說(shuō)明的是,TVP5150和SAA7121通過(guò)DM642的I2C總線接口配置。
圖1系統(tǒng)結(jié)構(gòu)框圖
2 FPGA圖像緩存與處理
由于該系統(tǒng)利用FPGA并行性和高速性來(lái)縮減圖像預(yù)處理的時(shí)間,因此,F(xiàn)PGA的圖像緩存和預(yù)處理環(huán)節(jié)直接影響到系統(tǒng)的實(shí)時(shí)性,是整個(gè)系統(tǒng)的核心部分,也是本文所要介紹的重點(diǎn)。根據(jù)圖像預(yù)處理的需求和FPGA內(nèi)部各模塊功能的不同,將其分為4個(gè)部分:去消隱化、濾波、閾值分割和邊緣提取。
2.1去消隱化
FPGA接收TVP5150傳輸?shù)臄?shù)字信號(hào)為ITUR BT656格式,該格式除了傳輸4∶2∶2的YCbCr視頻數(shù)據(jù)流外,還包含行、列消隱信號(hào)。因此,需要將行列消隱信號(hào)剔除掉,以便后期進(jìn)行圖像預(yù)處理。
根據(jù)BT656的固有結(jié)構(gòu),編寫了Verilog硬件語(yǔ)言程序,用于提取BT656中的720×576個(gè)像素點(diǎn)的有效視頻數(shù)據(jù),由于圖像處理過(guò)程只需要檢測(cè)亮度信號(hào)(Y分量),因此同時(shí)舍去各像素點(diǎn)的色度信號(hào)(Cb、Cr分量),僅保留亮度信號(hào)作為圖像有效數(shù)據(jù)。在去消隱化過(guò)程中,每行起始狀態(tài)里,檢測(cè)輸入8位數(shù)據(jù),如果連續(xù)3個(gè)輸入信號(hào)滿足FF、00、00結(jié)構(gòu),則跳入下一個(gè)狀態(tài),判斷下一個(gè)8位輸入XY信號(hào),是否為有效圖像標(biāo)志信號(hào)(80標(biāo)志該行為偶場(chǎng)圖像數(shù)據(jù),C7標(biāo)志該行為奇場(chǎng)圖像數(shù)據(jù)),若判斷是,則計(jì)數(shù)器計(jì)數(shù),并采集計(jì)數(shù)器為偶數(shù)時(shí)的數(shù)據(jù)(即亮度信號(hào)),為圖像有效數(shù)據(jù),當(dāng)采集滿720個(gè)圖像有效數(shù)據(jù)時(shí),狀態(tài)機(jī)轉(zhuǎn)入初始狀態(tài)繼續(xù)等待FF、00、00結(jié)構(gòu),并依此循環(huán)。
2.2濾波
攝像機(jī)采集的圖像存在各類噪聲,從而對(duì)目標(biāo)信息的進(jìn)一步處理產(chǎn)生不利影響,因此,獲取圖像后需要對(duì)圖像進(jìn)行濾波??紤]到中值濾波在平滑脈沖噪聲方面非常有效,并且可以保護(hù)圖像尖銳的邊緣的優(yōu)點(diǎn),我們選用3×3中值濾波作為系統(tǒng)的圖像濾波算法。中值濾波模塊包括3個(gè)子模塊:乒乓結(jié)構(gòu)讀寫模塊、3×3陣列生成模塊和中值濾波算子模塊,其流程如圖2所示。
圖2中值濾波模塊流程圖
2.2.1乒乓結(jié)構(gòu)讀寫模塊
為了節(jié)約芯片成本和電路板的片上空間,圖像數(shù)據(jù)的存儲(chǔ)利用FPGA上固有的IP核生成雙口RAM來(lái)緩存。由于圖像數(shù)據(jù)量較大,而中值濾波只需要持續(xù)地提取3×3模塊來(lái)進(jìn)行數(shù)據(jù)處理,因此,僅需生成4片雙口RAM,每個(gè)用于存儲(chǔ)一行的圖像數(shù)據(jù),通過(guò)乒乓讀寫結(jié)構(gòu),便可實(shí)現(xiàn)數(shù)據(jù)的緩存。
乒乓讀寫結(jié)構(gòu)是指將輸入數(shù)據(jù)流通過(guò)輸入數(shù)據(jù)選擇單元等時(shí)地將輸入數(shù)據(jù)分配到兩個(gè)數(shù)據(jù)緩存區(qū),并且再寫入某一個(gè)緩存區(qū)的過(guò)程中,從另外一個(gè)緩存區(qū)讀出上個(gè)緩存周期寫入的數(shù)據(jù),依此循環(huán),不斷往復(fù)。在本系統(tǒng)中,選用4片1024×8bit的雙口RAM作為緩存區(qū),在每個(gè)緩存周期,向其中1片雙口RAM中寫入圖像數(shù)據(jù),同時(shí),讀控制模塊從另外3片雙口RAM中讀出前三個(gè)緩存周期已寫入的數(shù)據(jù),用于生成3×3陣列。當(dāng)一行數(shù)據(jù)緩存完成后,寫使能信號(hào)跳轉(zhuǎn)到下一個(gè)雙口RAM,繼續(xù)進(jìn)行下一行數(shù)據(jù)寫入,讀控制模塊繼續(xù)讀取剩余三行所存儲(chǔ)數(shù)據(jù)。
2.2.2 3×3陣列生成模塊
3×3陣列生成模塊利用了3個(gè)并行的24位移位寄存器,如果讀使能信號(hào)有效,則在每個(gè)時(shí)鐘的上升沿,將3個(gè)移位寄存器中的數(shù)據(jù)左移8位,然后將從3個(gè)雙口RAM中讀取的數(shù)據(jù)分別填充各自對(duì)應(yīng)移位寄存器的后8位,在每個(gè)讀取周期內(nèi)循環(huán),直到讀使能信號(hào)置低時(shí)停止,然后等待下一行數(shù)據(jù)的循環(huán)。這樣,就生成了中值濾波所需要的3×3陣列。需要注意的是,每一幀圖像的第一行和最后一行因?yàn)闆](méi)有相應(yīng)的上下行數(shù)據(jù),因此不能提取3×3陣列,所以需要控制信號(hào)將該兩行數(shù)據(jù)的3×3陣列剔除,以滿足圖像處理的準(zhǔn)確性。
在雙口RAM的讀寫過(guò)程中,涉及到讀寫的時(shí)序問(wèn)題,讀寫時(shí)序的控制必須滿足建立和保持時(shí)間的關(guān)系,以滿足圖像數(shù)據(jù)準(zhǔn)確性的要求。在此,設(shè)計(jì)了一種新型的讀寫時(shí)序控制方法,首先,在數(shù)據(jù)傳輸至寫雙口RAM模塊時(shí),利用一個(gè)與雙口RAM寫時(shí)鐘頻率相同,但是相位相差180°的時(shí)鐘做同步處理,使數(shù)據(jù)信號(hào)和控制信號(hào)的上升沿與該時(shí)鐘同步,然后,將同步后的數(shù)據(jù)信號(hào)和控制信號(hào)傳輸?shù)诫p口RAM的寫數(shù)據(jù)端口,則可以將觸發(fā)采集的寫時(shí)鐘的上升沿,恰好置于數(shù)據(jù)信號(hào)和控制信號(hào)的中央部分,以此保證數(shù)據(jù)寫入的穩(wěn)定性。該讀寫時(shí)序控制圖如圖5所示,其中,Clk_W為寫時(shí)鐘,Clk_180°為上文所講的同步時(shí)鐘,Data_in為同步前數(shù)據(jù)信號(hào),Data_in1為同步后數(shù)據(jù)信號(hào),由圖可以清楚的顯示,利用這種方法,可以將數(shù)據(jù)信號(hào)穩(wěn)定的寫入雙口RAM中,減少了時(shí)序設(shè)計(jì)時(shí)的計(jì)算時(shí)間,并且可以節(jié)約時(shí)序仿真的步驟,大大節(jié)省了開發(fā)時(shí)間。
圖3時(shí)序同步示意圖
熱成像儀相關(guān)文章:熱成像儀原理
評(píng)論