智能圖像處理與分析識(shí)別課件:圖像匹配_第1頁
智能圖像處理與分析識(shí)別課件:圖像匹配_第2頁
智能圖像處理與分析識(shí)別課件:圖像匹配_第3頁
智能圖像處理與分析識(shí)別課件:圖像匹配_第4頁
智能圖像處理與分析識(shí)別課件:圖像匹配_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

智能圖像處理與分析識(shí)別《智能圖像處理與分析識(shí)別》第九章圖像匹配9.1模板匹配的概念9.2基于灰度相關(guān)的模板匹配9.3基于變換域的模板匹配9.4基于特征相關(guān)的模板匹配圖像匹配技術(shù)是數(shù)字圖像信息處理和計(jì)算機(jī)視覺領(lǐng)域中的一個(gè)熱點(diǎn)問題,在氣象預(yù)報(bào)、醫(yī)療診斷、文字讀取、空間飛行器自動(dòng)導(dǎo)航、武器投射系統(tǒng)制導(dǎo)、雷達(dá)圖像目標(biāo)跟蹤、地球資源分析與檢測(cè)、以及景物分析等許多領(lǐng)域中得到廣泛應(yīng)用。在數(shù)字圖像處理領(lǐng)域,常常需要把不同的傳感器或同一傳感器在不同時(shí)間、不同成像系統(tǒng)條件下,對(duì)同一景物獲取的兩幅或者多幅圖像進(jìn)行比較,找到該組圖像中的共有景物,或是根據(jù)已知模式,到另一幅圖中尋找相應(yīng)的模式,此過程為圖像匹配。實(shí)際上,圖像匹配就是一幅圖像到另一幅圖像對(duì)應(yīng)點(diǎn)的最佳變換。圖像匹配的目標(biāo)是:在被搜索圖像中找到與模板圖像匹配的區(qū)域。9.1模板匹配的概念被搜索圖像模板圖像9.1模板匹配的概念

模板匹配過程大致可分為以下幾步:(1)圖像的取樣與量化:通過采樣設(shè)備獲取圖像,經(jīng)過圖像處理裝置將計(jì)算機(jī)中的圖像數(shù)據(jù)以數(shù)組的方式存儲(chǔ)。(2)圖像分割:分割圖像是按照顏色、亮度或紋理來進(jìn)行判斷。(3)圖像分析:分析被分割的圖像,是否可修改或合并。(4)形狀描述:提取圖像的特征。(5)圖像匹配:計(jì)算模板圖像與被搜索圖像區(qū)域的相似度。

模板匹配的分類方法很多,通??煞譃槿N:基于灰度相關(guān)的模板匹配方法、基于變換域的模板匹配方法和基于特征相關(guān)的模板匹配方法?!吨悄軋D像處理與分析識(shí)別》第九章圖像匹配9.1模板匹配的概念9.2基于灰度相關(guān)的模板匹配9.3基于變換域的模板匹配9.4基于特征相關(guān)的模板匹配9.2基于灰度相關(guān)的模板匹配

基于灰度相關(guān)的模板匹配算法是基于模板與被搜索圖像中的灰度值來進(jìn)行匹配的,是模板匹配中最基本的匹配思想。在灰度相關(guān)匹配過程中,基于模板圖像和被搜索圖像的灰度值信息,建立模板圖像與被搜索圖像中子圖像的相似性度量,再查找能夠使兩幅圖像相似性度量值最大或最小的子圖像,即可找到匹配圖像。

常用的相似性度量算法有:平均絕對(duì)差算法(MAD)絕對(duì)誤差和算法(SAD)誤差平方和算法(SSD)平均誤差平方和算法(MSD)歸一化積相關(guān)算法(NCC)序貫相似性算法(SSDA)9.2基于灰度相關(guān)的模板匹配

平均絕對(duì)差算法(MeanAbsoluteDifferences,簡(jiǎn)稱MAD算法),是Leese在1971年提出的一種匹配算法,是模式識(shí)別中常用方法之一。9.2.1MAD算法被搜索圖像模板圖像

9.2基于灰度相關(guān)的模板匹配MAD算法利用平均絕對(duì)差作為相似性測(cè)度,平均絕對(duì)差的計(jì)算公式如下:其中,,

9.2.1MAD算法9.2基于灰度相關(guān)的模板匹配—SAD算法9.2.2SAD算法

絕對(duì)誤差和算法(SumofAbsoluteDifferences,簡(jiǎn)稱SAD算法)與MAD算法思想幾乎是完全一致,只是其相似度測(cè)量公式有所不同。SAD算法的相似性測(cè)度計(jì)算的是子圖與模板圖的L1距離,公式如下:9.2基于灰度相關(guān)的模板匹配—SAD算法由于SAD算法與MAD、SSD、NCC算法類似,所以僅列出SAD算法的代碼:%%讀取模板圖像mask=imread('mask.jpg');[M,N,d0]=size(mask);if

