高斯模糊算法是一種把高斯原理運(yùn)用到模糊領(lǐng)域的一種算法中鼠。我們都知道,圖像中微分和查分操作能夠消除掉高頻的信息椎扬,從而留下低頻的信息已達(dá)到模糊的效果蚕涤。所以簡(jiǎn)單的模糊算法有均值揖铜、中值模糊等等。
對(duì)于均值和中值模糊而言峦椰,我們丟失的信息更多汰规。如中值而言控轿,kernel模板中對(duì)應(yīng)的大部分像素值都沒(méi)有對(duì)center中心點(diǎn)有貢獻(xiàn)鹦蠕。換句話說(shuō)在抛,整個(gè)kernel范圍內(nèi)的像素點(diǎn)只有一個(gè)像素點(diǎn)對(duì)處理點(diǎn)產(chǎn)生了作用刚梭。所以朴读,隨著模糊kernel尺寸的增大,模糊效果越明顯噪伊,但丟失的信息和細(xì)節(jié)也就越多鉴吹。對(duì)于均值濾波器而言,雖然整個(gè)kernel范圍內(nèi)的像素點(diǎn)都對(duì)最終的結(jié)果起到了一定的作用(貢獻(xiàn))良蒸。但是每個(gè)像素點(diǎn)的貢獻(xiàn)出力是一樣的伍玖。很明顯這是不合理的私沮。因?yàn)槿绻麅蓚€(gè)像素點(diǎn)的離得很遠(yuǎn)時(shí)和橙,一般我們認(rèn)為這兩個(gè)像素的相關(guān)性較小。離得越遠(yuǎn)相關(guān)性越小五辽,這是符合我們直覺(jué)杆逗,也具有物理意義的。但是在均值濾波中蠕蚜,無(wú)論離得多遠(yuǎn)的像素靶累,都將得到相同的權(quán)重(平均)挣柬。也就是基于這個(gè)點(diǎn)邪蛔,先賢們提出了一系列新的算法侧到。其中,高斯濾波器是其中的一種遭贸。
高斯濾波是如何來(lái)解決上述的問(wèn)題的呢壕吹?高斯濾波把正太分布(高斯分布)引入到圖像處理中來(lái)耳贬。下面是標(biāo)準(zhǔn)正太分布(高斯分布中的一種)的分布圖:
我們可以看到,高斯分布是可以拿來(lái)作為權(quán)重分布的腐魂。因?yàn)殡x中心點(diǎn) 0 越遠(yuǎn)的點(diǎn)對(duì)應(yīng)的值越小蛔屹。所以我們用來(lái)做模糊的kernel中的權(quán)重值就可以用高斯分布來(lái)取值兔毒。然后用這個(gè)kernel來(lái)處理我們的圖像迅脐。每個(gè)像素點(diǎn)的值是其周?chē)袼攸c(diǎn)以及本身的加權(quán)平均數(shù)擂红。這就是高斯模糊的思想树碱。
下面是高斯分布的1d的公式:
我們可以看出成榜,只要我們確定了標(biāo)準(zhǔn)差sigma赎婚,我們就可以通過(guò) x 和 μ 的距離來(lái)求解當(dāng)前 x 對(duì)應(yīng)的權(quán)重值挣输。一般為了方便表示和計(jì)算機(jī)的算法實(shí)現(xiàn)撩嚼,我們采用模板來(lái)表示完丽。如果我們?nèi)?sigma = 1.5逻族,我們可以得到下面的模板:
接著就是類似滑動(dòng)窗口一般,掃過(guò)我們的圖像并且求解每個(gè)對(duì)應(yīng)點(diǎn)的加權(quán)平均值骄崩。這就是模糊算法的核心思想以及它的算法原理和計(jì)算過(guò)程聘鳞。
下面是我自己c++復(fù)現(xiàn)的高斯模糊算法效果圖(左邊是原圖薄辅,右邊是模糊圖。kernel size 為3*3):