FPGA圖像處理之高斯濾波算法理論篇
掃描二維碼
隨時(shí)隨地手機(jī)看文章
對(duì)計(jì)算機(jī)視覺(jué)、多媒體應(yīng)用、通信技術(shù)等領(lǐng)域來(lái)說(shuō),實(shí)時(shí)的數(shù)字圖像處理是其中的重點(diǎn)學(xué)科之一。傳統(tǒng)的前端數(shù)字信號(hào)處理(Digital SignalProcessing,DSP)算法,例如 FFT、FIR、IIR 濾波器,大多都是利用 ASIC 或者 PDSP 來(lái)構(gòu)建的,在硬件的實(shí)現(xiàn)中很難滿足實(shí)時(shí)性的要求。現(xiàn)場(chǎng)可編程邏輯門(mén)陣列(Field ProgrammableGate Arrays, FPGA)技術(shù)在數(shù)字信號(hào)處理中的應(yīng)用,將逐漸成為前端信號(hào)處理的主流。而濾波器算法在信號(hào)處理、信號(hào)檢測(cè)、通信領(lǐng)域有著重要的作用,在實(shí)時(shí)信息處理系統(tǒng)中,對(duì)濾波器的性能和處理速度有著嚴(yán)格的要求,特別是在滿足系統(tǒng)性能的條件下,處理速度至關(guān)重要。
對(duì)于圖像來(lái)說(shuō),高斯濾波器是利用高斯核的一個(gè)2維的卷積算子,用于圖像模糊化(去除細(xì)節(jié)和噪聲)。
1. 高斯分布
一維高斯分布
,
二維高斯分布
2.高斯核
理論上,高斯分布在所有定義域上都有非負(fù)值,這就需要一個(gè)無(wú)限大的卷積核。實(shí)際上,僅需要取均值周?chē)?/span>3倍標(biāo)準(zhǔn)差內(nèi)的值,以外部份直接去掉即可。如下圖為一個(gè)標(biāo)準(zhǔn)差為1.0的整數(shù)值高斯核。
3. 高斯濾波(平滑)
完成了高斯核的構(gòu)造后,高斯濾波就是用此核來(lái)執(zhí)行標(biāo)準(zhǔn)的卷積。
4.應(yīng)用
高斯濾波后圖像被平滑的程度取決于標(biāo)準(zhǔn)差。它的輸出是領(lǐng)域像素的加權(quán)平均,同時(shí)離中心越近的像素權(quán)重越高。因此,相對(duì)于均值濾波(mean filter)它的平滑效果更柔和,而且邊緣保留的也更好。
高斯濾波被用作為平滑濾波器的本質(zhì)原因是因?yàn)樗且粋€(gè)低通濾波器,見(jiàn)下圖。而且,大部份基于卷積平滑濾波器都是低通濾波器。
圖.高斯濾波器(標(biāo)準(zhǔn)差=3像素)的頻率響應(yīng)。The spatial frequency axis is marked in cycles per pixel,
and hence no value above 0.5 has a real meaning。
Matlab函數(shù):h = fspecial('gaussian', hsize, sigma)returns a rotationally symmetric Gaussian lowpass filter of size hsize withstandard deviation sigma (positive). hsize can be a vector specifying thenumber of rows and columns in h, or it can be a scalar, in which case h is asquare matrix.
The default value for hsize is [3 3]; the default value for sigma is 0.5.
5 FPGA的GAUSS濾波知識(shí)基礎(chǔ)
高斯濾波是一種低通平滑濾波,常用于模糊處理和減少噪聲信號(hào),其中模糊處理常用于預(yù)處理,即在提取目標(biāo)之前去除圖像中的一些細(xì)節(jié)等,這有利于高通處理。對(duì)于二維的數(shù)字圖像信號(hào),一般通過(guò)線性濾波器和非線性濾波器的模糊處理來(lái)減少強(qiáng)噪聲信號(hào)。平滑濾波器就是用濾波掩模確定的鄰域內(nèi)的像素與加權(quán)值相卷積后得到的灰度均值來(lái)代替每個(gè)像素的值,這就很容易使用硬件實(shí)現(xiàn)。 GAUSS 濾波算法克服了邊界效應(yīng),因而濾波后的圖像較好。其
gauss濾波的算子為:
gauss濾波的數(shù)學(xué)公式為:
G(I,j) ={f(i-1,j-1)+f(i-1,j+1)+f(i+1,j-1)+f(i+1,j+1)+[f(i-1,j)+(i+1,j)+f(i,j-1)+f(i,j+1)]*2+f(i,j)*4}/16 ----------------------------------------------------(1)