d0==3mask_gray=rgb2gray(mask);elsemask_gray=mask;endfigure,imshow(mask_gray);title('模板圖像')%%讀取查詢圖像(被搜索圖像)src=imread('baby.jpg');[m,n,d]=size(src);if

d==3%若圖像是彩色圖像則轉(zhuǎn)化為灰度圖src_gray=rgb2gray(src);elsesrc_gray=src;end【Matlab實(shí)現(xiàn)】%%計(jì)算相似性測(cè)度dst=zeros(m-M,n-N);fori=1:m-M%子圖選取,每次滑動(dòng)一個(gè)像素

forj=1:n-Ntemp=src_gray(i:i+M-1,j:j+N-1);%當(dāng)前子圖dst(i,j)=dst(i,j)+sum(sum(abs(temp-mask_gray)));

endendabs_min=min(min(dst));[x,y]=find(dst==abs_min);%找最小相似性測(cè)度對(duì)應(yīng)的被搜索圖像位置9.2基于灰度相關(guān)的模板匹配—SAD算法%%匹配結(jié)果展示figure,imshow(src_gray);holdon;rectangle('position',[y,x,N-1,M-1],'edgecolor','b');holdoff;title('SAD匹配結(jié)果')

9.2基于灰度相關(guān)的模板匹配9.2.3SSD算法

誤差平方和算法(SumofSquaredDifferences,簡(jiǎn)稱SSD算法),也叫差方和算法。SSD算法與SAD算法如出一轍,只是其相似度測(cè)量公式有一點(diǎn)改動(dòng),計(jì)算的是子圖與模板圖的L2距離。相似性測(cè)度誤差平方和的計(jì)算公式如下:9.2.4NCC算法

歸一化積相關(guān)算法(NormalizedCrossCorrelation,簡(jiǎn)稱NCC算法)是通過歸一化的相關(guān)性度量公式來計(jì)算二者之間的匹配程度。歸一化積互相關(guān)系數(shù)的計(jì)算公式如下:

9.2基于灰度相關(guān)的模板匹配—SSDA算法

序貫相似性檢測(cè)算法(SequentialSimiliarityDetectionAlgorithm,簡(jiǎn)稱SSDA算法),是由Barnea和Sliverman于1972年,在文章《Aclassofalgorithmsforfastdigitalimageregistration》中提出的一種匹配算法,是對(duì)傳統(tǒng)模板匹配算法的改進(jìn),比MAD算法快幾十到幾百倍。9.2.5SSDA算法SSDA算法描述如下:(1)定義絕對(duì)誤差:其中,帶有上劃線的分別表示子圖、模板的均值:可見,絕對(duì)誤差就是子圖與模板圖各自去掉其均值后,對(duì)應(yīng)位置之差的絕對(duì)值。9.2基于灰度相關(guān)的模板匹配—SSDA算法

