版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、clc clear all % 讀入圖片 pic1=imread('lena1.jpg'); pic2=imread('lena2.jpg'); % Harris角點檢測 points1=myHarris(pic1); points2=myHarris(pic2); % 畫出Harris角點 figure(1) drawHarrisCorner(pic1,points1,pic2,points2); % 角點特征描述 des1=myHarrisCornerDescription(pic1,points1); des2=myHarrisCornerDescript
2、ion(pic2,points2); % 角點粗匹配 matchs=myMatch(des1,des2); % 獲取各自出匹配角點位置 matchedPoints1=points1(matchs(:,1),:); matchedPoints2=points2(matchs(:,2),:); % 粗匹配角點連線 figure(2) drawLinedCorner(pic1,matchedPoints1,pic2,matchedPoints2); % 角點精匹配 newLoc1,newLoc2=pointsSelect(matchedPoints1,matchedPoints2); % 精匹配角點
3、連線 figure(3) drawLinedCorner(pic1,newLoc1,pic2,newLoc2); % 圖像拼接 im=picMatched(pic1,newLoc1,pic2,newLoc2); % 顯示拼接圖像 figure(4) imshow(im); set(gcf,'Color','w'); function points=myHarris(pic) % 功能:尋找Harris角點 % 輸入:RGB圖像或gray圖% 輸出:角點所在的行、縱的N×2矩陣 if length(size(pic)=3 pic=rgb2gray(pic
4、); end pic=double(pic); hx=-1 0 1; Ix=filter2(hx,pic); hy=-1;0;1; Iy=filter2(hy,pic); Ix2=Ix.*Ix; Iy2=Iy.*Iy; Ixy=Ix.*Iy; h=fspecial('gaussian',7 7,2); Ix2=filter2(h,Ix2); Iy2=filter2(h,Iy2); Ixy=filter2(h,Ixy); heigth,width=size(pic); alpha=0.06; R=zeros(heigth,width); for i=1:heigth for j=
5、1:width M=Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j); R(i,j)=det(M)-alpha*(trace(M)2); end end Rmax=max(max(R); pMap=zeros(heigth,width); for i=2:heigth-1 for j=2:width-1 if R(i,j)>0.01*Rmax tm=R(i-1:i+1,j-1:j+1); tm(2,2)=0; if R(i,j)>tm pMap(i,j)=1; end end end end row,col=find(pMap=1); points=row,c
6、ol; function drawHarrisCorner(pic1,points1,pic2,points2) % 功能:畫出Harris角點的連接% 輸入: % pic1、pic2:待拼接的圖像 % points1、points2:Harris角點位置 X1=points1(:,2); Y1=points1(:,1); X2=points2(:,2); Y2=points2(:,1); dif=size(pic1,2); imshowpair(pic1,pic2,'montage'); hold on plot(X1,Y1,'b*'); plot(X2+di
7、f,Y2,'b*'); set(gcf,'Color','w'); function des=myHarrisCornerDescription(pic,points) % 功能:Harris角點特征描述 % 輸入: % pic:原圖像 % points:角點位置 % 輸出: % des:8×N的角點特征描述矩陣 if length(size(pic)=3 pic=rgb2gray(pic); end len=length(points); des=zeros(8,len); for k=1:len p=points(k,:); pc=
8、pic(p(1),p(2); des(1,k)=pic(p(1)-1,p(2)-1)-pc; des(2,k)=pic(p(1),p(2)-1)-pc; des(3,k)=pic(p(1)+1,p(2)-1)-pc; des(4,k)=pic(p(1)+1,p(2)-pc; des(5,k)=pic(p(1)+1,p(2)+1)-pc; des(6,k)=pic(p(1),p(2)+1)-pc; des(7,k)=pic(p(1)-1,p(2)+1)-pc; des(8,k)=pic(p(1)-1,p(2)-pc; des(:,k)=des(:,k)/sum(des(:,k); end fun
9、ction matchs=myMatch(des1,des2)% 功能:特征點雙向匹配 % 輸入: % des1、des2:特征點描述信息構(gòu)成的矩陣 % 輸出: % matchs:匹配的特征點對應(yīng)關(guān)系 len1=length(des1); len2=length(des2); match1=zeros(len1,2); cor1=zeros(1,len2); for i=1:len1 d1=des1(:,i); for j=1:len2 d2=des2(:,j); cor1(j)=(d1'*d2)/sqrt(d1'*d1)*(d2'*d2); end ,indx=max
10、(cor1); match1(i,:)=i,indx; end match2=zeros(len2,2); cor2=zeros(1,len1); for i=1:len2 d2=des2(:,i); for j=1:len1 d1=des1(:,j); cor2(j)=(d1'*d2)/sqrt(d1'*d1)*(d2'*d2); end ,indx=max(cor2); match2(i,:)=indx,i; end matchs=; for i=1:length(match1) for j=1:length(match2) if match1(i,:)=match
11、2(j,:) matchs=matchs;match1(i,:); end end end function drawLinedCorner(pic1,loc1,pic2,loc2)% 功能:畫出匹配角點的連接 % 輸入: % pic1、pic2:待拼接的圖像 % loc1、loc2:匹配角點位置 X1=loc1(:,2); Y1=loc1(:,1); X2=loc2(:,2); Y2=loc2(:,1); dif=size(pic1,2); imshowpair(pic1,pic2,'montage'); hold on for k=1:length(X1) plot(X1(
12、k),Y1(k),'b*'); plot(X2(k)+dif,Y2(k),'b*'); line(X1(k),X2(k)+dif,Y1(k),Y2(k),'Color','r'); end set(gcf,'Color','w'); function newLoc1,newLoc2=pointsSelect(loc1,loc2) % 功能:篩選匹配特征點對,獲取高精度的控制點 % 輸入: % loc1、loc2:粗匹配特征點位置 % 輸出: % newLoc1、newLoc2:精匹配控制點位置 sl
13、ope=(loc2(:,1)-loc1(:,1)./(loc2(:,2)-loc1(:,2); for k=1:3 slope=slope-mean(slope); len=length(slope); t=sort(abs(slope); thresh=t(round(0.5*len); ind=abs(slope)<=thresh; slope=slope(ind); loc1=loc1(ind,:); loc2=loc2(ind,:); end newLoc1=loc1; newLoc2=loc2; function im=picMatched(pic1,newLoc1,pic2,
14、newLoc2)% 功能:獲取拼接之后的圖片 % 輸入: % pic1、pic2:待拼接圖片 % newLoc1、newLoc2:變換控制點矩陣 % 輸出: % im:拼接后的圖片 if length(size(pic1)=2 pic1=cat(3,pic1,pic1,pic1); end if length(size(pic2)=2 pic2=cat(3,pic2,pic2,pic2); end SZ=2000; X1=newLoc1(:,2); Y1=newLoc1(:,1); X2=newLoc2(:,2); Y2=newLoc2(:,1); sel=randperm(length(ne
15、wLoc1),3); x=X2(sel)' y=Y2(sel)' X=X1(sel)' Y=Y1(sel)' U=x;y;ones(1,3); V=X;Y;ones(1,3); T=V/U; cntrX=SZ/2; cntrY=SZ/2; im=zeros(SZ,SZ,3); for i=1:size(pic2,1) for j=1:size(pic2,2) tmp=T*j;i;1; nx=round(tmp(1)+cntrX; ny=round(tmp(2)+cntrY; if nx>=1 && nx<=SZ &&
16、ny>=1 && ny<=SZ im(ny,nx,:)=pic2(i,j,:); end end end im=imresize(im,1,'bicubic'); tpic1=zeros(SZ,SZ,3); tpic1(1+cntrY:size(pic1,1)+cntrY,1+cntrX:size(pic1,2)+cntrX,:)=pic1; re=rgb2gray(uint8(im)-rgb2gray(uint8(tpic1); for k=1:3 ta=im(:,:,k);tb=tpic1(:,:,k); ta(re=0)=tb(re=0); i
17、m(:,:,k)=ta; end clear ta tb re tpic1 im=getPicture(im,SZ); im=uint8(im); if length(size(pic1)=2 im=rgb2gray(im); end function im=getPicture(pic,SZ) % 功能:獲取圖像有用區(qū)域 % 輸入: % pic:拼接圖像 % SZ:預(yù)定圖像尺寸 % 輸出: % im:有用區(qū)域圖像 if length(size(pic)=2 pic=cat(3,pic,pic,pic); end k=1; while k<SZ if any(any(pic(k,:,:) break end k=k+1; end ceil=k; %上邊界 k=SZ; while k>0 if
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑施工承包合同范本
- 2025年廣告銷售工作計劃范文(二篇)
- 2025年初中校長開學(xué)典禮演講稿例文(3篇)
- 2025年小學(xué)開學(xué)典禮校長講話稿(3篇)
- 2025年化驗室個人工作總結(jié)(2篇)
- 創(chuàng)業(yè)培訓(xùn)實施方案范文(2篇)
- 爆破安全管理員安全生產(chǎn)職責(zé)模版(2篇)
- 工廠安全用電基本規(guī)程模版(3篇)
- 啟源橫剪線安全操作規(guī)程范文(2篇)
- 家委會會議方案樣本(4篇)
- 《針灸推拿》題庫
- 2023年上海市初中物理競賽復(fù)賽試題銀光杯
- GB/T 20475.2-2006煤中有害元素含量分級第2部分:氯
- GB 18218-2000重大危險源辨識
- 神通數(shù)據(jù)庫管理系統(tǒng)v7.0企業(yè)版-2實施方案
- 油田視頻監(jiān)控綜合應(yīng)用平臺解決方案
- 福建省泉州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細(xì)及行政區(qū)劃代碼
- 酒精性腦病的護(hù)理查房實用版課件
- 三年級新教科版科學(xué)《我們來做-“熱氣球”》說課稿
- 國家電網(wǎng)有限公司十八項電網(wǎng)重大反事故措施(修訂版)
- 凈水廠課程設(shè)計
評論
0/150
提交評論