女人夜夜春高潮爽A∨片传媒_国产精品VIDEOS麻豆_在线精品亚洲一区二区三区_亚洲熟妇无码av

圖像處理
新聞詳情

高斯金字塔的構建步驟

發布時(shi)間:2021-10-08 15:55:04 最(zui)后更新:2021-10-09 08:45:38 瀏覽次數:3803

SIFT(Scale-Invariant Feature Transform,尺度不變特(te)(te)征(zheng)(zheng)轉(zhuan)換)在(zai)目(mu)標識別、圖像配準領(ling)域(yu)具(ju)有廣泛的(de)應用,下面按照SIFT特(te)(te)征(zheng)(zheng)的(de)算法(fa)流(liu)程(cheng)對其進行簡要介紹對SIFT特(te)(te)征(zheng)(zheng)做簡要介紹。

高(gao)斯(si)金(jin)字(zi)塔是SIFT特征(zheng)(zheng)提取的(de)第一步,之(zhi)后(hou)特征(zheng)(zheng)空(kong)間中極值點的(de)確定(ding),都是基(ji)于(yu)高(gao)斯(si)金(jin)字(zi)塔,因此(ci)SIFT特征(zheng)(zheng)學習的(de)第一步是如(ru)何建立的(de)高(gao)斯(si)金(jin)字(zi)塔。

明白幾個定義:

高斯金(jin)(jin)(jin)(jin)字(zi)(zi)塔(ta)(ta) 對(dui)于(yu)高斯金(jin)(jin)(jin)(jin)字(zi)(zi)塔(ta)(ta),很(hen)容(rong)易直觀地理解(jie)為對(dui)同一(yi)尺寸的(de)圖(tu)像(xiang)(xiang),然后(hou)進行(xing)不同程(cheng)度的(de)高斯平滑,這些(xie)圖(tu)像(xiang)(xiang)構成高斯金(jin)(jin)(jin)(jin)字(zi)(zi)塔(ta)(ta),這種是不對(dui)的(de),這描述的(de)圖(tu)像(xiang)(xiang)集合(he)叫做一(yi)個(ge)(ge)八度。金(jin)(jin)(jin)(jin)字(zi)(zi)塔(ta)(ta)總要有(you)個(ge)(ge)變(bian)“尖”的(de)過程(cheng),真正(zheng)的(de)高斯金(jin)(jin)(jin)(jin)字(zi)(zi)塔(ta)(ta)要有(you)個(ge)(ge)平滑以及(ji)下(xia)采(cai)樣的(de)過程(cheng),因此整個(ge)(ge)圖(tu)像(xiang)(xiang)平滑以及(ji)下(xia)采(cai)樣再(zai)平滑,構成的(de)所有(you)圖(tu)像(xiang)(xiang)集合(he)才構成了圖(tu)像(xiang)(xiang)的(de)高斯金(jin)(jin)(jin)(jin)字(zi)(zi)塔(ta)(ta)。

八(ba)度(octave) 簡單地(di)說八(ba)度就(jiu)是(shi)(shi)在特定尺寸(長寬)下,經不(bu)同高斯(si)核(he)模糊的(de)(de)圖像(xiang)的(de)(de)集合。八(ba)度的(de)(de)集合是(shi)(shi)高斯(si)金字塔(ta)。

為什么要構建高斯金字塔:

整個高(gao)斯(si)金字(zi)(zi)(zi)塔,或者(zhe)(zhe)說(shuo)是(shi)(shi)(shi)差分高(gao)斯(si)金字(zi)(zi)(zi)塔是(shi)(shi)(shi)我(wo)(wo)們(men)確定SIFT特征(zheng)的(de)(de)(de)(de)(de)基礎,讓我(wo)(wo)們(men)首先想想高(gao)斯(si)金字(zi)(zi)(zi)塔到(dao)(dao)底干了(le)一(yi)(yi)(yi)件什么事(shi)情,他到(dao)(dao)底模(mo)仿(fang)(fang)的(de)(de)(de)(de)(de)是(shi)(shi)(shi)什么?答(da)案很(hen)容(rong)易確定,高(gao)斯(si)金字(zi)(zi)(zi)塔模(mo)仿(fang)(fang)的(de)(de)(de)(de)(de)是(shi)(shi)(shi)圖像(xiang)(xiang)的(de)(de)(de)(de)(de)不(bu)(bu)同的(de)(de)(de)(de)(de)尺(chi)(chi)(chi)度(du),尺(chi)(chi)(chi)度(du)應該(gai)怎樣(yang)理(li)解?對于(yu)一(yi)(yi)(yi)副(fu)圖像(xiang)(xiang),你近距離(li)觀察(cha)(cha)圖像(xiang)(xiang),與你在一(yi)(yi)(yi)米(mi)之外觀察(cha)(cha),看(kan)到(dao)(dao)的(de)(de)(de)(de)(de)圖像(xiang)(xiang)效果是(shi)(shi)(shi)不(bu)(bu)同的(de)(de)(de)(de)(de),前(qian)者(zhe)(zhe)比較(jiao)(jiao)清晰,后者(zhe)(zhe)比較(jiao)(jiao)模(mo)糊,前(qian)者(zhe)(zhe)比較(jiao)(jiao)大,后者(zhe)(zhe)比較(jiao)(jiao)小,通過前(qian)者(zhe)(zhe)能看(kan)到(dao)(dao)圖像(xiang)(xiang)的(de)(de)(de)(de)(de)一(yi)(yi)(yi)些(xie)細節信息,通過后者(zhe)(zhe)能看(kan)到(dao)(dao)圖像(xiang)(xiang)的(de)(de)(de)(de)(de)一(yi)(yi)(yi)些(xie)輪廓的(de)(de)(de)(de)(de)信息,這(zhe)就是(shi)(shi)(shi)圖像(xiang)(xiang)的(de)(de)(de)(de)(de)尺(chi)(chi)(chi)度(du),圖像(xiang)(xiang)的(de)(de)(de)(de)(de)尺(chi)(chi)(chi)度(du)是(shi)(shi)(shi)自然存在的(de)(de)(de)(de)(de),并不(bu)(bu)是(shi)(shi)(shi)人為創造(zao)的(de)(de)(de)(de)(de)。好了(le),到(dao)(dao)這(zhe)里(li)我(wo)(wo)們(men)明白了(le),其實以前(qian)對一(yi)(yi)(yi)幅圖像(xiang)(xiang)的(de)(de)(de)(de)(de)處(chu)理(li)還是(shi)(shi)(shi)比較(jiao)(jiao)單調的(de)(de)(de)(de)(de),因(yin)為我(wo)(wo)們(men)的(de)(de)(de)(de)(de)關(guan)注點只落(luo)在二(er)維空(kong)間,并沒有考(kao)(kao)慮到(dao)(dao)“圖像(xiang)(xiang)的(de)(de)(de)(de)(de)縱深”這(zhe)樣(yang)一(yi)(yi)(yi)個概念(nian),如果將這(zhe)些(xie)內容(rong)考(kao)(kao)慮進(jin)去我(wo)(wo)們(men)是(shi)(shi)(shi)不(bu)(bu)是(shi)(shi)(shi)會得到(dao)(dao)更多以前(qian)在二(er)維空(kong)間中沒有得到(dao)(dao)的(de)(de)(de)(de)(de)信息呢?于(yu)是(shi)(shi)(shi)高(gao)斯(si)金字(zi)(zi)(zi)塔橫空(kong)出世了(le),它就是(shi)(shi)(shi)為了(le)在二(er)維圖像(xiang)(xiang)的(de)(de)(de)(de)(de)基礎之上(shang),榨取出圖像(xiang)(xiang)中自然存在的(de)(de)(de)(de)(de)另一(yi)(yi)(yi)個維度(du):尺(chi)(chi)(chi)度(du)。因(yin)為高(gao)斯(si)核是(shi)(shi)(shi)唯一(yi)(yi)(yi)的(de)(de)(de)(de)(de)線(xian)性核,也就是(shi)(shi)(shi)說(shuo)使用高(gao)斯(si)核對圖像(xiang)(xiang)模(mo)糊不(bu)(bu)會引入其他噪聲,因(yin)此就選用了(le)高(gao)斯(si)核來構建(jian)圖像(xiang)(xiang)的(de)(de)(de)(de)(de)尺(chi)(chi)(chi)度(du)。


下圖(tu)兩(liang)幅圖(tu)像(xiang)(xiang)是(shi)典型的(de)(de)圖(tu)像(xiang)(xiang)高斯(si)金(jin)字塔(ta),這(zhe)就是(shi)模仿(fang)的(de)(de)圖(tu)像(xiang)(xiang)離你遠去時(shi)在(zai)你視網(wang)膜(mo)上的(de)(de)成像(xiang)(xiang),圖(tu)像(xiang)(xiang)分別以動(dong)態方式表示(shi)。

