



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、高斯濾波(高斯平滑)是數(shù)字圖像處理和計(jì)算機(jī)視覺里面最常見的操作。平時(shí),我們都是用Matlab或者OpenCV的函數(shù)調(diào)用:imfilter或者cvSmooth,并不關(guān)心底層的實(shí)現(xiàn)。然而當(dāng)開發(fā)者要自己實(shí)現(xiàn)高斯濾波的時(shí)候,往往就會(huì)很迷惘,經(jīng)常會(huì)被下面幾個(gè)問題所困擾:1、給定sigma,即標(biāo)準(zhǔn)偏差,怎么確定離散化后的濾波器窗口大?。?、給定窗口大小,怎么計(jì)算高斯核的sigma,即標(biāo)準(zhǔn)偏差?3、怎么實(shí)現(xiàn)可分離濾波器?在網(wǎng)上搜了一下,還真沒幾個(gè)人把實(shí)現(xiàn)的細(xì)節(jié)講清楚了。這里,我嘗試結(jié)合三份源碼,做個(gè)小小的總結(jié)。三份源碼分別是:1、OpenCV中的cvfilter.cpp 2、autopano-sift-c中
2、的GaussianConvolution.c 3、GIMP中的blur-gauss.c和unsharp-mask.c 在圖像處理中,高斯濾波一般有兩種實(shí)現(xiàn)方式,一種是用離散化的滑動(dòng)窗口進(jìn)行卷積運(yùn)算,另一種則是通過傅里葉變換來實(shí)現(xiàn)。最常見的就是第一種卷積核實(shí)現(xiàn),只有當(dāng)離散化的窗口非常大,計(jì)算非常耗時(shí)(這時(shí)可使用可分離濾波器)的情況下,可能會(huì)考慮基于傅里葉變換的實(shí)現(xiàn)方法。這里我們只討論第一種方法。二維高斯函數(shù)的形式是這樣的:有著如下的形狀:基本上,離散化的主旨就是保留高斯函數(shù)中心能量最集中的中間部分,忽略四周能量很小的平坦區(qū)域。這只是個(gè)很感性的描述,具體實(shí)現(xiàn)起來,就會(huì)出現(xiàn)千奇百怪的版本。下面結(jié)合三
3、份源碼,看看現(xiàn)實(shí)世界里的高斯平滑到底長(zhǎng)的什么樣子。首先是第一個(gè)問題:給定sigma,怎么計(jì)算窗口大小?直接上OpenCV的源碼,在cvFilter函數(shù)中:param1 = cvRound(sigma1*(depth = CV_8U ? 3 : 4)*2 + 1)|1;OpenCV認(rèn)為半徑為3*sigma的窗口就是高斯函數(shù)的能量最集中的區(qū)域。(在圖像位深度不是8的時(shí)候,使用4*sigma半徑的窗口?)autopan0-sift-c是圖像拼接軟件hugin里面的sift實(shí)現(xiàn),在實(shí)現(xiàn)DoG的時(shí)候需要做不同尺度的高斯平滑,在GaussianConvolution_new1函數(shù)中實(shí)現(xiàn)如下:dim = 1
4、 + 2 * (int) (3.0 * sigma);可見autopano也是實(shí)現(xiàn)的3*sigma半徑的窗口。在GIMP里,實(shí)現(xiàn)比較奇特,在blur_gauss.c的make_rle_curve函數(shù)里面,const gdouble sigma2 = 2 * sigma * sigma;const gdouble l = sqrt (-sigma2 * log (1.0 / 255.0);int n = ceil (l) * 2;if (n % 2) = 0)n += 1;從效果來看,這個(gè)實(shí)現(xiàn)的窗口半徑是約等于2.2*sigma。然后是第二個(gè)問題:給定窗口大小,怎么計(jì)算sigma?OpenCV的
5、實(shí)現(xiàn),在cvFilter.cpp的init_gaussian_kernel函數(shù)中:sigmaX = sigma 0 ? sigma : (n/2 1)*0.3 + 0.8;sigma。autopano沒有實(shí)現(xiàn)這個(gè)特性。GIMP的實(shí)現(xiàn):/* we want to generate a matrix that goes out a certain radius* from the center, so we have to go out ceil(rad-0.5) pixels,* inlcuding the center pixel. Of course, thats only in one d
6、irection,* so we have to go the same amount in the other direction, but not count* the center pixel again. So we double the previous result and subtract* one.* The radius parameter that is passed to this function is used as* the standard deviation, and the radius of effect is the* standard deviation
7、 * 2. Its a little confusing.*/radius = fabs (radius) + 1.0;std_dev = radius;radius = std_dev * 2;/* go out radius in each direction */matrix_length = 2 * ceil (radius 0.5) + 1;注釋講的很清楚了,基本上就是認(rèn)為sigma應(yīng)該等于窗口半徑的一半。看完這三份源碼,結(jié)論就是,關(guān)于sigma和窗口的大小,你愛怎么算都可以,這個(gè)由你的實(shí)際需要決定,別太離譜就行。(根據(jù)概率理論,高斯分布的樣本絕大部分集中在3倍標(biāo)準(zhǔn)差以內(nèi)的區(qū)域。)第
8、三個(gè)問題是可分離濾波器:首先說明為什么要使用可分離濾波器。實(shí)際上,模板運(yùn)算(滑動(dòng)窗口卷積)在數(shù)字圖像處理中是一項(xiàng)非常耗時(shí)的運(yùn)算。以上圖中的3*3高斯模板為例,每個(gè)像素完成一次模板操作要用9個(gè)乘法、8個(gè)加法和1個(gè)除法。對(duì)于一幅n*n的圖像,大約就是9n2個(gè)乘法,8n2個(gè)加法和n2個(gè)除法,這對(duì)于比較大的圖像來說,是非??膳碌?。而且隨著模板大小的增加,計(jì)算量是呈指數(shù)增長(zhǎng)的。那么有沒有一種辦法能夠減少計(jì)算量呢?答案是肯定的。由于高斯函數(shù)可以寫成可分離的形式,因此可以采用可分離濾波器實(shí)現(xiàn)來加速。所謂的可分離濾波器,就是可以把一個(gè)多維的卷積化成多個(gè)一維的卷積。具體到二維的高斯濾波,就是指先對(duì)行做一維卷積,
9、再對(duì)列做一維卷積。這樣就可以將計(jì)算復(fù)雜度從O(M*M*N*N)降到O(2*M*M*N),M, N分別是圖像和濾波器的窗口大小。問題是實(shí)現(xiàn)的時(shí)候怎么計(jì)算一維的卷積核呢?其實(shí)很簡(jiǎn)單,按照前面計(jì)算出來的窗口大小,將二維的高斯模板合并成一維,計(jì)算所有離散點(diǎn)上一維高斯函數(shù)的權(quán)值,最后將權(quán)值之和歸一化到1。下面是來自O(shè)penCV的源碼:for( i = 0; i = n/2; i+ ) double t = fixed_kernel ? (double)fixed_kerneli : exp(scale2X*i*i); if( type = CV_32FC1 ) cf(n/2+i)*step = (float)t; sum += cf(n/2+i)*step*2; else cd(n/2+i)*step = t; sum += cd(n/2+i)*step*2; sum = 1./sum;for( i = 0; i = n/2;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 細(xì)菌分類基礎(chǔ)試題及答案
- 2025年注會(huì)經(jīng)濟(jì)法核心試題及答案
- 2025年注冊(cè)會(huì)計(jì)師復(fù)習(xí)側(cè)重點(diǎn)與方法指導(dǎo)試題及答案
- 2024年行政管理師考試策略分析的試題及答案
- 2024年項(xiàng)目管理考試的心態(tài)調(diào)整試題及答案
- 2025年證券從業(yè)考試指導(dǎo)試題及答案
- 視頻設(shè)計(jì)執(zhí)行方案范本
- 衛(wèi)生委考試面試題及答案
- 微生物檢驗(yàn)技師證書考試試題及答案探究
- 稀土金屬加工質(zhì)量改進(jìn)工具應(yīng)用案例考核試卷
- 離職體檢免責(zé)協(xié)議書
- 光電工程師需掌握的常用計(jì)算試題及答案
- 煙草證借用合同范本
- 燒燙傷培訓(xùn)課件
- 3D打印在康復(fù)輔具中的應(yīng)用-全面剖析
- 縣級(jí)安全生產(chǎn)大講堂課件
- 北京市門頭溝區(qū)2025屆高三一??荚嚿镌囶}(原卷版+解析版)
- 有限合伙制私募股權(quán)基金整體框架圖解及案例
- 大部分分校:地域文化形考任務(wù)一-國(guó)開(CQ)-國(guó)開期末復(fù)習(xí)資料
- 2025年慢性阻塞性肺疾病全球創(chuàng)議GOLD指南修訂解讀課件
- 小學(xué)五年級(jí)家長(zhǎng)會(huì)-主題班會(huì)
評(píng)論
0/150
提交評(píng)論