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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

模板匹配的分類方法很多,通常可分為三種:基于灰度相關的模板匹配方法、基于變換域的模板匹配方法和基于特征相關的模板匹配方法。《智能圖像處理與分析識別》第九章圖像匹配9.1模板匹配的概念9.2基于灰度相關的模板匹配9.3基于變換域的模板匹配9.4基于特征相關的模板匹配9.2基于灰度相關的模板匹配

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

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

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

9.2基于灰度相關的模板匹配MAD算法利用平均絕對差作為相似性測度,平均絕對差的計算公式如下:其中,,

9.2.1MAD算法9.2基于灰度相關的模板匹配—SAD算法9.2.2SAD算法

絕對誤差和算法(SumofAbsoluteDifferences,簡稱SAD算法)與MAD算法思想幾乎是完全一致,只是其相似度測量公式有所不同。SAD算法的相似性測度計算的是子圖與模板圖的L1距離,公式如下:9.2基于灰度相關的模板匹配—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%若圖像是彩色圖像則轉化為灰度圖src_gray=rgb2gray(src);elsesrc_gray=src;end【Matlab實現】%%計算相似性測度dst=zeros(m-M,n-N);fori=1:m-M%子圖選取,每次滑動一個像素

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

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

9.2基于灰度相關的模板匹配9.2.3SSD算法

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

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

9.2基于灰度相關的模板匹配—SSDA算法

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

右圖給出了A、B、C三點的誤差累計增長曲線。其中,A、B種情況誤差增長得快,達到誤差閾值Th所用累加次數少,說明被搜索圖像區域偏離模板較為嚴重;C情況下增長緩慢,達到誤差閾值Th所用累加次數多,說明被搜索圖像區域與模板偏離較小,很可能是匹配點。9.2基于灰度相關的模板匹配9.2.6SATD算法Hadamard變換算法(SumofAbsoluteTransformedDifference,簡稱SATD算法),是先經Hadamard變換,再對絕對值求和算法。Hadamard變換等價于把原圖像Q矩陣左右分別乘以一個Hadamard變換矩陣H。其中,Hardamard變換矩陣H的元素都是1或-1,是一個正交矩陣,可以由Matlab中的Hadamard(n)函數生成,n代表n階方陣。SATD算法圖像匹配就是將模板與子圖做差后得到矩陣Q,再對矩陣Q求其Hadamard變換(左右同時乘以H,即HQH),對變換所得矩陣求其元素的絕對值之和,即SATD值,并將其作為相似度的判別依據。對所有子圖都進行如上的變換后,找到SATD值最小的子圖,便是最佳匹配。9.2基于灰度相關的模板匹配—SATD算法SATD算法圖像匹配的Matlab程序代碼實現如下:%讀取圖像src=double(rgb2gray(imread('baby.jpg')));mask=double(rgb2gray(imread('模板圖像_bdd.jpg')));%模板圖像長寬相等[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);%展示匹配結果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匹配結果');holdoff;【Matlab實現】《智能圖像處理與分析識別》第九章圖像匹配9.1模板匹配的概念9.2基于灰度相關的模板匹配9.3基于變換域的模板匹配9.4基于特征相關的模板匹配圖像的空間域與其他域之間的變換,如傅里葉變換,小波變換,輪廓波變換,剪切波變換等,實際上是圖像在其他坐標領域中的表現。在空間域中,圖像的信息是像素值和坐標位置;在其他域中,如傅里葉變換,圖像的信息就是頻率和幅度。簡單的講就是從不同的角度看圖像而已。在其他域中對圖像進行模板匹配處理,稱為基于變換域的模板匹配。基于傅里葉變換的圖像匹配是典型的基于變換域的模板匹配方法,圖像的旋轉、平移、比例變換等均能在傅里葉變換的頻域中反映出來。9.3基于變換域的模板匹配9.3基于變換域的模板匹配

傅里葉變換的算法本質上利用其頻率特性,將互相關函數轉化到頻域空間進行計算,然后再將計算結果轉回到時域空間。公式如下:

則,根據維納-辛欽定理可得:

(*代表共軛復數)對上述式子進行快速傅里葉逆變換可得:

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

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

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

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

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

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

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

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

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

SIFT的尺度空間通過唯一線性變換核—高斯卷積核實現,高斯函數如公式如下:

(1)尺度空間極值點檢測

9.4.1基于SIFT算法的圖像匹配

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

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

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