高斯金字塔的構建步驟

高斯金字塔的(de)構建還是(shi)比較(jiao)簡(jian)單的(de),高斯卷積和是(shi)尺度變換(huan)的(de)唯一的(de)線(xian)性核。

高斯(si)金(jin)字(zi)(zi)塔構(gou)(gou)建(jian)(jian)過程(cheng)中,一(yi)(yi)般(ban)首先將圖(tu)(tu)(tu)(tu)(tu)像(xiang)(xiang)(xiang)擴大(da)一(yi)(yi)倍,在(zai)擴大(da)的(de)圖(tu)(tu)(tu)(tu)(tu)像(xiang)(xiang)(xiang)的(de)基(ji)礎之上(shang)(shang)構(gou)(gou)建(jian)(jian)高斯(si)金(jin)字(zi)(zi)塔,然后(hou)對該尺寸下(xia)圖(tu)(tu)(tu)(tu)(tu)像(xiang)(xiang)(xiang)進(jin)行(xing)高斯(si)模(mo)(mo)(mo)糊(hu)(hu),幾幅(fu)模(mo)(mo)(mo)糊(hu)(hu)之后(hou)的(de)圖(tu)(tu)(tu)(tu)(tu)像(xiang)(xiang)(xiang)集合(he)構(gou)(gou)成了一(yi)(yi)個八度,然后(hou)對該八度下(xia)的(de)最(zui)模(mo)(mo)(mo)糊(hu)(hu)的(de)一(yi)(yi)幅(fu)圖(tu)(tu)(tu)(tu)(tu)像(xiang)(xiang)(xiang)進(jin)行(xing)下(xia)采樣的(de)過程(cheng),長和寬分(fen)別縮(suo)短一(yi)(yi)倍,圖(tu)(tu)(tu)(tu)(tu)像(xiang)(xiang)(xiang)面積變為原來四(si)分(fen)之一(yi)(yi)。這(zhe)幅(fu)圖(tu)(tu)(tu)(tu)(tu)像(xiang)(xiang)(xiang)就(jiu)是下(xia)一(yi)(yi)個八度的(de)初(chu)始(shi)圖(tu)(tu)(tu)(tu)(tu)像(xiang)(xiang)(xiang),在(zai)初(chu)始(shi)圖(tu)(tu)(tu)(tu)(tu)像(xiang)(xiang)(xiang)圖(tu)(tu)(tu)(tu)(tu)像(xiang)(xiang)(xiang)的(de)基(ji)礎上(shang)(shang)完成屬(shu)于這(zhe)個八度的(de)高斯(si)模(mo)(mo)(mo)糊(hu)(hu)處理,以此類(lei)推完成整個算(suan)法所(suo)需(xu)要的(de)所(suo)有八度構(gou)(gou)建(jian)(jian),這(zhe)樣這(zhe)個高斯(si)金(jin)字(zi)(zi)塔就(jiu)構(gou)(gou)建(jian)(jian)出來了。構(gou)(gou)建(jian)(jian)出的(de)金(jin)字(zi)(zi)塔如下(xia)圖(tu)(tu)(tu)(tu)(tu)所(suo)示:


什么是尺度空間:

以上已經從人視覺感知的角度讓大家感性認識了“尺度”,上文也提到使用高斯核來實現尺度的變換,那么具體實現過程中,尺度體現在哪里?是如何量化的呢?怎么在高斯金字塔中,兩個變量很重要,即第幾個八度(o)和八度中的第幾層(s),這兩個量合起來(o,s)就構成了高斯金字塔的尺度空間。尺度空間也不難理解,首先一個八度中圖像的長和寬是相等的,即變量o控制的是塔中尺寸這個尺度;區分同一個尺寸尺度下的圖像,就需要s了,s控制了一個八度中不同的模糊程度。這樣(o,s)就能夠確定高斯金字塔中的唯一一幅圖像了,這是個三維空間,兩維坐標,一維是圖像。

根據lowe的論文,(o,s)作用于一幅圖像是通過公式

