Matlab圖形界面圖像的旋轉(zhuǎn)平移和縮放_第1頁
Matlab圖形界面圖像的旋轉(zhuǎn)平移和縮放_第2頁
Matlab圖形界面圖像的旋轉(zhuǎn)平移和縮放_第3頁
Matlab圖形界面圖像的旋轉(zhuǎn)平移和縮放_第4頁
Matlab圖形界面圖像的旋轉(zhuǎn)平移和縮放_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Matlab圖形界面圖像的旋轉(zhuǎn)、平移和縮放姓名: 班級: 學號: 目錄問題描述2摘要3正文41、界面設計42、打開圖片功能43、實現(xiàn)圖片的任意角度的旋轉(zhuǎn)54、圖像的平移85、圖像的縮放(放大與縮小)12實驗心得16附錄:17Matlab圖形界面操作 -圖像的旋轉(zhuǎn)、平移和縮放問題描述 期末運用學習的matlab知識通過圖形用戶界面對圖片進行操作,實現(xiàn)如下功能。l 能夠查找和讀取計算機中存儲圖像。 l 實現(xiàn)圖像的旋轉(zhuǎn)、平移、縮放等幾何變換。 l 通過matlab界面功能實現(xiàn)界面的完美布局。l 編寫代碼和回調(diào)函數(shù)實現(xiàn)上述功能。摘要本次任務旨在完成以下幾個任務:l 整體分為四大模塊:原圖、旋轉(zhuǎn)、平移和

2、縮放。l 利用數(shù)字圖像處理技術(shù),以MATLAB為平臺,建立一個實現(xiàn)設計主題的簡易處理系統(tǒng)。 l 能顯示輸入圖像、輸出圖像。 l 程序代碼要有注釋說明,調(diào)用MATLAB函數(shù)要清楚并理解函數(shù)的功能、使用范圍,在設計說明書中要寫清楚函數(shù)的功能和參數(shù)意義。 l 完成自己課程設計說明書。正文1、界面設計(1)在MATLAB命令窗口中輸入“guide”,確定后,彈出GUI窗口。(2)本次設計中,包含兩個坐標軸(axes1、axes2),分別顯示原圖和處理后的圖像。包含六個按鈕(Push Button),分別實現(xiàn)“打開圖片、保存處理后的圖片、旋轉(zhuǎn)、平移、放大、縮小以及退出功能”。(3)旋轉(zhuǎn)功能同時可以實現(xiàn)選

3、擇0360度任意的度數(shù),當選擇不同的度數(shù)后,axes2位置就會顯示不同選擇角度的圖片。如果需要保存該圖片可以單擊保存按鈕進行保存。(4)平移功能的實現(xiàn),當單擊平移按鈕,可以有一個默認的平移位置。在設計中預設了幾個固定位置,可以選擇,分別是X單位Y單位方向都可以選擇。達到平移的目的。(5)放大和縮小功能類似,在界面上表現(xiàn)為選擇不同的數(shù)據(jù),反映出來不同大小的圖片。(6)操作完成后,點擊退出功能,將詢問是否退出,如果退出則點擊“是”,不退出點擊“我還要看看”。2、打開圖片功能進入程序界面后,要實現(xiàn)幾何操作,需要先打開一張圖片。單擊打開圖片按鈕,可以選擇圖片路徑,從存儲圖片的地址任意旋轉(zhuǎn)一張圖片,圖片

4、就會顯示在axes1的位置。效果如2-1所示: 圖 2-1如果想再打開一張圖片進行操作,可以再次單擊“打開圖片”按鈕進行操作,效果如圖2-2所示:圖2-2 3、實現(xiàn)圖片的任意角度的旋轉(zhuǎn)該功能回調(diào)函數(shù)使用的是imrotate函數(shù),其調(diào)用格式如下所示:(1)函數(shù)說明及參數(shù)選擇 I0=imrotate(loadImage,value);I0是處理后的圖片。loadImage是定義的全局變量,當打開圖片后,將新圖片的值賦予該變量。Value值是傳遞過來的度數(shù)值。(2)問題分析如果value值是一個定值,在實現(xiàn)旋轉(zhuǎn)功能時,僅能在一個位置,通過優(yōu)化,實現(xiàn)任意角度旋轉(zhuǎn)。(3)運用的函數(shù)和方法旋轉(zhuǎn)功能涉及im