右圖給出了A、B、C三點(diǎn)的誤差累計(jì)增長(zhǎng)曲線。其中,A、B種情況誤差增長(zhǎng)得快,達(dá)到誤差閾值Th所用累加次數(shù)少,說明被搜索圖像區(qū)域偏離模板較為嚴(yán)重;C情況下增長(zhǎng)緩慢,達(dá)到誤差閾值Th所用累加次數(shù)多,說明被搜索圖像區(qū)域與模板偏離較小,很可能是匹配點(diǎn)。9.2基于灰度相關(guān)的模板匹配9.2.6SATD算法Hadamard變換算法(SumofAbsoluteTransformedDifference,簡(jiǎn)稱SATD算法),是先經(jīng)Hadamard變換,再對(duì)絕對(duì)值求和算法。Hadamard變換等價(jià)于把原圖像Q矩陣左右分別乘以一個(gè)Hadamard變換矩陣H。其中,Hardamard變換矩陣H的元素都是1或-1,是一個(gè)正交矩陣,可以由Matlab中的Hadamard(n)函數(shù)生成,n代表n階方陣。SATD算法圖像匹配就是將模板與子圖做差后得到矩陣Q,再對(duì)矩陣Q求其Hadamard變換(左右同時(shí)乘以H,即HQH),對(duì)變換所得矩陣求其元素的絕對(duì)值之和,即SATD值,并將其作為相似度的判別依據(jù)。對(duì)所有子圖都進(jìn)行如上的變換后,找到SATD值最小的子圖,便是最佳匹配。9.2基于灰度相關(guān)的模板匹配—SATD算法SATD算法圖像匹配的Matlab程序代碼實(shí)現(xiàn)如下:%讀取圖像src=double(rgb2gray(imread('baby.jpg')));mask=double(rgb2gray(imread('模板圖像_bdd.jpg')));%模板圖像長(zhǎng)寬相等[M,K]=size(src);%搜索圖大小N=size(mask,1);%模板大小%%hadamard變換矩陣hdm_matrix=hadamard(N);hdm=zeros(M-N+1,K-N+1);%保存SATD值fori=1:M-N+1forj=1:K-N+1temp=(src(i:i+N-1,j:j+N-1)-mask)/256;sw=(hdm_matrix*temp*hdm_matrix)/256;hdm(i,j)=sum(sum(abs(sw)));endend%%尋找最小值及其窗口位置min_hdm=min(min(hdm));[x,y]=find(hdm==min_hdm);%展示匹配結(jié)果figure,imshow(uint8(mask));title('模板圖像');imwrite(uint8(mask),'模板圖像_bdd_gray.jpg');figure,imshow(uint8(src));holdon;rectangle('position',[y,x,N-1,N-1],'edgecolor','r');title('SATD匹配結(jié)果');holdoff;【Matlab實(shí)現(xiàn)】《智能圖像處理與分析識(shí)別》第九章圖像匹配9.1模板匹配的概念9.2基于灰度相關(guān)的模板匹配9.3基于變換域的模板匹配9.4基于特征相關(guān)的模板匹配圖像的空間域與其他域之間的變換,如傅里葉變換,小波變換,輪廓波變換,剪切波變換等,實(shí)際上是圖像在其他坐標(biāo)領(lǐng)域中的表現(xiàn)。在空間域中,圖像的信息是像素值和坐標(biāo)位置;在其他域中,如傅里葉變換,圖像的信息就是頻率和幅度。簡(jiǎn)單的講就是從不同的角度看圖像而已。在其他域中對(duì)圖像進(jìn)行模板匹配處理,稱為基于變換域的模板匹配。基于傅里葉變換的圖像匹配是典型的基于變換域的模板匹配方法,圖像的旋轉(zhuǎn)、平移、比例變換等均能在傅里葉變換的頻域中反映出來。9.3基于變換域的模板匹配9.3基于變換域的模板匹配

傅里葉變換的算法本質(zhì)上利用其頻率特性,將互相關(guān)函數(shù)轉(zhuǎn)化到頻域空間進(jìn)行計(jì)算,然后再將計(jì)算結(jié)果轉(zhuǎn)回到時(shí)域空間。公式如下:

則,根據(jù)維納-辛欽定理可得:

(*代表共軛復(fù)數(shù))對(duì)上述式子進(jìn)行快速傅里葉逆變換可得:

通過快速傅里葉變換得到模板圖和搜索圖之間的相對(duì)位移后,然后便可得到實(shí)驗(yàn)結(jié)果在搜索圖中的位置。9.3基于變換域的模板匹配%%讀取背景背景和模板圖像,并將其轉(zhuǎn)化為灰度圖template=rgb2gray(imread('baby_mask.jpg'));background=rgb2gray(imread('baby.jpg'));

%%獲取圖像的尺寸[by,bx]=size(background);[ty,tx]=size(template);%usedforbboxplacement

%%進(jìn)行傅里葉變換,計(jì)算頻譜數(shù)據(jù)Ga=fft2(background);Gb=fft2(template,by,bx);c=real(ifft2((Ga.*conj(Gb))./abs(Ga.*conj(Gb))));%%畫出互相關(guān)矩陣圖像figure;surf(c),shadingflat;%plotcorrelation%%獲取互相關(guān)函數(shù)的峰值位置[max_c,imax]=max(abs(c(:)));[ypeak,xpeak]=find(c==max(c(:)));

%%計(jì)算背景圖像中的匹配區(qū)域的位置position=[xpeak(1),ypeak(1),tx,ty];

%%畫出方框圖hFig=figure;hAx=axes;imshow(background,'Parent',hAx);rectangle('Position',position,'LineWidth',0.8,'EdgeColor','r');【Matlab實(shí)現(xiàn)】基于傅里葉變換的模板匹配算法的Matlab程序代碼實(shí)現(xiàn)如下:《智能圖像處理與分析識(shí)別》第九章圖像匹配9.1模板匹配的概念9.2基于灰度相關(guān)的模板匹配9.3基于變換域的模板匹配9.4基于特征相關(guān)的模板匹配9.4基于特征相關(guān)的模板匹配

基于特征的算法利用圖像的顯著特征,具有計(jì)算量小、速度快等特點(diǎn),對(duì)于圖像的畸變、噪聲、遮擋等也具有一定的魯棒性,但該類算法的匹配性能在很大程度上取決于特征提取的質(zhì)量。

