傾斜校正,透視變換_第1頁
傾斜校正,透視變換_第2頁
傾斜校正,透視變換_第3頁
傾斜校正,透視變換_第4頁
傾斜校正,透視變換_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、matlab練習(xí)程序(傾斜校正,透視變換)過去也寫過透視變換,當(dāng)時算法真是弱爆了,我竟然會通過兩次變換。不過那引用的三篇文 章都是非常好的文章,直到今天我才看明白。所謂的傾斜校正,一定要有標(biāo)定點,將一個傾斜的 矩形變?yōu)椴粌A斜的。因此可以從原四邊形四個點和新矩形四個點得到一個變換矩陣,根據(jù)這個矩 陣再作用到全局圖像就可以了。詳細(xì)原理在這里,MIT的,我也不會比他介紹的更好了,還是 看原版的好。我這里的代碼完全就是按照MIT那篇文章的原理實現(xiàn)的,不過因為Matlab細(xì)節(jié)的原因, 我把公式中x和y位置互換了:翩clear all;close all;clc;img= imread(rect.bmp)

2、;img= rgb2gray(img);imshow(mat2gray(img);M N = size(img);dot二ginput();%取四個點,依次是左上,右上,左下,右下這里我取的是書的四個角w=round(sqrt(dot(1,1)-dot(2, 1)”2+(dot(1, 2)-dot(2, 2)”2);%從原四邊形獲得新矩形寬h=round(sqrt(dot(1,1)-dot(3, 1)”2+(dot(1, 2)-dot(3, 2)”2);%從原四邊形獲得新矩形高y=dot(1, 1) dot(2, 1) dot(3, 1) dot(4, 1);% 四個原頂點x=dot(1, 2

3、) dot(2, 2) dot(3, 2) dot(4, 2);%這里是新的頂點,我取的矩形,也可以做成其他的形狀%大可以原圖像是矩形,新圖像是從dot中取得的點組成的任意四邊形.:) Y=dot(1, 1) dot(1, 1) dot(1, 1)+h dot(1,1)+h;X=dot(1, 2) dot(1, 2)+w dot(1, 2) dot(1,2)+w;B=X(1) Y(1) X(2) Y(2) X(3) Y(3) X(4) Y(4);% 變換后的四個頂點,方程右邊的值%聯(lián)立解方程組,方程的系數(shù)A=x(1) y(1) 1 0 0 0 -X(1)*x(1) -X(1)*y;0 0 0

4、x(1) y(1) 1 -Y *x -Y(1)*y(1);x(2) y(2) 1 0 0 0 -X(2)*x(2) -X(2)*y(2);0 0 0 x(2) y(2) 1 -Y(2)*x(2) -Y(2)*y(2);x(3) y(3) 1 0 0 0 -X(3)*x(3) -X(3)*y(3);0 0 0 x(3) y(3) 1 -Y(3)*x(3) -Y(3)*y(3);x(4) y(4) 1 0 0 0 -X(4)*x(4) -X(4)*y(4);0 0 0 x(4) y(4) 1 -Y(4)*x(4) -Y(4)*y(4);fa=inv(A)*B;%用四點求得的方程的解,也是全局變換系

5、數(shù)a=fa(1);b=fa(2);c=fa(3);d=fa(4);e=fa(5);f=fa(6);g=fa(7);h=fa(8);rot=d e f;a b c;g h 1;%公式中第一個數(shù)是x,Matlab第一個表示y,所以我矩陣1,2行互換了pix1=rot*1 1 1/(g*1+h*1+1); % 變換后圖像左上點pix2=rot*1 N 1/(g*1+h*N+1); % 變換后圖像右上點pix3=rot*M 1 1/(g*M+h*1+1); % 變換后圖像左下點pix4=rot*M N 1/(g*M+h*N+1); % 變換后圖像右下點height=round(max(pix1(1)

6、pix2(1) pix3(1) pix4(1)-min(pix1(1) pix2(1)pix3(1) pix4(1);%變換后圖像的高度width=round(max(pix1(2) pix2(2) pix3(2) pix4(2)-min(pix1(2) pix2(2)pix3(2) pix4(2);%變換后圖像的寬度imgn=zeros(height,width);delta_y=round(abs(min(pix1(1) pix2(1) pix3(1)pix4(1);%取得y方向的負(fù)軸超出的偏移量delta_x=round(abs(min(pix1(2) pix2(2) pix3(2)pi

7、x4(2);%取得x方向的負(fù)軸超出的偏移量inv_rot=inv(rot);for i = 1-delta_y:height-delta_y% 從變換圖像中反向?qū)ふ以瓐D像的點,以免出現(xiàn)空洞,和旋轉(zhuǎn)放大原理一樣for j = 1-delta_x:width-delta_xpix=inv_rot*i j 1;%求原圖像中坐標(biāo),因為YWXW W=fa*yx 1,所以這里求的是YW XW W,W=gy+hx+1;pix=inv(g*pix(1)-1 h*pix(1);g*pix(2) h*pix(2)-1)*-pix(1) -pix(2); %相當(dāng)于解pix(1)*(gy+hx+1) pix(2)*(gy+hx+1) = y x,這樣一個 方程,求y和x,最后pix=y x;if pix(1)=0.5 & pix(2)=0.5 & pix(1)=M &

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論