5、rotate以及imshow函數(shù),詳細方法參考源代碼。(4)實驗結(jié)果點擊旋轉(zhuǎn)按鈕,默認值為180度,效果如圖3-1所示:圖3-1(旋轉(zhuǎn)180度)拖動滑動條,選擇其他角度,實現(xiàn)旋轉(zhuǎn)功能。旋轉(zhuǎn)72度效果如圖3-2所示:圖3-2(旋轉(zhuǎn)72度)旋轉(zhuǎn)0度即不進行旋轉(zhuǎn),效果如圖3-3所示:圖3-3(旋轉(zhuǎn)0度)通過驗證,隨意拖動滑動條,均可以正常顯示,如圖4-4所示:圖3-4更換其他圖片實現(xiàn)旋轉(zhuǎn)功能,效果圖3-5所示:圖3-5(5)結(jié)果分析:一般圖像的旋轉(zhuǎn)是以圖像的中心為原點,旋轉(zhuǎn)一定的角度,也就是將圖像上的所有像素都旋轉(zhuǎn)一個相同的角度。旋轉(zhuǎn)后圖像的大小一般會改變,即可以把轉(zhuǎn)出顯示區(qū)域的圖像截去,或者擴大圖

6、像范圍來顯示所有的圖像。圖像的旋轉(zhuǎn)變換也可以用矩陣變換來表示。4、圖像的平移 (1)問題分析: 圖像平移是將一幅圖像中所有的點都按照指定的平移量在水平、垂直方向移動,平移后的圖像與原圖像相同。平移后的圖像上的每一點都可以在原圖像中找到。(2)實驗方法:設(x0,y0)為原圖像上的一點,圖像水平平移量X,垂直平移量為Y,則平移后點(x0,y0)的坐標變?yōu)椋▁1,y1)。(x0,y0)與(x1,y1)之間的關(guān)系為: x1=x0+x; y1=y0+y。該功能可以通過函數(shù)translate函數(shù)實現(xiàn)。關(guān)鍵代碼se=translate(strel(1),100 -100); strel(1)表示圖像不變,

7、進行Y X方向的平移,se是設置的圖像平移的距離。平移變量的旋轉(zhuǎn)通過switch來判斷并進行傳遞。(3)實驗結(jié)果:平移量為(-100,-100)時,效果如圖4-1所示:圖4-1平移量為(-50,-100)時,效果如圖4-2所示:圖4-2平移量為(0,-100)時,效果如圖4-3所示:圖4-3平移量為(-50,-100)時,效果如圖4-4所示:圖4-4平移量為(100,0)時,效果如圖4-5所示:圖4-5平移量為(100,100)時,效果如圖4-6所示:圖4-6更換其他圖片進行平移操作,效果如圖4-7:圖4-7(4)結(jié)果分析:在設置的平移變量選項中,負數(shù)在X方向上代表向左平移,在Y軸上代表向上平

8、移。選擇不同的平移變量,圖片將平移結(jié)果顯示在對應的地方。超出顯示區(qū)域的地方自動截取數(shù)據(jù)。5、圖像的縮放(放大與縮?。?1)問題分析:圖像的放大和縮小是用同一個函數(shù)實現(xiàn)的,根據(jù)圖像比例變換的原理及相應算法可得到。(2)實驗方法:圖像的放大和縮小的函數(shù)是imresize,核心代碼如下:I0=imresize(loadImage,value2);其中的value值代表放縮的倍數(shù)。(3)實驗結(jié)果:點擊放大按鈕,默認的放大倍數(shù)15倍,如圖5-1所示。圖5-1(放大15倍)拖動滑動條,得到新的大小的圖片,如圖5-2所示:圖5-2放大1倍的效果如圖5-3所示:圖5-3(放大1倍即原圖大小)縮小效果圖,圖5-