常用的基于特征相關(guān)的模板匹配算法有:基于SIFT算法的圖像匹配、基于SURF算法的圖像匹配、基于ORB算法的圖像匹配。9.4.1基于SIFT算法的圖像匹配

尺度不變特征轉(zhuǎn)換(Scale-invariantfeaturetransform,簡(jiǎn)稱SIFT)

,是一種用來偵測(cè)與描述影像中的局部性特征的算法,它在空間尺度中尋找極值點(diǎn),提取位置、尺度、旋轉(zhuǎn)不變量,生成特征描述子。SIFT算法的實(shí)質(zhì)是在不同的尺度空間上查找關(guān)鍵點(diǎn)(特征點(diǎn)),并計(jì)算出關(guān)鍵點(diǎn)的方向。9.4基于特征相關(guān)的模板匹配9.4.1基于SIFT算法的圖像匹配SIFT算法主要分以下步驟:(1)尺度空間極值點(diǎn)檢測(cè):搜索所有尺度上的圖像位置,通過高斯微分函數(shù)來識(shí)別潛在的對(duì)于尺度和旋轉(zhuǎn)不變的興趣點(diǎn)。(2)篩選出穩(wěn)定的關(guān)鍵點(diǎn):在每個(gè)候選的位置上,通過一個(gè)擬合精細(xì)的模型來確定位置和尺度。關(guān)鍵點(diǎn)的選擇依據(jù)于它們的穩(wěn)定程度。(3)確定關(guān)鍵點(diǎn)方向:基于圖像局部的梯度方向,分配給每個(gè)關(guān)鍵點(diǎn)位置一個(gè)或多個(gè)方向。所有后面的對(duì)圖像數(shù)據(jù)的操作都相對(duì)于關(guān)鍵點(diǎn)的方向、尺度和位置進(jìn)行變換,從而提供對(duì)于這些變換的不變性。(4)生成特征點(diǎn)描述子:在每個(gè)關(guān)鍵點(diǎn)周圍的鄰域內(nèi),在選定的尺度上測(cè)量圖像局部的梯度。這些梯度被變換成一種表示,這種表示允許比較大的局部形狀的變形和光照變化。(5)特征點(diǎn)匹配

SIFT的尺度空間通過唯一線性變換核—高斯卷積核實(shí)現(xiàn),高斯函數(shù)如公式如下:

(1)尺度空間極值點(diǎn)檢測(cè)

9.4.1基于SIFT算法的圖像匹配

搭建高斯金字塔獲取不同的尺度空間,如下圖所示。原圖像做第一層,假設(shè)已具有尺度σ0(Lowe推薦σ0=1.6,需要將原始圖像做一定的調(diào)整,一般采用的方案是首先對(duì)初始圖像做雙線性差值以擴(kuò)大一倍),之后的每一幅圖像均由前一幅圖像濾波得到且對(duì)應(yīng)不同的參數(shù)σi(Octave),每組圖像的初始圖像(底層圖像)是前一組圖像倒數(shù)第三張隔點(diǎn)采樣得到的,以便保持連續(xù)性,不同組相同層的濾波圖像生成σi,最終生成的O組S+3層濾波圖像集合被統(tǒng)稱為高斯金字塔。9.4.1基于SIFT算法的圖像匹配

式中,σ是尺度空間坐標(biāo),σ0稱為初始尺度,s是組內(nèi)層的索引,S表示每組的層數(shù)(一般為3-5)。同一組相鄰兩層尺度關(guān)系和相鄰兩組同一層尺度關(guān)系如下:金字塔組數(shù)取值如公式為:其中,m,n分別為原始圖像的行高和列寬。原始圖像和塔頂圖像的大小共同決定金字塔層數(shù),取值一般在4-6左右其中,t為塔頂圖像的最小維數(shù)的對(duì)數(shù)值,S為組內(nèi)有效檢測(cè)層數(shù)。9.4.1基于SIFT算法的圖像匹配