確定的(de)(de)。通(tong)過(guo)公式也可(ke)以看(kan)出,尺度(du)空間(jian)是(shi)連(lian)續的(de)(de),兩(liang)個變量(liang)控制著δ的(de)(de)值,其中(zhong)在(zai)第(di)一(yi)個八度(du)中(zhong)有(you) 1<(o+s/S)<=2 ,同理在(zai)第(di)二個八度(du)中(zhong)有(you)2<(o+s/S)<=3,以此類推,δ中(zhong)的(de)(de)關鍵部分(o+s/S)部分是(shi)逐漸(jian)增大的(de)(de)(具(ju)體實現時,有(you)些高斯金字塔中(zhong)這個值是(shi)增大,但不是(shi)逐漸(jian)均勻增大,只能說(shuo)是(shi)連(lian)續的(de)(de))。 

上(shang)圖中(zhong)第一(yi)個八(ba)度(du)(du)(du)的(de)(de)中(zhong)圖像的(de)(de)尺(chi)度(du)(du)(du)分(fen)別(bie)是(shi)(shi)δ,kδ,k^2δ......,第二個八(ba)度(du)(du)(du)的(de)(de)尺(chi)度(du)(du)(du)分(fen)別(bie)是(shi)(shi)2δ,2kδ,2k^2δ........,同理第三個八(ba)度(du)(du)(du)的(de)(de)尺(chi)度(du)(du)(du)分(fen)別(bie)是(shi)(shi)4δ,4kδ,4k^2δ........。這個序列是(shi)(shi)通(tong)過下(xia)式來確(que)定的(de)(de):

所以每增加一級八度,δ都要擴大2倍,在一個八度中,k的上標s來區分不同的高斯核。

構建差分高斯金字塔

構(gou)建高(gao)斯金字(zi)塔是為了后(hou)續(xu)構(gou)建差分(fen)高(gao)斯金字(zi)塔。對同一個(ge)八度的(de)(de)兩幅相鄰的(de)(de)圖像(xiang)做差得(de)到插值(zhi)(zhi)圖像(xiang),所有(you)八度的(de)(de)這(zhe)些(xie)插值(zhi)(zhi)圖像(xiang)的(de)(de)集合,就構(gou)成(cheng)了差分(fen)高(gao)斯金字(zi)塔。過(guo)程如下圖所示,差分(fen)高(gao)斯金字(zi)塔的(de)(de)好處是為后(hou)續(xu)的(de)(de)特(te)征點的(de)(de)提取提供了方便(bian)。


到這里,高斯金字塔構建的主要部分、關鍵點都弄好了,一些非常重要的認知就要呼之欲出了,下面解釋整個空間的尺度連續性!這是差分高斯金字塔的重中之重!

尺(chi)度空間的連續(xu)性

