MATLAB實現(xiàn)圖像的平移縮放和旋轉(zhuǎn)_第1頁
MATLAB實現(xiàn)圖像的平移縮放和旋轉(zhuǎn)_第2頁
MATLAB實現(xiàn)圖像的平移縮放和旋轉(zhuǎn)_第3頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)字圖像處理課 程 設(shè) 計題目圖像的幾何變換重建系(部)信息工程系班姓學級名號指導教師2013 年 12 月 16 日 至 12 月 27 日 共 2 周2013 年 12 月 27數(shù)字圖像處理 課程設(shè)計任務(wù)書一、設(shè)計題目、內(nèi)容及要求設(shè)計題目:圖像的幾何變換重建1、設(shè)計內(nèi)容:能夠讀取和存儲圖像。實現(xiàn)圖像的平移、縮放、旋轉(zhuǎn)幾何變換。分別采用最近鄰插值和雙線性插值技術(shù)進行圖像重建。2、設(shè)計要求: 簡易處理系統(tǒng)。能顯示輸入圖像、輸出圖像。不允許直接調(diào)用 工具箱中的幾何變換函數(shù)。程序代碼要有注釋說明,調(diào)用MATLAB使用范圍,在設(shè)計說明書中要寫清楚函數(shù)的功能和參數(shù)意義。完成設(shè)計說明書一份。二、設(shè)計原始