搭建好高斯金字塔之后,需要按照一定的方式提取圖像的特征點(diǎn)。1980年,DavidCourtnayMarr和EllenHildreth提出了用于提取圖像特征點(diǎn)的LoG(LaplacianofGaussian)算法。2002年,Mikolajczyk指出尺度歸一化的數(shù)LoG所得出的極大值和極小值可以確保圖像特征的穩(wěn)定性,但計(jì)算復(fù)雜,運(yùn)行效率不高。早在1994年,Lindeberg發(fā)現(xiàn)與LoG非常相似的高斯差分函數(shù)DoG(DifferenceofGaussian),LoG與DoG的關(guān)系如下所示:LoG與DoG只差一個(gè)系數(shù),因此DoG算子也能確保圖像特征點(diǎn)的穩(wěn)定性。高斯差分圖像計(jì)算公式如下:與分別代表相鄰兩層圖像的高斯變換結(jié)果,相減即可得到高斯金字塔。9.4.1基于SIFT算法的圖像匹配關(guān)鍵點(diǎn)即DoG空間中穩(wěn)定的極值點(diǎn)。為了尋找DoG函數(shù)的極值點(diǎn),每一個(gè)像素點(diǎn)要和所有相鄰點(diǎn)進(jìn)行對(duì)比,看是否比其尺度域的相鄰點(diǎn)大或者小,如圖9-11比較采樣點(diǎn)與其相鄰點(diǎn),其中,藍(lán)色的叉號(hào)為采樣點(diǎn),紅色的點(diǎn)為相鄰點(diǎn),共26個(gè)(同尺度8個(gè)、上下相鄰尺度各有9個(gè)點(diǎn)),查找關(guān)鍵點(diǎn)就是尋找極值點(diǎn)的過程。Scale9.4.1基于SIFT算法的圖像匹配(2)篩選出穩(wěn)定的關(guān)鍵點(diǎn)

9.4.1基于SIFT算法的圖像匹配

由于DoG算子會(huì)產(chǎn)生較強(qiáng)的邊緣響應(yīng),產(chǎn)生的不穩(wěn)定邊緣響應(yīng)點(diǎn)需要被剔除??紤]到高斯差分算子的極值在橫跨邊緣的地方有較大主曲率,而在垂直邊緣的方向有較小的主曲率,因此可以通過極值點(diǎn)主曲率的大小來評(píng)估其穩(wěn)定性。主曲率通過一個(gè)2×2的Hessian矩陣H求出,Hessian矩陣的計(jì)算公式如下所示:

9.4.1基于SIFT算法的圖像匹配

(3)確定關(guān)鍵點(diǎn)的方向

為使生成的描述子具有旋轉(zhuǎn)不變性,Lowe提出用每個(gè)關(guān)鍵點(diǎn)所在鄰域內(nèi)所有像素點(diǎn)的梯度方向分布特性來確定關(guān)鍵點(diǎn)主方向的相應(yīng)參數(shù),梯度模值和方向分布公式如下所示:其中,L是關(guān)鍵點(diǎn)所在的尺度空間。9.4.1基于SIFT算法的圖像匹配選取一個(gè)鄰域,關(guān)鍵點(diǎn)為中心,鄰域內(nèi)所有像素點(diǎn)的梯度用直方圖統(tǒng)計(jì),方向用箭頭表示。平面角度范圍0~360°,以10。為一個(gè)方向單位平均分為36個(gè)方向。如圖所示,直方圖的峰值方向代表了關(guān)鍵點(diǎn)的主方向,方向直方圖的峰值則代表了該特征點(diǎn)處鄰域梯度的方向,以直方圖中最大值作為該關(guān)鍵點(diǎn)的主方向,為了簡(jiǎn)化,圖中僅展示了表示8個(gè)方向的直方圖直方圖表示梯度幅值大小,箭頭表示梯度方向,梯度幅值最大所對(duì)應(yīng)的方向表示關(guān)鍵點(diǎn)的主方向。為使算法具有更好的魯棒性,直方圖梯度幅值大于主方向峰值80%的方向表示為輔方向。因此,在相同位置和尺度下,會(huì)有多個(gè)峰值關(guān)鍵點(diǎn)被創(chuàng)建,但各關(guān)鍵點(diǎn)的方向不同。9.4.1基于SIFT算法的圖像匹配(4)生成特征點(diǎn)描述子

之前的操作步驟確保每個(gè)特征點(diǎn)有了尺度、位置和方向信息。特征描述子就是通過這三個(gè)信息建立的。如圖所示,在特征點(diǎn)周圍取一4×4大小的鄰域,以1×1分割鄰域?yàn)?6個(gè)方塊,每個(gè)方塊8個(gè)方向,每個(gè)方向1個(gè)數(shù)值,因此特征點(diǎn)描述子為4×4×8=128維。9.4.1基于SIFT算法的圖像匹配(5)特征點(diǎn)匹配