9.4.1基于SIFT算法的圖像匹配

由于DoG算子會產生較強的邊緣響應,產生的不穩定邊緣響應點需要被剔除。考慮到高斯差分算子的極值在橫跨邊緣的地方有較大主曲率,而在垂直邊緣的方向有較小的主曲率,因此可以通過極值點主曲率的大小來評估其穩定性。主曲率通過一個2×2的Hessian矩陣H求出,Hessian矩陣的計算公式如下所示:

9.4.1基于SIFT算法的圖像匹配

(3)確定關鍵點的方向

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

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

其中,Threshold為閾值,一般取為0.8。SIFT算法具有旋轉、尺度、亮度、仿射不變性,視角、噪聲穩定性,易于與其他算法結合,但實時性差、對邊緣光滑的特征點提取能力低。9.4.1基于SIFT算法的圖像匹配%該函數讀取圖像并返回其SIFT“關鍵點”function[image,descriptors,locs]=sift(imageFile)image=imread(imageFile);%讀圖[rows,cols]=size(image);%轉換為PGM格式,便于“關鍵點”可執行文件的讀取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);%調用“關鍵點”可執行文件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實現】SIFT算法的Matlab程序代碼實現如下:9.4.1基于SIFT算法的圖像匹配%創建兩個輸出矩陣(使用已知大小以提高效率)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%將每個輸入向量標準化為單位長度descrip=descrip/sqrt(sum(descrip.^2));descriptors(i,:)=descrip(1,:);endfclose(g);%%該函數顯示疊加了SIFT“關鍵點”的圖像functionshowkeys(image,locs)disp('DrawingSIFTkeypoints...');figure('Position',[5050size(image,2)size(image,1)]);%利用“關鍵點”畫圖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;起始點%x2,y2;終止點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');%%該函數讀取兩張圖像,并找到它們的SIFT特征functionnum=match(image1,image2)[im1,des1,loc1]=sift(image1);%找出每張圖的SIFT關鍵點[im2,des2,loc2]=sift(image2);distRatio=0.6;des2t=des2';%預計算矩陣轉置fori=1:size(des1,1)dotprods=des1(i,:)*des2t;%點積向量[vals,indx]=sort(acos(dotprods));%取反余弦并對結果進行排序

%檢查最近鄰的角度是否小于2*distRatio.if(vals(1)<distRatio*vals(2))match(i)=indx(1);elsematch(i)=0;endend9.4.1基于SIFT算法的圖像匹配%顯示匹配點連接的圖像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);%保存結果frame=getframe(gcf);im=frame2im(frame);imwrite(im,'S圖像匹配結果.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基于特征相關的模板匹配9.4.2基于SURF算法的圖像匹配2006年HerbertBay提出了SURF算法,該算法是對SIFT算法的改進,不僅繼承了SIFT算法的優點,而且比SIFT算法速度快。下面對SURF算法作一下簡單的闡述。

由計算點的積分到計算圖像區域的積分,只需要計算圖像區域四個角在積分圖像的值,公式如下所示:

由于特征點需具備尺度無關性,所以在Hessian矩陣構造前,需要對其進行高斯濾波。9.4.2基于SURF算法的圖像匹配

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

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

dx

dy5s*5s主方向Hear小波模板旋轉到主方向特征描述子生成過程SURF算法運用“盒子濾波器”改進特征提取方式,降低特征描述子維數改進描述方式,這樣,相較于SIFT算法時間縮短,但實時性仍舊差。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);

%%尋找特征點

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

%%計算描述向量

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

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

輸出結果如圖9-23所示:SURF算法的Matlab程序代碼實現如下:%%進行匹配

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

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

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

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

9.4.3基于ORB算法的圖像匹配

9.4.3基于ORB算法的圖像匹配

9.4.3基于ORB算法的圖像匹配3)特征匹配描述子間的Hamming距離是判斷匹配的依據。一般情況下,當Hamming距離大于128時,特征點不匹配。Hamming距離的計算公式如下所示:oFAST檢測大大提升了特征點的檢測速度,rBRIEF描述子也縮短了生成描述子的時間,所以ORB算法在速度上比SIFT和SURF算法有很大的提升,實時性高。但是ORB算法的缺點就是它并不具備尺度不變性,匹配精度有待提高。9.4.3基于ORB算法的圖像匹配ORB算法的Matlab主程序代碼實現如下:%%主程序%讀取圖像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算法進行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論