2、資料MATLAB 軟件、原始圖像。三、要求的設(shè)計成果(課程設(shè)計說明書、設(shè)計實物、圖紙等)設(shè)計成果為課程設(shè)計說明書和程序源代碼。每人提交電子版和紙質(zhì)打印版的設(shè)計說明書各一份,電子版以“班級_學號”為名建立文件夾,其中存放電子版課程設(shè)計報告和程序源代碼。以班為單位刻錄光盤一張。四、進程安排第一周:周 1 布置設(shè)計任務(wù),學生查閱相關(guān)資料。周 2 熟悉編程語言、確定設(shè)計方案。周 3-5 程序設(shè)計、編寫代碼、上機調(diào)試。1-2234五、主要參考資料余成波.數(shù)字圖像處理及MATLAB. 北京 . MATLAB7.x. Kenneth R.Castleman指導教師(簽名:教研室主任(簽名:課程設(shè)計成績評定表

3、出勤出勤天數(shù)情況缺勤天數(shù)出勤情況及設(shè)計過程表現(xiàn))成課設(shè)答辯(30)績說明書(20)評設(shè)計成果(30)定總成績(100)提問(答辯)綜合評定指導教師簽名:年月日目 錄引言4課程設(shè)計的目的錯誤!未定義書簽。課程設(shè)計的任務(wù)錯誤!未定義書簽。課程設(shè)計的要求錯誤!未定義書簽。開發(fā)工具錯誤!未定義書簽。 HYPERLINK l _TOC_250015 設(shè)計內(nèi)容4 HYPERLINK l _TOC_250014 設(shè)計內(nèi)容4 HYPERLINK l _TOC_250013 系統(tǒng)框圖4設(shè)計方案5 HYPERLINK l _TOC_250012 功能模塊的劃分5 HYPERLINK l _TOC_250011 算

4、法描述5 HYPERLINK l _TOC_250010 實現(xiàn)主要功能的原理和方法8 HYPERLINK l _TOC_250009 最近鄰域插值法8 HYPERLINK l _TOC_250008 雙線性插值法8 HYPERLINK l _TOC_250007 功能模塊的具體實現(xiàn)10 HYPERLINK l _TOC_250006 模塊功能10 HYPERLINK l _TOC_250005 流程圖11 HYPERLINK l _TOC_250004 程序清單及各模塊的實現(xiàn)效果圖11 HYPERLINK l _TOC_250003 系統(tǒng)仿真與調(diào)試21 HYPERLINK l _TOC_250

5、002 總結(jié)與體會22 HYPERLINK l _TOC_250001 參考文獻22 HYPERLINK l _TOC_250000 附錄231 引言1 引言 PAGE PAGE 42 設(shè)計內(nèi)容設(shè)計內(nèi)容我選取的是圖像的幾何變換,設(shè)計內(nèi)容如下,能夠讀取和存儲圖像。實現(xiàn)圖像的平移、縮放、旋轉(zhuǎn)幾何變換。(4)編寫代碼實現(xiàn)上述功能。系統(tǒng)框圖圖像幾何處理系統(tǒng)平移變換縮放變換旋轉(zhuǎn)變換雙最雙最雙最線鄰線鄰性近性近插插插插值值值值縮縮旋旋放放轉(zhuǎn)轉(zhuǎn)存儲存儲存儲存儲圖 2-1 系統(tǒng)框圖處理后再存儲。3 3 設(shè)計方案 PAGE PAGE 5功能模塊的劃分本次設(shè)計整體分為四大模塊:原圖、平移、縮放和旋轉(zhuǎn)。其中縮放和旋

6、轉(zhuǎn)又分別有雙線性插值和最近鄰插值兩模塊。算法描述x fx y fy 倍,從而獲得一幅新的圖像。如果fx=fy,即在x y fxfy例縮放會改變原始圖象的像素間的相對位置,產(chǎn)生幾何畸變。P0(x0,y0)P(x,y)P0(x0,y0)、P(x,y)之間的關(guān)系用矩陣形式可以表示為yxfx00 y其逆運算為 1fy0y0 (3-1)01 1 100 x fx x 01 y yy 00 fy(3-2)1 001 1即x x 0(3-3)yy 0fy 時,圖像被縮到一半大小,此時縮小后圖像中的(0,0)像素對應(yīng)于原圖像中的(0,0)像素;(0,1)像素對應(yīng)于原圖像中的(0,2)像素對應(yīng)于原圖像 中的(2

7、,0)像素,以此類推。圖像縮小之后,因為承載的數(shù)據(jù)量小了,所以畫布可 相應(yīng)縮小。此時,只需在原圖像基礎(chǔ)上,每行隔一個像素取一點,每隔一行進行 PAGE PAGE 8則需要計算選擇的行和列。如果 MN 大小的原圖像 F(x,y)縮小為 kMkN 大小的新圖像 I(x,y)時,則I(x,y)=F(int(cx),int(cy)(3-4)其中,c=1/k。由此公式可以構(gòu)造出新圖像。fxfy x y F(x,y)k1Mk2N I(x,y)時,則I(x,y)=F(int(c1x),int(c2y)(3-5)其中 c1=1/k1,c2=1/k2,由此公式可以構(gòu)造出新圖像。fx=fy=2(0,0)像素對應(yīng)于

8、原圖中的(0,0)像素對應(yīng)于原圖中的(0,0.5)像素,該像素不存在,可以近似為(0,0)也可以近似為(0,1);(0,2) 像素對應(yīng)于原圖像中的(0,1)像素;(1,0)像素對應(yīng)于原圖中的(0.5,0),它的像素值(0,0)或(1,0)像素;(2,0)(1,0)像素,依此類推。其實這是將原圖像每行中的像素重復(fù)取值一遍,然后每行重復(fù)一次。k kk fx fy fxfy 0時,圖像在xy 方向不按比例放大,此時x y 大的方法是將原圖像的一個像素添到新圖像的一個k k12的子塊中去。為了提高幾何變換后的圖像質(zhì)量,常采用線性插值法。該方法的原理是,當求出的分數(shù)地的像素灰度值進行線性插值。P (x

9、y000) 逆時針旋轉(zhuǎn) 角后的對應(yīng)點為PxyP (x y000)Pxy) 的坐標分別是:x rcosy0 rcos(3-6)0 x r ) r cos cos r sin sin x cos y sinyr)rsincosrcossin x0siny0cos(3-7)00寫成矩陣表達式為xcossin0 x 0其逆運算為ysin1cos00y0 1 1 (3-8)x cossin0 x 0ysincos0 y0 (3-9)1001 1 利用上述方法進行圖像旋轉(zhuǎn)時需要注意如下兩點:圖像旋轉(zhuǎn)之前,為了避免信息的丟失,一定要有坐標平移。以上所討論的旋轉(zhuǎn)是繞坐標軸原點(0,0)(a,b)逆時針旋轉(zhuǎn) 度