這(zhe)里(li)注意,連續(xu)性(xing)(xing)的(de)(de)(de)(de)主(zhu)語既不(bu)(bu)是(shi)高(gao)斯(si)(si)(si)金(jin)字塔(ta),也不(bu)(bu)是(shi)差(cha)(cha)分高(gao)斯(si)(si)(si)金(jin)字塔(ta),而是(shi)尺(chi)度空(kong)間。在(zai)(zai)弄清(qing)楚這(zhe)個(ge)(ge)(ge)問題(ti)之前,我們(men)還需要(yao)(yao)解決一(yi)(yi)個(ge)(ge)(ge)問題(ti),即為什么(me)高(gao)斯(si)(si)(si)金(jin)字塔(ta)中(zhong)(zhong)每個(ge)(ge)(ge)八度有s+3幅高(gao)斯(si)(si)(si)圖像(xiang)?s的(de)(de)(de)(de)意思是(shi)將來我們(men)在(zai)(zai)差(cha)(cha)分高(gao)斯(si)(si)(si)金(jin)字塔(ta)中(zhong)(zhong)求(qiu)極(ji)值點(dian)(dian)(dian)的(de)(de)(de)(de)時候,我們(men)要(yao)(yao)在(zai)(zai)每個(ge)(ge)(ge)八度中(zhong)(zhong)求(qiu)s層(ceng)點(dian)(dian)(dian),通過(guo)lowe論(lun)文可知(zhi),每一(yi)(yi)層(ceng)極(ji)值點(dian)(dian)(dian)是(shi)在(zai)(zai)三維空(kong)間(圖像(xiang)二維,尺(chi)度一(yi)(yi)維)中(zhong)(zhong)比較獲得(de)(de),因(yin)此為了獲得(de)(de)s層(ceng)點(dian)(dian)(dian),那(nei)么(me)在(zai)(zai)差(cha)(cha)分高(gao)斯(si)(si)(si)金(jin)字塔(ta)中(zhong)(zhong)需要(yao)(yao)有s+2圖像(xiang),好(hao)了,繼續(xu)上(shang)溯,如果(guo)差(cha)(cha)分高(gao)斯(si)(si)(si)金(jin)字塔(ta)中(zhong)(zhong)有s+2幅圖像(xiang),那(nei)么(me)高(gao)斯(si)(si)(si)金(jin)字塔(ta)中(zhong)(zhong)就必(bi)須要(yao)(yao)有s+3幅圖像(xiang)了,因(yin)為差(cha)(cha)分高(gao)斯(si)(si)(si)金(jin)字塔(ta)是(shi)由高(gao)斯(si)(si)(si)金(jin)字塔(ta)相(xiang)鄰兩層(ceng)相(xiang)減得(de)(de)到(dao)的(de)(de)(de)(de)。好(hao)了,到(dao)了這(zhe)里(li)似乎真相(xiang)大白(bai),但是(shi)我們(men)上(shang)面的(de)(de)(de)(de)推導有一(yi)(yi)個(ge)(ge)(ge)致命的(de)(de)(de)(de)問題(ti),我們(men)上(shang)來就假設(she)“我們(men)要(yao)(yao)在(zai)(zai)每個(ge)(ge)(ge)八度中(zhong)(zhong)求(qiu)s層(ceng)點(dian)(dian)(dian)”,為什么(me)要(yao)(yao)s層(ceng)點(dian)(dian)(dian)呢?這(zhe)才是(shi)這(zhe)個(ge)(ge)(ge)小節(jie)的(de)(de)(de)(de)主(zhu)題(ti):是(shi)為了保持尺(chi)度的(de)(de)(de)(de)連續(xu)性(xing)(xing)!下面進行詳細的(de)(de)(de)(de)分析:

以一(yi)個(ge)八度中的圖像為例說明(此處最好(hao)結合OpenCV中金字塔(ta)構建部分(fen)的源碼(ma)<下文(wen)已列出,可以參照>)

高斯(si)金(jin)字塔(ta)和(he)差(cha)分高斯(si)金(jin)字塔(ta)那幾個公式還要在這里貼出來(lai)一下:

高斯函數G對(dui)圖像I的模(mo)糊函數:

高斯差分函數:

通過以上這兩個公式,可以確定一(yi)(yi)(yi)個八(ba)(ba)度(du)中(以第一(yi)(yi)(yi)個八(ba)(ba)度(du)為例)高斯圖(tu)像(xiang)和差分高斯圖(tu)像(xiang)的尺度(du)如下(xia)(以lowe論文為例,s=3,所以每(mei)個八(ba)(ba)度(du)中會(hui)有3+3=6幅圖(tu)像(xiang)),每(mei)一(yi)(yi)(yi)幅圖(tu)像(xiang)的尺度(du)也在(zai)圖(tu)像(xiang)標(biao)示了出來。

在lowe的論文中(zhong)s=3,因此有

因(yin)此,當前八度(du)中各(ge)高斯圖(tu)像(xiang)的(de)尺度(du)依次(ci)為:

σ,2^(1/3)σ,    2^(2/3)σ,     2^(3/3)σ,    2^(4/3)σ,     2^(5/3)σ;

當前(qian)八度(du)中各(ge)差分高斯圖像的(de)尺度(du)依次(ci)為:

σ,2^(1/3)σ,    2^(2/3)σ,    &nbsp;2^(3/3)σ,   2^(4/3)σ。

同理,我(wo)們可(ke)以推斷出,下一個八度中各高斯圖像的(de)尺(chi)度依次(ci)為:

2×σ,2×2^(1/3)σ,2×2^(2/3)σ,2×2^(3/3)σ,2×2^(4/3)σ,2×2^(5/3)σ;

下(xia)一(yi)個八度中(zhong)各差分(fen)高斯圖像(xiang)的尺(chi)度依次為(wei):

2×σ,2×2^(1/3)σ,2×2^(2/3)σ,2×2^(3/3)σ,2×2^(4/3)σ。

