直方圖均衡作為一種基礎(chǔ)的圖像處理方法在很多領(lǐng)域得到應(yīng)用,但大多是通過DSP或者CPU編程實(shí)現(xiàn),其優(yōu)點(diǎn)是靈活性比較高,調(diào)試方便,最大的缺點(diǎn)是很難做到實(shí)時(shí)或者準(zhǔn)實(shí)時(shí)處理,這在某些領(lǐng)域是不可接受的。而使用FPGA實(shí)現(xiàn)可以很好地解決實(shí)時(shí)處理的難題,而且目前的FPGA資源容量已經(jīng)很豐富,片內(nèi)的SRAM/PLL/邏輯資源已經(jīng)足以應(yīng)對(duì)一般圖像處理算法的需要,同時(shí)隨著價(jià)格的不斷下降,客觀上使得FPGA成為圖像處理算法實(shí)現(xiàn)不錯(cuò)的選擇。
本文主要介紹在FPGA上實(shí)現(xiàn)直方圖均衡算法的總體結(jié)構(gòu)和最重要的兩個(gè)子模塊的實(shí)現(xiàn)細(xì)節(jié),以及最終的實(shí)現(xiàn)結(jié)果。
1 直方圖均衡的理論基礎(chǔ)
原始圖像灰度值r歸一化在0~1之間,p(r)為原始圖像灰度分布的概率密度函數(shù)。直方圖均衡化處理實(shí)際上就是尋找一個(gè)灰度變換函數(shù)T,使得變化后的灰度值s=T(r), 其中,s貼片電感歸一化為0~1,即建立r與s之間的映射關(guān)系,要求處理后圖像灰度分布的概率密度函數(shù)p(s)=1,期望所有灰度級(jí)出現(xiàn)概率相同。
對(duì)于數(shù)字圖像離散情況,其直方圖電感器命名均衡化處理的計(jì)算步驟如下:
(1)統(tǒng)計(jì)原始圖像的直方圖
式中,rk是歸一化的輸入圖像灰度;nk是輸入圖像中插件電感器歸一化灰度等于rk的像素個(gè)數(shù);n是輸入圖像的像素總數(shù)。
(2)計(jì)算直方圖累積分布曲線
(3)用累積分布函數(shù)作變換函數(shù)進(jìn)行圖像灰度變換
根據(jù)計(jì)算得到的累積分布函數(shù),建立輸入圖像與輸出圖像灰度之間的對(duì)應(yīng)關(guān)系,最后要將變換后的灰度恢復(fù)成原先范圍。
2 FPGA實(shí)現(xiàn)的總體結(jié)構(gòu)
從上面對(duì)直方圖均衡算法的描述可知,在進(jìn)行直方圖均衡以前,首先必須對(duì)圖像灰度進(jìn)行統(tǒng)計(jì),然后再計(jì)算輸出。而要統(tǒng)計(jì)一幅圖像的全局灰度信息,就不得不把整幅圖像先寫入緩存。雖然FPGA內(nèi)部的SRAM資源豐富,但是仍然無(wú)法滿足整幅圖像存儲(chǔ)的需要。因此,需要以SDRAM作為圖像緩存,存儲(chǔ)前后兩場(chǎng)視頻圖像,然后再計(jì)算輸出。SDRAM的容量、速度都能滿足直方圖均衡算法的要求,唯一的缺點(diǎn)是必須有相應(yīng)的SDRAM控制器控制SDRAM的讀寫和刷新操作。下面簡(jiǎn)要介紹總體實(shí)現(xiàn)的方案,其實(shí)現(xiàn)框圖如圖1所示。
從圖1中可以看出,在輸入端,模擬復(fù)合視頻數(shù)據(jù)經(jīng)過視頻圖像解碼進(jìn)入FPGA,在FPGA里先對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單處理,產(chǎn)生內(nèi)部使用的行同步信號(hào)/場(chǎng)同步信號(hào)/數(shù)據(jù)有效信號(hào)和16bit YUV4:2:2格式的視頻信號(hào)。然后,灰度信息進(jìn)入灰度直方電感生產(chǎn)廠家圖統(tǒng)計(jì)模塊對(duì)當(dāng)前灰度信息出現(xiàn)的頻率加以統(tǒng)計(jì),將統(tǒng)計(jì)信息以乒乓的方式存入SRAM,與此同時(shí)所有視頻數(shù)據(jù)通過“寫”控制模塊和SDRAM控制器存入SDRAM;在輸出端,在“讀”控制單元的控制下通過SDRAM控制模塊從SDRAM讀出上一場(chǎng)的數(shù)據(jù)進(jìn)入灰度變換模塊,根據(jù)存儲(chǔ)的上一場(chǎng)的灰度統(tǒng)計(jì)信息,對(duì)數(shù)據(jù)進(jìn)行灰度變換。這樣就完成了完整的灰度直方圖均衡變換。
如果需要在顯示設(shè)備(如PC顯示器)上顯示,還必須要有時(shí)序產(chǎn)生/圖像數(shù)據(jù)格式變換等模塊。另外,由于需要對(duì)某些內(nèi)部參數(shù)進(jìn)行調(diào)整(如SDRAM的Latency等),必須有一個(gè)控制接口和外部相連,在這里使用了一個(gè)I2C協(xié)議接口。
在所有模塊中最主要的實(shí)現(xiàn)單元主要有兩大部分,一個(gè)是直方圖統(tǒng)計(jì)和灰度變換模塊,另一個(gè)是SDRAM控制器和讀寫控制單元。下面將詳細(xì)介紹這兩部分。
3 直方圖統(tǒng)計(jì)的實(shí)現(xiàn)結(jié)構(gòu)
直方圖統(tǒng)計(jì)是通過FPGA內(nèi)部?jī)蓧K雙端口SRAM的乒乓操作實(shí)現(xiàn)的。其中每塊SRAM的地址反映了灰度值的大小,而SRAM每個(gè)單元的數(shù)據(jù)寬度必須相應(yīng)于每場(chǎng)圖像的像素?cái)?shù)量。例如,對(duì)于我國(guó)PAL制的電視圖像來(lái)說,根據(jù)ITU-R BT.601/656數(shù)字視頻標(biāo)準(zhǔn)規(guī)定每一場(chǎng)數(shù)字化后的視頻圖像,它的有效數(shù)據(jù)是每行720個(gè)有效點(diǎn),每場(chǎng)288個(gè)有效行,每場(chǎng)總共207360個(gè)有效像素點(diǎn),平均每個(gè)點(diǎn)16bit的數(shù)據(jù)量,其中有8bit灰度數(shù)據(jù)。所以在選取SRAM的大小時(shí),應(yīng)該選擇容量為256(2的8次方)、數(shù)據(jù)寬度為18位(207 360大于2的17次方)的SRAM。但是為了擴(kuò)展的方便,實(shí)際使用中使用了容量為大電流電感256、數(shù)據(jù)寬度為22位的SRAM,這樣可以對(duì)數(shù)據(jù)量更大的圖像加以處理。 大功率電感廠家 |大電流電感工廠