10、,首先將原點平移到(a,b),即10aA01b01 然后旋轉(zhuǎn)然后再平移回來cosB sin0sin cos 0000(3-11)10a C 01001綜上所述,變換矩陣為T C B A。(3-12)實現(xiàn)主要功能的原理和方法最近鄰域插值法I(i/b,j/a,k)I(i/b,j/a,k)取最近整數(shù)點用四舍五入。在許多情況下,最近鄰插值的結(jié)果可以令人接受。最鄰近點插值取插值點的4個鄰點中距離最近的鄰點灰度值作為該點的灰度值。設(shè)插值點(i,j)到周邊4個鄰點fk(i,j)(k 1,2,3,4)的距離為dk(k 1,2,3,4),則:g(i,j)fk(i,j),dlmind1,d2,d3,d4,l1,2

11、,3,4。最近鄰點插值的一個隱含的假設(shè)條件是任一網(wǎng)格點p(x,y)的屬性值都使用距3。當SURFER 的網(wǎng)格文件,可以應(yīng)用,在搜索橢圓(SearchEllipse)設(shè)置一個值,對無數(shù)據(jù)區(qū)域賦予該網(wǎng)格文件里的XYZ XYZ 數(shù)據(jù)的數(shù)據(jù)點之雙線性插值法f(i+u,j+v)(I,j)(i+l,j)(i,j+1)(i+1,j+1) 所對應(yīng)的周圍四個像素的值決定,即:f(i+u,j+v)=(1-u)(1-v)f(,j)+(1-u)v f(i,j+1)+u(1-v)f(i+l,j)+uvf(i+,j+1), 其中f(i,j)表示源圖像(i,j)處的的像素值,以此類推,這就是雙線性插值法。如圖3-1(0,0

12、)(0,1)(1,0)(1,1)的灰度值f(0,0)和f(1,0)在X方向上線性插值求出(x,0)的灰度f(x,0),由另外兩個相鄰像素f(0,1)和f(1,1)在X方向上線性插值可求出(x,1)的灰度f(x,1),最后由f(x,0), f(x,1)在Y方向上進行線性插值就可以得到(x,y)的灰度f(x,y)。在同一行內(nèi)根據(jù)待插值像素點與其前后的原圖像像素點的位置距離進行加 PAGE PAGE 10原圖像行越近的待插值行,原圖像行的加權(quán)系數(shù)就越大。假設(shè)原始圖像大小為size=mnm與n分別是原始圖像的行數(shù)與列0),則目標圖像的大小size=tntm。對于目標圖像的某個像素點P(x,y)通過P*

13、1/tP( x1,y1),其中x1=x/t, y1=y/t,由于x1,y1都不是整數(shù)所以并不存在這樣的點,這樣可以找出與它相鄰的四個點的灰度f1、f2、f3、f4,使用雙線性插值算法就可以得到這個像素點P (x1,y1)的灰度,也就是像素點P(x,y)的灰度。一個完整的雙線性插值算法可描述如下:(2)由新圖像的某個像素(x,y)映射到原始圖像(x,y)處。對x,y取整得到(xx,yy)并得到(xx,yy)(xx+1,yy)(xx,yy+1)和(xx+1,yy+1)的值。利用雙線性插值得到像素點(x,y)(5)重復(fù)步驟(2)直到新圖像的所有像素寫完。圖3-1雙線性插值原理4 功能模塊的具體實現(xiàn)模