可以觀(guan)察到,其(qi)中紅色(se)標注數據(ju)所代表的(de)層(ceng),是(shi)(shi)(shi)差分高斯(si)金字塔中獲得極(ji)(ji)值點(dian)的(de)層(ceng),也(ye)就是(shi)(shi)(shi)說只有在(zai)這些層(ceng)上才發(fa)生與上下兩層(ceng)比較獲得極(ji)(ji)值點(dian)的(de)操作。下面將這些紅色(se)數據(ju)連(lian)(lian)成(cheng)一(yi)串:2^(1/3)σ, 2^(2/3)σ, 2^(3/3)σ,2×2^(1/3)σ,2×2^(2/3)σ,2×2^(3/3)σ......。發(fa)現了什么?對了,這些數據(ju)時連(lian)(lian)續的(de),我(wo)(wo)們通過在(zai)每個(ge)八度(du)(du)(du)中多構(gou)造三幅高斯(si)圖像,達到了尺(chi)度(du)(du)(du)空間連(lian)(lian)續的(de)效(xiao)果(guo),這一(yi)效(xiao)果(guo)帶來的(de)直接的(de)好處是(shi)(shi)(shi)在(zai)尺(chi)度(du)(du)(du)空間的(de)極(ji)(ji)值點(dian)確定過程中,我(wo)(wo)們不會漏(lou)掉(diao)任何一(yi)個(ge)尺(chi)度(du)(du)(du)上的(de)極(ji)(ji)值點(dian),而是(shi)(shi)(shi)能夠綜合考慮量化的(de)尺(chi)度(du)(du)(du)因子(zi)


所確定的每一個尺度!

下一個八度的第一幅圖像如何確定這個問題,是上面問題(尺度空間的連續性)的延伸,我們可以通過反推OpenCV中這一部分的源代碼,來理解這個問題。

當前八度(du)中(zhong)(zhong)的(de)(de)第(di)(di)一(yi)(yi)幅圖像(xiang)(xiang)是(shi)(shi)通過前一(yi)(yi)個(ge)(ge)(ge)八度(du)的(de)(de)倒數(shu)第(di)(di)三幅圖像(xiang)(xiang)得到。OpenCV這(zhe)段源(yuan)碼(ma)有(you)個(ge)(ge)(ge)很(hen)重(zhong)要的(de)(de)問題:不(bu)同(tong)的(de)(de)八度(du)間的(de)(de)尺度(du)不(bu)是(shi)(shi)會(hui)有(you)一(yi)(yi)個(ge)(ge)(ge)2的(de)(de)差異嗎(ma)?為什么本部分源(yuan)碼(ma)并沒有(you)體現這(zhe)一(yi)(yi)點(dian),而(er)是(shi)(shi)在對(dui)每一(yi)(yi)個(ge)(ge)(ge)八度(du)處(chu)理中(zhong)(zhong)都(dou)是(shi)(shi)用相同(tong)的(de)(de)數(shu)組sig[]。首先明確一(yi)(yi)下sig數(shu)組內.存儲的(de)(de)并不(bu)是(shi)(shi)一(yi)(yi)個(ge)(ge)(ge)絕(jue)對(dui)的(de)(de)模(mo)糊核,而(er)是(shi)(shi)相對(dui)的(de)(de)模(mo)糊核,這(zhe)一(yi)(yi)點(dian)很(hen)重(zhong)要,既然是(shi)(shi)相對(dui)的(de)(de)模(mo)糊核,那么第(di)(di)一(yi)(yi)幅圖像(xiang)(xiang)的(de)(de)核就很(hen)重(zhong)要了,所以(yi)尺度(du)的(de)(de)連(lian)續就看(kan)每個(ge)(ge)(ge)八度(du)的(de)(de)第(di)(di)一(yi)(yi)幅圖像(xiang)(xiang)了。

對(dui)于以下(xia)列出的(de)(de)高(gao)斯金字塔的(de)(de)構建過(guo)(guo)程來看,每個(ge)八度中的(de)(de)第一(yi)幅圖像并(bing)沒有(you)一(yi)個(ge)2倍的(de)(de)尺度躍(yue)(yue)進(jin)過(guo)(guo)程。但是(shi),這(zhe)個(ge)2倍的(de)(de)躍(yue)(yue)進(jin)式隱含在整個(ge)高(gao)斯金字塔的(de)(de)構建過(guo)(guo)程中了!

