資源描述:
《基于matlab的圖像處理》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、《MATLAB實(shí)踐》課程設(shè)計(jì)學(xué)生姓名:學(xué)號:專業(yè)班級:指導(dǎo)教師:二○一年月日37目錄1、設(shè)計(jì)目的……………………………………………………32、題目分析……………………………………………………33、總體設(shè)計(jì)……………………………………………………34、具體設(shè)計(jì)……………………………………………………45、結(jié)果分析……………………………………………………286、心得體會……………………………………………………297、參考文獻(xiàn)……………………………………………………308、附錄…………………………………………………………313
2、7基于MATLAB的圖像處理——制作自己的Photoshop1、設(shè)計(jì)目的綜合運(yùn)用MATLAB工具箱實(shí)現(xiàn)圖像處理的GUI程序設(shè)計(jì)。2、題目分析該實(shí)驗(yàn)中,我將學(xué)習(xí)MATLABGUI程序設(shè)計(jì),利用MATLAB圖像處理工具箱,設(shè)計(jì)和實(shí)現(xiàn)自己的Photoshop。按照軟件工程方法,根據(jù)需求進(jìn)行程序的功能分析和界面設(shè)計(jì),給出設(shè)計(jì)詳細(xì)說明。然后按照我自己擬定的功能要求進(jìn)行程序設(shè)計(jì)和調(diào)試。以下列出我設(shè)計(jì)的程序功能:1)圖像的讀取、保存和退出。2)創(chuàng)建圖像的預(yù)覽模式,可以在同一文件夾內(nèi)對圖像進(jìn)行讀取上一張、下一張的操作。3)設(shè)計(jì)圖形用戶界
3、面,讓用戶能夠?qū)D像進(jìn)行任意的亮度和對比度變化調(diào)整,顯示和對比變換前后的圖像。4)設(shè)計(jì)圖形用戶界面,讓用戶能夠用鼠標(biāo)截取圖像感興趣區(qū)域,顯示和保存該選擇區(qū)域。5)編寫程序?qū)⒂脩羲x取的圖像區(qū)域進(jìn)行放大和縮小整數(shù)倍的操作,并保存。6)對圖像進(jìn)行直方圖處理,加噪處理,平滑處理,銳化處理,閾值處理,對彩色圖像進(jìn)行灰度處理等。7)為用戶界面提供可更換背景模式。8)為圖像添加水印特效,并保存。9)進(jìn)行不同圖片的疊加,并保存。10)為圖像添加相框特效,并保存。3、總體設(shè)計(jì)這次的總體設(shè)計(jì)思路是在實(shí)現(xiàn)圖像處理必備的一些基本功能的同時,也
4、實(shí)現(xiàn)一些有創(chuàng)新性的功能模塊。其中閾值分割、圖片疊加、更換背景、添加水印、添加相框及圖片預(yù)覽上一張、下一張的功能是相對比較有創(chuàng)新性的。菜單的圖像處理必備的基本功能,是比較容易實(shí)現(xiàn)的,關(guān)鍵是要注意它的使用語法和支持的圖像類型。注:整個設(shè)計(jì)都是基于Matlab2010b版本。37具體的菜單功能設(shè)計(jì)如下圖所示:具體的軟件界面設(shè)計(jì)如下圖所示:374、具體設(shè)計(jì)4.1、打開為了實(shí)現(xiàn)該GUI設(shè)計(jì)的其余功能,第一件事情就是打開圖像。我選擇用uigetfile函數(shù)來實(shí)現(xiàn),uigetfile函數(shù)顯示一個打開文件對話框,該對話框自動列出當(dāng)前路徑
5、下的目錄和文件。Uigetfile函數(shù)的調(diào)用格式為[name,path]=yigetfile(…),在按下對話框中的執(zhí)行按鈕“打開”后,返回選擇的文件名和路徑,分別保存到“name”和“path”中。通過imread函數(shù)讀出圖像數(shù)據(jù),把圖像數(shù)據(jù)賦值給全局變量im,這里得到的im要聲明為全局變量,為后面每個功能所使用。同時預(yù)留初始變量r,用以操作還原。4.2.1、上一張為了可以選擇喜歡處理的圖片而無需每次的打開圖片,設(shè)計(jì)了上一張和下一張功能。該功能實(shí)現(xiàn)的主要思想是,先獲取已經(jīng)顯示圖片的路徑,然后從第一張圖片的路徑開始與正在
6、顯示的圖片路徑做比較,當(dāng)二者相同時,記下i,然后執(zhí)行i=i-1,得到上一張圖片路徑,最后顯示出來。具體實(shí)現(xiàn)的關(guān)鍵語句如下:fori=3:maxd1=files(i).name;d2=strcat(directoryname1,d1);%文件夾內(nèi)每張圖片路徑ifstrcmp(d2,str)i=i-1;break;%與正在顯示的圖片路徑做比較,看是否相同elseendend當(dāng)顯示第一張圖片時,再執(zhí)行上一張,提示:這是第一張圖片。ifi==2msgbox('thisisthefirstimg');4.2.2、下一張下一站和上一
7、張思路一樣,只是在得到顯示圖片路徑以后,執(zhí)行i=i+1。另外我還加了一個功能,就是當(dāng)現(xiàn)實(shí)到最后一張圖片是,如果再下一張就提示:這是最后一張圖片。ifi==max+1msgbox('thisisthelast37img');4.3、還原利用一開始打開文件時預(yù)留的變量r進(jìn)行還原。axes(handles.axes2);globalr;imshow(r);handles.img=r;4.4、保存對于圖像保存,可以用imwrite函數(shù),把數(shù)據(jù)i存到指定的文件夾中。這里仍然要用到uigetfile函數(shù)來實(shí)現(xiàn),用它獲得將要保存的路徑
8、??梢灾付ㄎ募4娴母袷?,如:imwrite(i,file,'jpg');,其中i為從坐標(biāo)軸中獲取的圖像信息:i=getimage(gca);4.11、退出清除所有變量和坐標(biāo)軸中的內(nèi)容。clc;clearall;clareset;close(gcf)4.5、放大在MATLAB中,用函數(shù)imresize來實(shí)現(xiàn)對圖像的放