大作業(yè)圖像拼接_第1頁
大作業(yè)圖像拼接_第2頁
大作業(yè)圖像拼接_第3頁
大作業(yè)圖像拼接_第4頁
大作業(yè)圖像拼接_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、圖像拼接報(bào)告學(xué)院(系): 軟件學(xué)院 專 業(yè): 軟件工程(日強(qiáng)) 班 級: 0809 學(xué) 號: 200892066 姓 名: 師慧波 大連理工大學(xué)Dalian University of Technology圖像拼接技術(shù)研究的背景及意義在實(shí)際應(yīng)用中,經(jīng)常會用到超過人眼視野范圍甚至是全方位的高分辨率圖像,普通數(shù)碼相機(jī)的視野范圍往往難以滿足要求。為了得到大視野范圍的圖像,人們使用廣角鏡頭和掃描式相機(jī)進(jìn)行拍攝。但這些設(shè)備往往價(jià)格昂貴、使用復(fù)雜,而且在一幅低分辨率的圖像中得到超寬視角會損失景物中物體的分辨率,所以,使用廣角鏡頭和掃描式相機(jī)只能部分的解決這一問題。此外,廣角鏡頭的圖像邊緣會難以避免的產(chǎn)生扭

2、曲變形,不利于一些場合的應(yīng)用。為了在不降低圖像分辨率的條件下獲取大視野范圍的圖像,人們提出了圖像拼接技術(shù),將普通圖像或視頻圖像進(jìn)行無縫拼接,得到超寬視角甚至360度的全景圖,這樣就可以用普通數(shù)碼相機(jī)實(shí)現(xiàn)場面宏大的景物拍攝。利用計(jì)算機(jī)進(jìn)行匹配,將多幅具有重疊關(guān)系的圖像拼合成為一幅具有更大視野范圍的圖像,這就是圖像拼接的目的。本文的研究內(nèi)容與組織結(jié)構(gòu)本文研究的重點(diǎn)是使用數(shù)碼相機(jī)或手機(jī)手持拍攝的圖像的全自動拼接。算法的基本流程如下:(1) 讀取n副連續(xù)有重疊部分的圖像,在n副圖像中檢測SIFT特征,并用SIFT特征描述子對其進(jìn)行描述。(2) 匹配相鄰圖像的特征點(diǎn),并根據(jù)特征點(diǎn)向量消除誤匹配。(3)

3、使用RANSAC方法,確定變換參數(shù)。(4) 圖像融合簡介對手持相機(jī)拍攝得到的照片,即相機(jī)運(yùn)動不受限制,兩幅圖像的關(guān)系可近似歸結(jié)為初等坐標(biāo)變換,即平移、旋轉(zhuǎn)和縮放的組合。設(shè),為兩幅圖像的對應(yīng)點(diǎn),則二者關(guān)系由下式確定 (1)其中是兩點(diǎn)的齊次坐標(biāo),M是兩圖像間的變換矩陣,含有八個(gè)參數(shù)。一旦M確定,則兩幅圖像的變換關(guān)系即可確定。如何確定矩陣M? 首先確定一定數(shù)量的特征點(diǎn),利用特征點(diǎn)的匹配給出圖像變換的估計(jì)初值,最后通過遞歸算法得到最后的變換。特征提取與匹配采用SIFT算法進(jìn)行特征點(diǎn)的提取與匹配。主要包含4個(gè)步驟:1、 建立尺度空間,尋找候選點(diǎn)2、 精確確定關(guān)鍵點(diǎn),剔除不穩(wěn)定點(diǎn)3、 確定關(guān)鍵點(diǎn)的方向4、

4、 提取特征描述符本文中matlab實(shí)現(xiàn)代碼如下:im11 = imgccc-1; im22 = imgccc;im1, des1, loc1 = sift2(im11);im2, des2, loc2 = sift2(im22); distRatio = 0.6; des2t = des2' match(size(des1,1) = 0;for i = 1 : size(des1,1) dotprods = des1(i,:) * des2t; vals,indx = sort(acos(dotprods); if (vals(1) < distRatio * vals(2) m