其中,Threshold為閾值,一般取為0.8。SIFT算法具有旋轉(zhuǎn)、尺度、亮度、仿射不變性,視角、噪聲穩(wěn)定性,易于與其他算法結(jié)合,但實(shí)時(shí)性差、對(duì)邊緣光滑的特征點(diǎn)提取能力低。9.4.1基于SIFT算法的圖像匹配%該函數(shù)讀取圖像并返回其SIFT“關(guān)鍵點(diǎn)”function[image,descriptors,locs]=sift(imageFile)image=imread(imageFile);%讀圖[rows,cols]=size(image);%轉(zhuǎn)換為PGM格式,便于“關(guān)鍵點(diǎn)”可執(zhí)行文件的讀取f=fopen('tmp.pgm','w');iff==-1error('Couldnotcreatefiletmp.pgm.');endfprintf(f,'P5\n%d\n%d\n255\n',cols,rows);fwrite(f,image','uint8');fclose(f);%調(diào)用“關(guān)鍵點(diǎn)”可執(zhí)行文件ifisunixcommand='!./sift';elsecommand='!siftWin32';endcommand=[command'<tmp.pgm>tmp.key'];eval(command);g=fopen('tmp.key','r');ifg==-1error('Couldnotopenfiletmp.key.');end[header,count]=fscanf(g,'%d%d',[12]);ifcount~=2error('Invalidkeypointfilebeginning.');endnum=header(1);len=header(2);iflen~=128error('Keypointdescriptorlengthinvalid(shouldbe128).');end【Matlab實(shí)現(xiàn)】SIFT算法的Matlab程序代碼實(shí)現(xiàn)如下:9.4.1基于SIFT算法的圖像匹配%創(chuàng)建兩個(gè)輸出矩陣(使用已知大小以提高效率)locs=double(zeros(num,4));descriptors=double(zeros(num,128));

fori=1:num[vector,count]=fscanf(g,'%f%f%f%f',[14]);ifcount~=4error('Invalidkeypointfileformat');endlocs(i,:)=vector(1,:);

[descrip,count]=fscanf(g,'%d',[1len]);if(count~=128)error('Invalidkeypointfilevalue.');end%將每個(gè)輸入向量標(biāo)準(zhǔn)化為單位長(zhǎng)度descrip=descrip/sqrt(sum(descrip.^2));descriptors(i,:)=descrip(1,:);endfclose(g);%%該函數(shù)顯示疊加了SIFT“關(guān)鍵點(diǎn)”的圖像functionshowkeys(image,locs)disp('DrawingSIFTkeypoints...');figure('Position',[5050size(image,2)size(image,1)]);%利用“關(guān)鍵點(diǎn)”畫圖colormap('gray');imagesc(image);holdon;imsize=size(image);fori=1:size(locs,1)TransformLine(imsize,locs(i,:),0.0,0.0,1.0,0.0);TransformLine(imsize,locs(i,:),0.85,0.1,1.0,0.0);TransformLine(imsize,locs(i,:),0.85,-0.1,1.0,0.0);endholdoff;9.4.1基于SIFT算法的圖像匹配%x1,y1;起始點(diǎn)%x2,y2;終止點(diǎn)functionTransformLine(imsize,keypoint,x1,y1,x2,y2)len=6*keypoint(3);s=sin(keypoint(4));c=cos(keypoint(4));%變換r1=keypoint(1)-len*(c*y1+s*x1);c1=keypoint(2)+len*(-s*y1+c*x1);r2=keypoint(1)-len*(c*y2+s*x2);c2=keypoint(2)+len*(-s*y2+c*x2);line([c1c2],[r1r2],'Color','c');%%該函數(shù)讀取兩張圖像,并找到它們的SIFT特征functionnum=match(image1,image2)[im1,des1,loc1]=sift(image1);%找出每張圖的SIFT關(guān)鍵點(diǎn)[im2,des2,loc2]=sift(image2);distRatio=0.6;des2t=des2';%預(yù)計(jì)算矩陣轉(zhuǎn)置fori=1:size(des1,1)dotprods=des1(i,:)*des2t;%點(diǎn)積向量[vals,indx]=sort(acos(dotprods));%取反余弦并對(duì)結(jié)果進(jìn)行排序

%檢查最近鄰的角度是否小于2*distRatio.if(vals(1)<distRatio*vals(2))match(i)=indx(1);elsematch(i)=0;endend9.4.1基于SIFT算法的圖像匹配%顯示匹配點(diǎn)連接的圖像newImg=cat(2,im1,im2);%將兩張圖像放在一張圖中figure;imshow(newImg)holdonplot(loc1(:,2),loc1(:,1),'ro','MarkerSize',5,'LineWidth',0.7)plot(loc2(:,2)+size(im1,1),loc2(:,1),'m*','MarkerSize',5,'LineWidth',0.7)cols1=size(im1,2);fori=1:size(des1,1)if(match(i)>0)line([loc1(i,2)loc2(match(i),2)+cols1],...[loc1(i,1)loc2(match(i),1)],'Color','c');endendholdoff;num=sum(match>0);fprintf('Found%dmatches.\n',num);%保存結(jié)果frame=getframe(gcf);im=frame2im(frame);imwrite(im,'S圖像匹配結(jié)果.jpg');%%主程序img1=imread('baby1.JPG');img2=imread('baby2.JPG');img1_gray=rgb2gray(img1);img2_gray=rgb2gray(img2);match('img1_gray.jpg','img2_gray.jpg');9.4.1基于SIFT算法的圖像匹配9.4.1基于SIFT算法的圖像匹配9.4基于特征相關(guān)的模板匹配9.4.2基于SURF算法的圖像匹配2006年HerbertBay提出了SURF算法,該算法是對(duì)SIFT算法的改進(jìn),不僅繼承了SIFT算法的優(yōu)點(diǎn),而且比SIFT算法速度快。下面對(duì)SURF算法作一下簡(jiǎn)單的闡述。

由計(jì)算點(diǎn)的積分到計(jì)算圖像區(qū)域的積分,只需要計(jì)算圖像區(qū)域四個(gè)角在積分圖像的值,公式如下所示:

由于特征點(diǎn)需具備尺度無關(guān)性,所以在Hessian矩陣構(gòu)造前,需要對(duì)其進(jìn)行高斯濾波。9.4.2基于SURF算法的圖像匹配

調(diào)整權(quán)值大小跟蹤尺度間的變換以減少近似值和特征值間的誤差,其行列式公式如下所示:由上述公式計(jì)算Hessian矩陣特征值,由特征值的正負(fù)判定局部極值點(diǎn),正數(shù)為極值點(diǎn),可以獲取代表Hessian行列式近似值的圖像。與SIFT算法使用高斯濾波器對(duì)圖像進(jìn)行降采樣計(jì)算不同,SURF算法是在濾波過程中完成尺度變換,它使用盒子濾波器(Boxfilter)直接改變?yōu)V波器的尺寸生成圖像金字塔,即尺度空間。高斯濾波模板盒子濾波器濾波器如下圖所示:不同尺寸高斯差分濾波器示意圖9.4.2基于SURF算法的圖像匹配盒子濾波器尺寸初始值9×9,之后濾波器尺寸擴(kuò)展如公式如下所示:其中,octave、interval從1開始計(jì)數(shù),當(dāng)octave=1,interval=1時(shí),是第0組第0層。初始尺寸的獲取是σ=1.2時(shí)高斯二階微分函數(shù)經(jīng)過離散和減裁得到的。濾波模板尺寸與σ之間關(guān)系為σ=1.2×L/9。SURF算法尺度空間分四組,每組四層,為保證連續(xù)性,相鄰組中有重疊部分,盒子濾波器尺寸如右圖所示。9.4.2基于SURF算法的圖像匹配SURF算法與SIFT算法尺度空間的相同點(diǎn)都是O組L層,由章節(jié)3.2.1可知,不同點(diǎn)在于SURF的尺度空間中,不同組濾波器模板尺寸逐漸增加,而圖像尺寸一致,相當(dāng)于一個(gè)上采樣的過程。同組使用同尺寸濾波器,但濾波器的模糊系數(shù)逐漸增大。SURF算法得到的圖像金字塔如下圖(右)所示。9.4.2基于SURF算法的圖像匹配