14、塊功能片處理按鈕菜單的功能。主界面設(shè)計如下:圖 4-1 主界面 PAGE PAGE 11流程圖開始開始對圖像進行平移、縮放或旋轉(zhuǎn)處理完成,得到新圖并儲存結(jié)束圖 4-2 流程圖程序清單及各模塊的實現(xiàn)效果圖讀入原圖代碼如下, img=imread(lena.bmp); subplot(2,3,1);imshow(img); title(原始圖像);imread函數(shù)讀入圖像并通過imshow函數(shù)顯示出來。運行結(jié)果如下, PAGE PAGE 12圖 4-3 原始圖像圖像的平移代碼如下,delta_x=str2double(inputdlg(請輸入向右平移量 , INPUT scale factor,

15、1,-60);%負數(shù)為向左delta_y=str2double(inputdlg(請輸入向下平移量 , INPUT scale factor, 1,-89);%負數(shù)為向上img=imread(lena.bmp); %這里 v 為原圖像的高度,u 為原圖像的寬度v u=size(img);%y為變換后圖像高度,x 為變換后圖像寬度imgn=zeros(v+abs(delta_y),u+abs(delta_x); rot=1 0 0;0 1 0;delta_y delta_x 1; inv_rot=inv(rot);pix1=1 1 1*rot;%pix1(1),pix1(2)y,xpix4=v

16、u 1*rot;%pix4(1),pix4(2)y,x%向右下方移動if delta_x=0 & delta_y=0 for y=pix1(1):pix4(1)for x=pix1(2):pix4(2) pix=y x 1*inv_rot;if pix(1)=0.5 & pix(2)=0.5 & pix(1)=v & pix(2)=u imgn(y,x)=img(round(pix(1),round(pix(2);endendendend%向左下方移動if delta_x=0 PAGE PAGE 13for y=pix1(1):pix4(1)for x=pix1(2):pix4(2) pix=

17、y x 1*inv_rot;if pix(1)=0.5 & pix(2)=0.5 & pix(1)=v & pix(2)=u imgn(y,x-delta_x)=img(round(pix(1),round(pix(2);endendendend%向左上方移動if delta_x0 & delta_y=0.5 & pix(2)=0.5 & pix(1)=v & pix(2)=0 & delta_y=0.5 & pix(2)=0.5 & pix(1)=v & pix(2)=1 & pix(2)=1 & pix(1) = h & pix(2) =0.5 & pix(W)=0.5 & pix(H)=

18、v & pix(W)=0 & delta_y=0 for y=pix1(1):pix4(1)for x=pix1(2):pix4(2) pix=y x 1*inv_rot;if pix(1)=0.5 & pix(2)=0.5 & pix(1)=v & pix(2)=u imgn(y,x)=img(round(pix(1),round(pix(2);endendendend%向左下方移動if delta_x=0 for y=pix1(1):pix4(1)for x=pix1(2):pix4(2) pix=y x 1*inv_rot;if pix(1)=0.5 & pix(2)=0.5 & pix

19、(1)=v & pix(2)=u imgn(y,x-delta_x)=img(round(pix(1),round(pix(2);endendendend%向左上方移動if delta_x0 & delta_y=0.5 & pix(2)=0.5 & pix(1)=v & pix(2)=0 & delta_y=0.5 & pix(2)=0.5 & pix(1)=v & pix(2)=1 & pix(2)=1 & pix(1) = h & pix(2) =0.5 & pix(W)=0.5 & pix(H)=v & pix(W)=uimgn(y+delta_y,x+delta_x)=img(roun

20、d(pix(H),round(pix(W);endendendsubplot(2,3,3);imshow(uint8(imgn);title(最近鄰插值旋轉(zhuǎn));imwrite(uint8(imgn),最近鄰插值旋轉(zhuǎn).bmp,bmp) ; function pushbutton5_Callback(hObject, eventdata, handles)% 用 雙 線 性 插 值 法 實 現(xiàn) 圖 像 縮 放 I=imread(lena.bmp); %讀入原圖像rows,cols=size(I);K1=str2double(inputdlg(請輸入列縮放倍數(shù),INPUTscalefactor,1,

21、0.5);%行默認變?yōu)樵瓉淼?0.5 倍K2=str2double(inputdlg(請輸入行縮放倍數(shù),INPUTscalefactor,1,1.5);%1.5 width = K1 * rows;height = K2 * cols;Out = uint8(zeros(width,height);%widthScale = rows/width;heightScale = cols/height;for x = 6:width - 6% 6 是為了防止矩陣超出邊界溢出for y = 6:height - 6oldX = x * widthScale;% oldX,oldY 為原坐標,x,y為

22、新坐標oldY = y * heightScale;if (oldX/double(uint16(oldX) = 1.0) & (oldY/double(uint16(oldY) = 1.0)Out(x,y) = I(int16(oldX),int16(oldY);%elsea = double(uint16(oldX); b = double(uint16(oldY);x11 = double(I(a,b);% x11賦值為 I(a,b)x12 = double(I(a,b+1);% x12 賦值為 I(a,b+1)x21 = double(I(a+1,b);% x21 賦值為 I(a+1,b)x22 = double(I(a+1,b+1);% x22 賦值為 I(a+1,b+1)Out(x,y) = uint8( (b+1-oldY) * (oldX-a)*x21 + (a+1-oldX)*x11)+ (oldY-b) * (oldX-a)*x22 +(a+1-oldX) * x12) );% 用雙線性插值計算公式計算endendendsubplot(2,3,5);imshow(Out);title(雙線性插值縮放);imwrite(uint8(imgn),雙線性

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論