5、atch(i) = indx(1); endendim3 = appendimages(im1,im2); figure('Position', 100 100 size(im3,2) size(im3,1);colormap('gray');imagesc(im3);hold on;cols1 = size(im1,2);hold off;num = sum(match > 0);fprintf('Found %d matches.n', num);其中sift2封裝了sift特征點(diǎn)提取,返回值des是特征描述子;appendimages

6、函數(shù)實(shí)現(xiàn)了兩幅圖像邊挨邊拼接。詳細(xì)代碼見sift2.m和appendimages.m消除誤匹配假設(shè)同一個(gè)相機(jī)拍出的圖像尺度差別比較小。因此對于兩對匹配點(diǎn)(P1,Q1)(P2,Q2),向量P1P2, Q1Q2的夾角比較小,同時(shí)|P1P2| 和 |Q1Q2| 的值也比較接近。我們記錄一個(gè)匹配點(diǎn)與其他匹配點(diǎn)形成的向量,并記錄待匹配圖像中的對應(yīng)匹配點(diǎn)與其他相應(yīng)匹配點(diǎn)形成的向量,通過比較,記錄該匹配點(diǎn)通過匹配閾值的個(gè)數(shù),如果超過匹配點(diǎn)總數(shù)的4/5,則該匹配點(diǎn)是正確匹配。否則為誤匹配。 圖1,消除誤匹配matlab實(shí)現(xiàn)代碼如下:KeyPoints(num,4) = 0;j = 1;for i = 1: s

7、ize(des1,1) if (match(i) > 0) KeyPoints(j,1) = loc1(i,2); KeyPoints(j,2) = loc1(i,1); KeyPoints(j,3) = loc2(match(i),2); KeyPoints(j,4) = loc2(match(i),1); j = j+1; endendyuzhi_y = min(size(im11,1),size(im22,1);yuzhi_x = min(size(im11,2),size(im22,2);yuzhi = sqrt(yuzhi_y2+ yuzhi_x2); PointDis(num

8、) = 0;for i = 1:size(KeyPoints,1) for j = 1:size(KeyPoints,1) a = abs(KeyPoints(i,1) - KeyPoints(j,1),abs(KeyPoints(i,2) - KeyPoints(j,2); b = abs(KeyPoints(i,3) - KeyPoints(j,3),abs(KeyPoints(i,4) - KeyPoints(j,4); xiangsi = dot(a,b)/(norm(a)*norm(b); if (xiangsi<cos(pi/4)|norm(a) - norm(b) >

9、yuzhi/10) PointDis(i) = PointDis(i) +1; end endendj = 0;for i=1:num if (PointDis(i) >num/6 ) KeyPoints(i,1) = inf; j=j+1; endendKeyPoints2(num -j,4) = 0;z = 1;for i=1:num if (KeyPoints(i,1)=inf) KeyPoints2(z,:) = KeyPoints(i,:); z= z+1; endendKeyPoints = KeyPoints2;num = size(KeyPoints,1); for i

10、= 1: num line(KeyPoints(i,1) KeyPoints(i,3)+cols1, . KeyPoints(i,2) KeyPoints(i,4), 'Color', 'c');end確定變換參數(shù)我們用平面透視變換來表示圖像間的幾何關(guān)系:為了恢復(fù)M中的8個(gè)參數(shù),需要4對匹配點(diǎn)來求解。我們使用RANSAC(Random Sample Consensus)方法來尋找兩幅圖像間最佳的4對匹配點(diǎn),得到相應(yīng)的H陣,并剔除誤配點(diǎn)。前面自動提取和匹配得到的初始匹配特征點(diǎn)對集合中難免存在誤配點(diǎn),此外特征點(diǎn)在提取時(shí)也存在一定的精度誤差,因此需要一種容錯(cuò)能力很強(qiáng)的

11、算法來過濾初始匹配特征點(diǎn)對集合,而RANSAC正是這樣的一種算法,其具體內(nèi)容可描述如下:給定N個(gè)數(shù)據(jù)點(diǎn)組成的數(shù)據(jù)集合P,假設(shè)這N個(gè)數(shù)據(jù)點(diǎn)中的絕大部分是由一個(gè)參數(shù)未知的特定模型產(chǎn)生,而該模型至少需要n個(gè)數(shù)據(jù)點(diǎn)來求解,且N>n,則可以通過下面的迭代過程求解該模型的參數(shù)。將以下步驟運(yùn)行k次: (1)從P中隨機(jī)選取n個(gè)數(shù)據(jù)點(diǎn)的子集S。(2)由選取的這n個(gè)數(shù)據(jù)點(diǎn)計(jì)算出一個(gè)模型M。(3)對數(shù)據(jù)集合中其余的N一n個(gè)數(shù)據(jù)點(diǎn),計(jì)算它們與模型肘之間的距離,記錄P中在M的某個(gè)誤差允許范圍內(nèi)的數(shù)據(jù)點(diǎn)的個(gè)數(shù)c。迭代(1)(3)k次后,對應(yīng)最大c值的模型即為所求,數(shù)據(jù)集合P中的這c個(gè)數(shù)據(jù)即為內(nèi)點(diǎn),其余的NC個(gè)數(shù)據(jù)即

12、為外點(diǎn)。matlab實(shí)現(xiàn)代碼如下:DDmin =5000;for ll = 1:6 zNum = 1; while (1) if (zNum>num*6) break; end zNum = zNum+1; DD(15) = 0; H(3,3,15) = 0; for k = 1:15 while (1) suiji = round(rand(1,4)*(num-1) +1); if (sum(find(suiji = inf) = 0) break; end end j =1; for i = 1:4 x2 = KeyPoints(suiji(i),1); y2 = KeyPoints

13、(suiji(i),2); x = KeyPoints(suiji(i),3); y = KeyPoints(suiji(i),4); %line(x2 x+cols1,y2 y,'Color', 'c'); A(j,:) = x , y,1,0,0,0,-x*x2, -x2*y; D(j) = x2; j= j +1; A(j,:) = 0,0,0,x,y,1,-x*y2,-y2*y; D(j) = y2; j = j+1; %B(i-1,:)=x,y,x2,y2; end y = inv(A)*D' H (:,:,k)= y(1),y(2),y(3)

14、;y(4),y(5),y(6);y(7),y(8),1; if (sum(H = inf)>0) continue; else for in1 = 1:num TT = H(:,:,k)*KeyPoints(in1,3); KeyPoints(in1,4); 1; DD(k) = DD(k)+sqrt(TT(1) - KeyPoints(in1,1)2+(TT(2) - KeyPoints(in1,2)2); end end end val3,indx3 = sort(DD); i = 1; while (1) if (H(1,1,indx3(i)=inf|DD(indx3(i)=0)

15、i = i + 1; else break; end end if (DD(indx3(i) <=DDmin) DDmin =DD(indx3(i); Hfinal = H(:,:,indx3(i); break; end endend HfinalMax(:,:,ccc-1)= Hfinal;for tc = 1:ccc-1 if (ccc-tc-1=0) break; else Hfinal = HfinalMax(:,:,ccc-tc-1)*Hfinal; endend圖像融合1.圖像旋轉(zhuǎn)之后可能新的像素點(diǎn)并不在實(shí)際的像素位置,因此需要插值處理。建議使用雙線性插值。2.對于重合的部

16、分的像素值可以有如下計(jì)算辦法: 圖2 圖像融合方法我們采用method1matlab實(shí)現(xiàn)代碼如下:edgept1 = round(Hfinal*size(im22,2);size(im22,1);1);edgept2 = round(Hfinal*1;size(im22,1);1);edgept3 = round(Hfinal*1;1;1);edgept4 = round(Hfinal*size(im22,2);1;1);height = max(size(im11,1),edgept1(2),edgept2(2),edgept3(2),edgept4(2);width = max(size(

17、im11,2),edgept1(1),edgept2(1),edgept3(1),edgept4(1); t2(height,width,3)=0;t2 = uint8(t2); if (ccc=2) im11 = curImg2;end for i = 1:size(im11,1) for j = 1:size(im11,2) t2(i,j,:) = im11(i,j,:); end endp1 = round(size(im11,2) /2),round(size(im11,1) /2);p2 = round(Hfinal*size(im22,2);size(im22,1);1); for

18、 i = 1:size(im22,1) for j = 1:size(im22,2) x = Hfinal*j;i;1; tx = max(1,round(x(2); ty = max(1,round(x(1); if (t2(tx,ty,1)=0&&t2(tx,ty,2)=0&&t2(tx,ty,3)=0) d1 = sqrt(ty-p1(1)2+(tx-p1(2)2); d2 = sqrt(ty-p2(1)2+(tx-p2(2)2); para1 = d2/(d1+d2); para2 = d1/(d1+d2); t2(tx,ty,:) = round(im22(i,j,:).*para2 + t2(tx,ty,:).*para1); else t2(tx,ty,:) = im22(i,j,:); end ende

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論