9、4所示:圖5-4(原圖0.5倍)隨意拉動拖動條,得到縮小效果圖,圖5-6所示:圖5-6 當縮小時的value值調(diào)為0時,出現(xiàn)錯誤,說明,在縮小時,value值設置為0是不合適的,效果如圖5-7所示。圖5-7更換圖片,改變縮小的變量數(shù)值,得到大小不一的圖片,如圖5-8所示:圖5-8(4)結(jié)果分析:在放大圖片時,當按比例將原圖像放大K倍,如果按照最近鄰域法則需要將一個像素值添加在新圖像的k×k的子塊中。顯然,如果放大倍數(shù)太大,按照這種方法處理會出現(xiàn)馬賽克效應。最簡單的比例縮小時當fx=fy=0.5時,即圖像被縮到一半大小,此時縮小后圖像中的(0,0)像素對應于原圖像中的(0,0)像素;(

10、0,1)像素對應于原圖像中的(0,2)像素;(1,0)像素對應于原圖像中的(2,0)像素,以此類推。圖像縮小之后,因為承載的數(shù)據(jù)量小了,所以畫布可相應縮小。此時,只需在原圖像基礎(chǔ)上,每行隔一個像素取一點,每隔一行進行操作,即取原圖的偶奇數(shù)行和偶奇數(shù)列構(gòu)成新的圖像。如果圖像按任意比例縮小則需要計算選擇的行和列。實驗心得本次課程設計使我更深的了解了MATLAB的程序設計及圖像處理的內(nèi)容,復習了有關(guān)于圖像處理方面的知識,同時也對于MATLAB這一功能強大的軟件的使用更加的熟練,也學習到了很多新的知識,積累了一些經(jīng)驗,歸結(jié)如下: 更全面的認識了MATLAB這個軟件,并且能夠熟練的使用MATLAB的基本

11、功能,掌握了MATLAB的程序設計的基本方式方法和步驟。 學習了圖像的處理的各項基本函數(shù)的使用,特別對MATLAB的幫助功能有了很深刻的了解,能夠獨立的完成函數(shù)的編寫及功能的實現(xiàn),再也不是什么函數(shù)都需要使用網(wǎng)絡來詢問,學習了圖像噪聲的使用,讓我對專業(yè)知識有了更深的了解,對我以后的學習很有方向性。我對圖像幾何變換的原理,包括圖像的平移變換,圖像的旋轉(zhuǎn),圖像的旋轉(zhuǎn)及圖像的放大與縮小等原理都有了更清楚的認識,也明白了它們的實現(xiàn)機制。對于使用MATLAB去實現(xiàn)數(shù)字圖像的處理也有了更好的認識。 通過這次的課程設計,使我意識到所有的知識都是需要用實踐去幫著理解的,所謂理論指導實踐,很好的實踐能幫助我們更好

12、地去理解知識,對于知識的掌握更加牢靠。同時在復習以前所學知識的同時其實也實現(xiàn)了溫故知新,對于舊知識有了新的理解。對于工程實踐,要想實現(xiàn)預期的效果,必須明白它實現(xiàn)的機制和相應的算法,只有通過相應的理論來指導,我們才能有所創(chuàng)新,有所突破。附錄:1、參考文獻:【1】賀興華等. MATLAB7.x圖像處理. 北京:人民郵電出版社,2006 【2】陳杰. MATLAB寶典. 北京:電子工業(yè)出版社,2007.【3】張德豐. MATLAB數(shù)值分析與應用. 北京:國防工業(yè)出版社,2009【4】美岡薩雷斯.溫茨著. 數(shù)字圖像處理.2版. 北京:電子工業(yè)出版社,2002 【5】汪曉銀,鄒庭榮. 數(shù)學軟件與數(shù)學實驗