再看(kan)倒數第(di)(di)三幅(fu)(fu)圖(tu)(tu)像,這(zhe)幅(fu)(fu)圖(tu)(tu)像的(de)(de)(de)尺(chi)度(du)(du)是(shi)2^(3/3)*δ,3/3=1,也就是(shi)說,在這(zhe)個(ge)八度(du)(du)中,第(di)(di)一幅(fu)(fu)圖(tu)(tu)像的(de)(de)(de)尺(chi)度(du)(du)是(shi)δ,而倒數第(di)(di)三幅(fu)(fu)圖(tu)(tu)像的(de)(de)(de)尺(chi)度(du)(du)是(shi)2*δ,正好發生了一個(ge)2的(de)(de)(de)躍進!這(zhe)就是(shi)以這(zhe)幅(fu)(fu)圖(tu)(tu)像作為基(ji)準進行下(xia)采樣(yang)的(de)(de)(de)原因,如此的(de)(de)(de)話,下(xia)一個(ge)八度(du)(du)的(de)(de)(de)第(di)(di)一幅(fu)(fu)圖(tu)(tu)像的(de)(de)(de)初始尺(chi)度(du)(du)就是(shi)2*δ了。

這就是真(zhen)相,這就是為什么(me)選用倒數(shu)第三幅(fu)圖(tu)像進行下采(cai)樣的原因。

  1. void SIFT::buildGaussianPyramid( const Mat& base, vector<Mat>& pyr, int nOctaves ) const  
  2. {  
  3.     vector<double> sig(nOctaveLayers + 3);  
  4.     pyr.resize(nOctaves*(nOctaveLayers + 3));  
  5.     // precompute Gaussian sigmas using the following formula:  
  6.     //  \sigma_{total}^2 = \sigma_{i}^2 +&nbsp;\sigma_{i-1}^2  
  7.     sig[0] = sigma;  
  8.     double&nbsp;k = pow( 2., 1. / nOctaveLayers );  
  9.     for( int i = 1; i < nOctaveLayers + 3; i++ )  
  10.     {  
  11.         double sig_prev = pow(k, (double)(i-1))*sigma;  
  12.         double sig_total&nbsp;= sig_prev*k;  
  13.         sig[i] = std::sqrt(sig_total*sig_total - sig_prev*sig_prev);  
  14.     }  
  15.     for( int o = 0;&nbsp;o < nOctaves; o++ )  
  16.     {  
  17.         for( int i = 0; i < nOctaveLayers + 3; i++ )  
  18.         {  
  19.             Mat& dst = pyr[o*(nOctaveLayers + 3) + i];  
  20.             if( o == 0  &&  i == 0 )  
  21.                 dst = base;  
  22.             // base&nbsp;of&nbsp;new octave is halved image from end of previous octave  
  23.             else if( i == 0 )/*每一個(ge)八度中第一幅圖(tu)像的確(que)定過(guo)程*/  
  24.             {  
  25.                   const Mat& src = pyr[(o-1)*(nOctaveLayers +&nbsp;3) + nOctaveLayers];  
  26.                   resize(src, dst, Size(src.cols/2, src.rows/2), 0, 0, INTER_NEAREST);  
  27.             }   
  28.            else  
  29.            {  
  30.                     const Mat& src = pyr[o*(nOctaveLayers + 3) + i-1];   
  31.                     GaussianBlur(src, dst, Size(), sig[i], sig[i]);   
  32.            }  
  33.         }   
  34.      }  
  35. }  
  36. void SIFT::buildDoGPyramid( const vector<Mat>& gpyr, vector<Mat>& dogpyr ) const  
  37. {   
  38.         int nOctaves = (int)gpyr.size()/(nOctaveLayers + 3);  
  39.         dogpyr.resize( nOctaves*(nOctaveLayers + 2) );   
  40.         for( int o = 0; o <; nOctaves; o++ )  
  41.         {   
  42.                for( int i = 0; i < nOctaveLayers + 2; i++ )   
  43.                {   
  44.                      const&nbsp;Mat& src1 = gpyr[o*(nOctaveLayers + 3) + i];   
  45.                      const Mat& src2 = gpyr[o*(nOctaveLayers + 3) + i + 1];&nbsp;  
  46.                      Mat& dst = dogpyr[o*(nOctaveLayers + 2) + i];   
  47.                      subtract(src2, src1, dst, noArray(), DataType<sift_wt>::type);   
  48.                }  
  49.         }  
  50. }  

在(zai)線客服
客服電話(hua)
  • 0755-23712116
  • 13310869691