盒式濾波器將圖像濾波轉(zhuǎn)化成計(jì)算加減運(yùn)算問題,只需簡(jiǎn)單查找積分圖就可,這樣可以并行化計(jì)算,提高了運(yùn)算速度。9.4.2基于SURF算法的圖像匹配(3)篩選特征點(diǎn)經(jīng)過濾波矩陣對(duì)圖像處理,可以得到該尺度空間下的局部極值點(diǎn)。SURF檢測(cè)特征點(diǎn)恰恰與SIFT相反,先Hessian矩陣檢測(cè),再非極大抑制。雖順序相反,但方法保持一致,因此不再贅述。(4)計(jì)算特征點(diǎn)主方向SURF用統(tǒng)計(jì)特征點(diǎn)圓形鄰域內(nèi)的Haar小波特性的方法統(tǒng)計(jì)特征點(diǎn)方向。設(shè)立一個(gè)圓形鄰域,圓心是特征點(diǎn),半徑是6S(S:特征點(diǎn)對(duì)應(yīng)尺度),4S尺寸的Haar小波模板進(jìn)行圖像處理,統(tǒng)計(jì)60°扇形區(qū)域內(nèi)所有的點(diǎn)水平、垂直Haar小波特性總和,同樣方法處理整個(gè)區(qū)域,最后將最大值所屬扇形區(qū)域的方向作該特征點(diǎn)的主方向,且只有一個(gè)。如下圖所示:9.4.2基于SURF算法的圖像匹配

dx

dy5s*5s主方向Hear小波模板旋轉(zhuǎn)到主方向特征描述子生成過程SURF算法運(yùn)用“盒子濾波器”改進(jìn)特征提取方式,降低特征描述子維數(shù)改進(jìn)描述方式,這樣,相較于SIFT算法時(shí)間縮短,但實(shí)時(shí)性仍舊差。9.4.2基于SURF算法的圖像匹配%%讀取圖像I1=imread('baby1.JPG');I1=imresize(I1,0.6);I1=rgb2gray(I1);I2=imread('baby2.JPG');I2=imresize(I2,0.6);I2=rgb2gray(I2);

