1.高斯濾波算法的實(shí)現(xiàn)
前面講的均值/中值濾波,對(duì)于濾波窗口內(nèi)每個(gè)像素的權(quán)重都是一樣的。但是噪聲在圖像當(dāng)中常表現(xiàn)為異常視覺(jué)效果的孤立像素點(diǎn)或像素塊,那么他必然不是平均分布。
這里先引入一個(gè)概念:正態(tài)分布:
正態(tài)分布是最重要的一種概率分布,相關(guān)概念是由德國(guó)的數(shù)學(xué)家和天文學(xué)家Moivre在1733年提出的,但由于德國(guó)數(shù)學(xué)家Gauss率先將其用于天文學(xué)研究,因此也叫做高斯分布。在正態(tài)分布里,認(rèn)為中間狀態(tài)是常態(tài),過(guò)高和過(guò)低都屬于少數(shù),因此正態(tài)分布具有相當(dāng)?shù)钠毡樾裕湫偷谋热缥覀兊纳砀?、壽命、血壓、成?jī)、測(cè)量誤差等都遵從正太分布。
以中國(guó)家庭動(dòng)態(tài)跟蹤,抽樣掉找自報(bào)的身高數(shù)據(jù)為例,如下是2010年男/女身高分布直方圖,近似呈現(xiàn)正態(tài)分布。
扯遠(yuǎn)了,回歸正題,我們這里主題就是要處理高斯分布的噪聲,與椒鹽噪聲不同,高斯噪聲則是畫(huà)面上每個(gè)點(diǎn)都存在著不同程度的,與當(dāng)前像素距離成高斯分布的噪聲。這里我們繼續(xù)在前文已經(jīng)成熟的3*3滑窗方案上,進(jìn)行高斯算法的講解,及Matlab&FPGA的實(shí)現(xiàn)。
2.高斯濾波算法理論
根據(jù)概率論及中心極限定理(MBA智庫(kù)百科,全球?qū)I(yè)中文經(jīng)管百科)猜想,大部分噪聲應(yīng)該也符合正態(tài)分布/高斯分布(高斯白噪聲),所以也就有了高斯濾波,及根據(jù)正態(tài)分布進(jìn)行權(quán)重計(jì)算的濾波方法。
我們已經(jīng)介紹了高斯分布(正態(tài)分布),此處我們直接引入高斯分布函數(shù),為一維與二維高斯分布函數(shù),其中σ為高斯分布的強(qiáng)度,σ越大則數(shù)據(jù)更越分散,反之則越向中心集中分布:
我們首先采用Matlab自帶的高斯函數(shù)來(lái)驗(yàn)證一下結(jié)果,σ=1的高斯濾波,可見(jiàn)有一定的模糊效果。圖3為5*5的窗口,σ=3的高斯濾波,模糊的強(qiáng)度稍微更大了一點(diǎn)。圖4為11*11的窗口,σ=3的高斯濾波,相對(duì)5*5窗口,σ=3的濾波,可見(jiàn)擴(kuò)大擴(kuò)大窗口后,濾波后模糊程度非常大,可見(jiàn)濾波窗口對(duì)濾波的強(qiáng)度影響更大,其次才是σ的大小。
左側(cè)為生成5*5模板的Matlab代碼,我們先根據(jù)高斯分布的公式生成5*5 的模板。其中11行為原始二維高斯分布的函數(shù),而12行中我已經(jīng)將常熟去掉,畢竟后續(xù)需要?dú)w一化,就可以簡(jiǎn)化公式,得到的高斯權(quán)重分布如有圖G1所示,為一堆浮點(diǎn)數(shù)據(jù)。
但是,二維高斯分布并不僅僅在5*5的區(qū)間內(nèi),權(quán)重在5*5之外仍然有分布,只不過(guò)我們當(dāng)前采用5*5的高斯分布,權(quán)且認(rèn)為數(shù)據(jù)主要分布在5*5之內(nèi),因此還需要進(jìn)一步的歸一化,來(lái)使得所有權(quán)中之和=1,如17-18行所示,得到右邊第二個(gè)表格數(shù)據(jù)的模板。
如果在Matlab中實(shí)現(xiàn),此時(shí)得到的模板已經(jīng)可以用于高斯濾波卷積計(jì)算。但我們的目標(biāo)是FPGA實(shí)現(xiàn),因此還需要進(jìn)一步定點(diǎn)化,這里采用*1024為例,生成最終的5*5的模板如上第三個(gè)表格所示。當(dāng)然最后需要/1024縮放回去,使得結(jié)果最終還原到0-255。
為Matlab進(jìn)行5*5高斯模板卷積的源代碼,其中IMG1為原圖,IMG2為采用Matlab自帶高斯濾波函數(shù)在σ=3,5*5窗口下的濾波結(jié)果,IMG3為我們手動(dòng)編寫(xiě)的,根據(jù)生成的定點(diǎn)化模板卷積后的結(jié)果。
其中在處理5*5卷積時(shí),為了設(shè)計(jì)的簡(jiǎn)便,邊緣像素采用了復(fù)制原值的操作。另外,由于Matlab是浮點(diǎn)運(yùn)算,在卷積后將數(shù)據(jù)類(lèi)型再次轉(zhuǎn)成uint8定點(diǎn)。最后執(zhí)行生成的結(jié)果如下圖所示,其中圖2為與圖3,處理結(jié)果幾乎一樣,我們定點(diǎn)化5*5高斯模板算法成功。
責(zé)任編輯:haq
-
FPGA
+關(guān)注
關(guān)注
1643文章
21923瀏覽量
612348 -
matlab
+關(guān)注
關(guān)注
188文章
2990瀏覽量
232883
原文標(biāo)題:高斯濾波算法之Matlab&FPGA實(shí)現(xiàn)
文章出處:【微信號(hào):FPGA_Study,微信公眾號(hào):FPGA自習(xí)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
進(jìn)群免費(fèi)領(lǐng)FPGA學(xué)習(xí)資料!數(shù)字信號(hào)處理、傅里葉變換與FPGA開(kāi)發(fā)等
FPGA上的圖像處理算法集成與優(yōu)化

【「從算法到電路—數(shù)字芯片算法的電路實(shí)現(xiàn)」閱讀體驗(yàn)】+內(nèi)容簡(jiǎn)介
基于FPGA實(shí)現(xiàn)FIR數(shù)字濾波器

STM32的ADC采樣及各式濾波算法實(shí)現(xiàn)

評(píng)論