13、. 武漢:華中農(nóng)業(yè)大學教務處,2007【6】Rafael C.Gonzalez.數(shù)字圖像處理(第三版).電子工業(yè)出版社,2011【7】楊丹,趙海濱,龍哲.MATLAB圖像處理實例詳解.清華大學出版社,20132、源代碼:(1)打開圖片try isLoad=getappdata(handles.figure1,'isLoad'); if isLoad=0, fileName,filePath,filterIndex=uigetfile(. '*.*','All files',. '選擇圖像文件','MultiSelect&#

14、39;,'off'); if isequal(fileName,0) | isequal(filePath,0), return; else setappdata(handles.figure1,'fileName',fileName); setappdata(handles.figure1,'filePath',filePath); setappdata(handles.figure1,'isLoad',1); file=fullfile(filePath,fileName); axes(handles.axes1); I=im

15、read(file); sizeI=size(I); if length(sizeI)=3, I=rgb2gray(I); elseif length(sizeI)=2, I=I; else errordlg('Error Happened.','Error'); end setappdata(handles.figure1,'loadImage',I); imshow(I); end else btnName=questdlg('您已經(jīng)打開一個文件,確定打開另一個?將覆蓋當前的文件?','提示',. 'O

16、K','Cancel','Cancel'); switch btnName, case 'OK', setappdata(handles.figure1,'isLoad',0); feval(pushbutton1_Callback,handles.pushbutton1,eventdata,handles); case 'Cancel', return; end endcatch errordlg('You must open a BMP file.','Error');e

17、nd(1)旋轉(zhuǎn):value=get(handles.slider1,'Value');loadImage=getappdata(handles.figure1,'loadImage');axes(handles.axes2);I0=imrotate(loadImage,value);imshow(I0);(2)平移:try x=get(handles.popupmenu3,'Value'); y=get(handles.popupmenu4,'Value'); loadImage=getappdata(handles.figure

18、1,'loadImage'); switch x, case 1, switch y, case 1, se=translate(strel(1),-100 -100); saveImage=imdilate(loadImage,se); case 2, se=translate(strel(1),-50 -100); saveImage=imdilate(loadImage,se); case 3, se=translate(strel(1),0 -100); saveImage=imdilate(loadImage,se); case 4, se=translate(str

19、el(1),50 -100); saveImage=imdilate(loadImage,se); case 5, se=translate(strel(1),100 -100); saveImage=imdilate(loadImage,se); end case 2, switch y, case 1, se=translate(strel(1),-100 -50); saveImage=imdilate(loadImage,se); case 2, se=translate(strel(1),-50 -50); saveImage=imdilate(loadImage,se); case

20、 3, se=translate(strel(1),0 -50); saveImage=imdilate(loadImage,se); case 4, se=translate(strel(1),50 -50); saveImage=imdilate(loadImage,se); case 5, se=translate(strel(1),100 -50); saveImage=imdilate(loadImage,se); end case 3, switch y, case 1, se=translate(strel(1),-100 0); saveImage=imdilate(loadI

21、mage,se); case 2, se=translate(strel(1),-50 0); saveImage=imdilate(loadImage,se); case 3, se=translate(strel(1),0 0); saveImage=imdilate(loadImage,se); case 4, se=translate(strel(1),50 0); saveImage=imdilate(loadImage,se); case 5, se=translate(strel(1),100 0); saveImage=imdilate(loadImage,se); end c

22、ase 4,%LoG switch y, case 1, se=translate(strel(1),-100 50); saveImage=imdilate(loadImage,se); case 2,%vertical se=translate(strel(1),-50 50); saveImage=imdilate(loadImage,se); case 3,%Both se=translate(strel(1),0 50); saveImage=imdilate(loadImage,se); case 4,%Both se=translate(strel(1),50 50); save

23、Image=imdilate(loadImage,se); case 5,%Both se=translate(strel(1),100 50); saveImage=imdilate(loadImage,se); end case 5,%Zerocross switch y, case 1, se=translate(strel(1),-100 100); saveImage=imdilate(loadImage,se); case 2,%vertical se=translate(strel(1),-50 100); saveImage=imdilate(loadImage,se); case 3,%Both se=translate(strel(1),0 10

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論