%%尋找特征點(diǎn)

points1=detectSURFFeatures(I1);points2=detectSURFFeatures(I2);

%%計(jì)算描述向量

[f1,vpts1]=extractFeatures(I1,points1);[f2,vpts2]=extractFeatures(I2,points2);

%%顯示figure;showMatchedFeatures(I1,I2,matched_pts1,matched_pts2,'montage');legend('matchedpoints1','matchedpoints2');%圖例

輸出結(jié)果如圖9-23所示:SURF算法的Matlab程序代碼實(shí)現(xiàn)如下:%%進(jìn)行匹配

indexPairs=matchFeatures(f1,f2,'Prenormalized',true);matched_pts1=vpts1(indexPairs(:,1));matched_pts2=vpts2(indexPairs(:,2));基于SURF算法的圖像匹配結(jié)果【Matlab實(shí)現(xiàn)】9.4.2基于SURF算法的圖像匹配9.4基于特征相關(guān)的模板匹配計(jì)算其余點(diǎn)與P點(diǎn)的像素差公式如下:要判斷像素P是否為特征點(diǎn),則首先利用公式計(jì)算P1、P5、P9、P13與中心P的像素差,若至少有3個(gè)點(diǎn)的像素差的絕對(duì)值高出閾值,則進(jìn)行下一步,否則舍棄。第二步,利用公式計(jì)算其余點(diǎn)與P點(diǎn)的像素差,在像素差的絕對(duì)值至少有連續(xù)9個(gè)超過閾值的情況下,定為角點(diǎn),否則不是角點(diǎn)。(1)oFAST特征檢測(cè)

1)基于FAST算法進(jìn)行特征點(diǎn)的提取2006年Rosten和Drummond提出一種使用決策樹學(xué)習(xí)方法加速的角點(diǎn)檢測(cè)算法,即FAST算法,該算法認(rèn)為若某點(diǎn)像素值與其周圍某鄰域內(nèi)一定數(shù)量的點(diǎn)的像素值相差較大,則該像素可能是角點(diǎn)。9.4.3基于ORB算法的圖像匹配②非極大值抑制先劃定一個(gè)鄰域(中心是特征點(diǎn)P,大小是3×3或5×5),通過極亮暗點(diǎn)判斷計(jì)算鄰域內(nèi)所有點(diǎn),若只有特征點(diǎn)P,則保留;若存在多個(gè)特征點(diǎn),需計(jì)算所有特征點(diǎn)的s值(即score值,16個(gè)點(diǎn)與中心差值的絕對(duì)值總和),只有在P響應(yīng)值最大的情況下保留,其他情況下抑制。s值計(jì)算公式如下所示:

9.4.3基于ORB算法的圖像匹配那么,質(zhì)心位置C公式如下所示:

特征點(diǎn)中心與質(zhì)心連線的向量即為oFAST特征點(diǎn)的方向。其角度公式如下所示:2)特征點(diǎn)附加方向ORB算法用灰度質(zhì)心法(IntensityCentroid,簡(jiǎn)稱IC)附加方向。其定義為:角點(diǎn)視為物體,物體質(zhì)心(即角點(diǎn)質(zhì)心)與角點(diǎn)灰度之間有偏移量存在,這個(gè)偏移量可以確定角點(diǎn)方向。首先計(jì)算Imagemoment(圖像矩),圖像塊的力矩公式如下所示:

9.4.3基于ORB算法的圖像匹配

9.4.3基于ORB算法的圖像匹配

9.4.3基于ORB算法的圖像匹配3)特征匹配描述子間的Hamming距離是判斷匹配的依據(jù)。一般情況下,當(dāng)Hamming距離大于128時(shí),特征點(diǎn)不匹配。Hamming距離的計(jì)算公式如下所示:oFAST檢測(cè)大大提升了特征點(diǎn)的檢測(cè)速度,rBRIEF描述子也縮短了生成描述子的時(shí)間,所以O(shè)RB算法在速度上比SIFT和SURF算法有很大的提升,實(shí)時(shí)性高。但是ORB算法的缺點(diǎn)就是它并不具備尺度不變性,匹配精度有待提高。9.4.3基于ORB算法的圖像匹配ORB算法的Matlab主程序代碼實(shí)現(xiàn)如下:%%主程序%讀取圖像im1=imread('baby1.JPG');im2=imread('baby2.JPG');scale=[1,0.75,0.5,0.25];im1_grey=rgb2gray(im1);im2_grey=rgb2gray(im2);%FAST算法進(jìn)行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論