基于FPGA的采集卡的圖像增強(qiáng)算法應(yīng)用研究
0 引言
圖像在采集過程中不可避免地會(huì)受到傳感器靈敏度、噪聲干擾以及模數(shù)轉(zhuǎn)化時(shí)量化問題等因素影響而導(dǎo)致圖像無法達(dá)到人眼的視覺效果,為了實(shí)現(xiàn)人眼觀察或者機(jī)器自動(dòng)分析的目的,對(duì)原始圖像所做的改善行為,就被稱作圖像增強(qiáng)技術(shù)。因此圖像增強(qiáng)技術(shù)雖然是改善圖像質(zhì)量的通用方法,但是它也同樣帶有針對(duì)性,它必須是針對(duì)某一特定的需要而采用的特定的算法來實(shí)現(xiàn)圖像質(zhì)量的改善。
圖像增強(qiáng)技術(shù)根據(jù)各種不同目的而產(chǎn)生了多種算法,根據(jù)處理空間的不同把這些算法分為基于空間域的圖像增強(qiáng)算法和基于變換域的圖像增強(qiáng)算法。基于空間域的圖像增強(qiáng)算法又可以分為空域的變換增強(qiáng)算法、空域的濾波增強(qiáng)算法以及空域的彩色增強(qiáng)算法;基于變換域的圖像增強(qiáng)算法可以分為頻率域平滑增強(qiáng)算法、頻率域的銳化增強(qiáng)算法以及頻域彩色增強(qiáng)算法。
本論文采用的是空間域圖像增強(qiáng)算法,主要利用一定的圖像灰度值映射準(zhǔn)則來調(diào)整圖像灰度的動(dòng)態(tài)范圍,從而實(shí)現(xiàn)圖像的增強(qiáng)。
1 圖像采集卡總體結(jié)構(gòu)
如圖1所示,整個(gè)采集卡可分成3個(gè)子模塊,主要有PCI總線部分、FPGA系統(tǒng)部分和外圍接口部分。PCI總線部分的主要功能是完成PC機(jī)和PCI本地總線上設(shè)備的通信,包括PCI總線的通信,本地總線上的總線仲裁、數(shù)據(jù)傳輸、中斷、中斷握手以及PCI9054 芯片的配置功能。
FPGA 系統(tǒng)部分主要實(shí)現(xiàn)的是一個(gè)FPGA 最小系統(tǒng)。作為PCI9054 本地總線上的設(shè)備,F(xiàn)PGA 需要完成和PCI9054本地總線接口之間的通信。同樣FPGA也需要具有上電自動(dòng)配置的功能。外圍接口部分主要與FPGA 通信。雖然通過FPGA 產(chǎn)生了各種控制信號(hào),但這些信號(hào)在被轉(zhuǎn)換之后才能用于實(shí)際的控制。外圍接口部分的主要任務(wù)就是進(jìn)行電平轉(zhuǎn)換,以達(dá)到實(shí)際應(yīng)用的要求。
2 圖像增強(qiáng)算法實(shí)現(xiàn)
2.1 圖像增強(qiáng)算法設(shè)計(jì)
在此,采用基于點(diǎn)操作的增強(qiáng)方法,也稱為灰度變換。采用直接灰度變換方法實(shí)現(xiàn)增強(qiáng)原圖各部分的反差。實(shí)際中往往采用增加原圖里某兩個(gè)灰度值間的動(dòng)態(tài)范圍來實(shí)現(xiàn)。在本設(shè)計(jì)中,采用圖2所示的直接灰度變換的方法,橫坐標(biāo)表示原圖像的灰度值,縱坐標(biāo)表示變換后的灰度值,實(shí)線為本論文中討論的增強(qiáng)對(duì)比度變換曲線。虛線表示不做任何變換的曲線圖。
可以看出把原圖中的0~ r1 和r2 ~ 2n - 1 間的動(dòng)態(tài)范圍明顯減小,而原圖中灰度值r1 ~ r2 之間的動(dòng)態(tài)范圍增加了。其中n 為圖像位寬。這樣,分段線性變換的數(shù)學(xué)表達(dá)式如下:
簡(jiǎn)化表達(dá)式,化簡(jiǎn)如下:
式中參數(shù)k1 ,k2 ,k3 可能是一個(gè)小數(shù),為了在FPGA 里面能夠進(jìn)行計(jì)算,首先需要對(duì)這3個(gè)參數(shù)進(jìn)行定點(diǎn)化處理。整個(gè)定點(diǎn)化的工作被嵌入到驅(qū)動(dòng)程序中,用戶只需輸入接口數(shù)據(jù)r1 ,r2 ,s1 和s2 ,驅(qū)動(dòng)程序生成定點(diǎn)化結(jié)果k1 ,k2 ,k3 和移位的位數(shù)bit1 ,bit2 ,bit3 送入FP-GA.本論文采用定點(diǎn)化方法是,先將小數(shù)進(jìn)行乘2操作(移位操作),如果先到達(dá)整數(shù)或者大于512提前完成乘2操作,否則對(duì)其32次的乘2操作。
2.2 圖像增強(qiáng)算法的FPGA實(shí)現(xiàn)
利用現(xiàn)場(chǎng)可編程門陣列(FPGA)的并行、實(shí)時(shí)處理的特性,實(shí)現(xiàn)圖像增強(qiáng)的片上集成系統(tǒng)(SoC)。系統(tǒng)將圖2 中的r1 ,r2 ,s1 和s2 設(shè)計(jì)成接口參數(shù),用戶通過主控計(jì)算機(jī)的應(yīng)用程序可以反復(fù)配置參數(shù),直到得到預(yù)期的結(jié)果為止。
2.2.1 FPGA算法的VHDL實(shí)現(xiàn)
為了方便闡述,把整個(gè)FPGA 實(shí)現(xiàn)圖像增強(qiáng)算法,分為幾個(gè)階段。首先,PC 機(jī)通過應(yīng)用程序送r1 ,r2 ,s1和s2 .而后,由驅(qū)動(dòng)程序中的定點(diǎn)化程序?qū)⑾禂?shù)進(jìn)行定點(diǎn)化,后通過PCI9054把式(2)中k1 ,k2 ,k3 ,r1 ,r2 ,s1 ,s2 和移位參數(shù)bit1 ,bit2 ,bit3 送到FPGA的內(nèi)部寄存器中。這樣,F(xiàn)PGA中嵌入的圖像增強(qiáng)算法模塊就能從SDRAM 中取出原始圖像數(shù)據(jù)進(jìn)行增強(qiáng),并把經(jīng)處理后的圖像數(shù)據(jù)存回SDRAM中。圖像增強(qiáng)模塊首先取回?cái)?shù)據(jù),對(duì)取回的數(shù)據(jù)進(jìn)行判斷,把圖像數(shù)據(jù)分為3個(gè)區(qū)間。并做相應(yīng)的減法。結(jié)果跟定點(diǎn)后的系數(shù)進(jìn)行定點(diǎn)乘法,之后將結(jié)果數(shù)據(jù)進(jìn)行移位操作,然后通過累加輸出結(jié)果。常用的并行處理有兩種最基本的連接模式:流水線連接和并行陣列連接。針對(duì)該算法,采用流水線連接方式進(jìn)行。在流水線結(jié)構(gòu)中,一個(gè)大任務(wù)被分解成復(fù)雜性大致相同的小任務(wù),各小任務(wù)在流水線上同時(shí)執(zhí)行,整個(gè)任務(wù)的速度取決于執(zhí)行時(shí)間最長(zhǎng)的子任務(wù)的執(zhí)行時(shí)間。在本論文設(shè)計(jì)中把增強(qiáng)算法模塊化分成判斷模塊,減法模塊,乘法模塊,移位模塊和累加模塊,并將其進(jìn)行流水連接。算法邏輯框圖如圖3所示。
Cyclone器件中的M4K 塊支持軟乘法器,在設(shè)計(jì)中采用ALTERA的IP實(shí)現(xiàn)。乘法器的IP核如圖4所示。
2.2.2 FPGA算法調(diào)試結(jié)果分析
通過SignalTap抓取圖像值為0×08的圖像增強(qiáng)算法的調(diào)試結(jié)果見圖5.系數(shù)k1 為1,bit1 為4時(shí),圖像經(jīng)算法后的像素值image_data_out為1,符合算法結(jié)果正確。
3 結(jié)論
本文設(shè)計(jì)開發(fā)了一款以FPGA 為核心控制芯片的嵌入式圖像采集卡。采集卡以FPGA 為邏輯和算法實(shí)現(xiàn)的核心器件,不僅實(shí)現(xiàn)了傳統(tǒng)意義上的圖像采集,而且實(shí)現(xiàn)了CCD 相機(jī)控制和激光器同步曝光功能,打破了以往單純靠增加硬件設(shè)備實(shí)現(xiàn)同步控制的方法,簡(jiǎn)化了系統(tǒng)硬件結(jié)構(gòu)并節(jié)約系統(tǒng)成本。此外,在系統(tǒng)中嵌入了圖像增強(qiáng)算法和采用PCI接口與計(jì)算機(jī)連接滿足了高速采集的要求。根據(jù)所選芯片的自身特點(diǎn),設(shè)計(jì)了相關(guān)的圖像增強(qiáng)算法。用VHDL和原理圖結(jié)合的方法對(duì)FPGA 進(jìn)行編程,實(shí)現(xiàn)了圖像采集系統(tǒng)的各個(gè)功能模塊。在FPGA內(nèi)嵌入了圖像增強(qiáng)集成系統(tǒng),用硬件并行處理實(shí)現(xiàn),經(jīng)仿真該法效果很好。