圖像處理演示系統(tǒng)課程設(shè)計_第1頁
圖像處理演示系統(tǒng)課程設(shè)計_第2頁
圖像處理演示系統(tǒng)課程設(shè)計_第3頁
圖像處理演示系統(tǒng)課程設(shè)計_第4頁
圖像處理演示系統(tǒng)課程設(shè)計_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《圖像處理演示系統(tǒng)課程設(shè)計》)(院、系部專業(yè)及班級號學(xué)名姓日期摘要數(shù)字圖像處理的目的在于改善圖像的質(zhì)量,主要以改善人的視覺效果為目的。目前,圖、、、商業(yè)等領(lǐng)域。因?yàn)閿?shù)字圖像處理技術(shù)易于實(shí)像處理技術(shù)應(yīng)用領(lǐng)域廣泛醫(yī)學(xué)科研軍事現(xiàn)非線性處理,處理程序和處理參數(shù)可變,故是一項(xiàng)通用性強(qiáng),精度高,處理方法靈活,信息保存、傳送可靠的圖像處理技術(shù)。本圖像處理演示系統(tǒng)以數(shù)字圖像處理理論為基礎(chǔ),對部分常用功能進(jìn)行可視化設(shè)計,簡潔大方,方便用戶操作。本文使用MATLAB設(shè)計良好的用戶界面,從加載、顯示、輸出及圖像的幾何變換(平移、縮放、旋轉(zhuǎn)、翻轉(zhuǎn))與圖像增強(qiáng)(空間域的平滑濾波與銳化濾波)等方面提供了簡單但實(shí)用的基本圖像處理功能。1.主要內(nèi)容1.1圖像處理演示系統(tǒng)設(shè)計要求1)能加載和顯示原始圖像,顯示和輸出處理后的圖像;2)實(shí)現(xiàn)各部分功能且便于維護(hù)和具備可擴(kuò)展性;3)界面美觀并且便于操作;1.2圖像處理演示系統(tǒng)設(shè)計任務(wù)數(shù)字圖像處理演示系統(tǒng)應(yīng)該具備圖像的圖像增強(qiáng)(空間域的平滑濾波與銳化濾波)、幾何變換(平移、縮放、旋轉(zhuǎn)、翻轉(zhuǎn))、繪制直方圖的簡單處理功能。1.2.1圖像增強(qiáng)圖像增強(qiáng)是數(shù)字圖像處理的基本內(nèi)容之一,其目的是根據(jù)應(yīng)用需要突出圖像中的某些“有用”的信息,削弱或去除不需要的信息,以達(dá)到擴(kuò)大圖像中不同物體特征之間的差別,使處理后的圖像對于特定應(yīng)用而言,比原始圖像更合適,或者為圖像的信息提取以及其他圖像分析技術(shù)奠定了基礎(chǔ)。一般情況下,經(jīng)過增強(qiáng)處理后,圖像的視覺效果會發(fā)生改變,這種變化意味著圖像的視覺效果得到了改善,某些特定信息得到了增強(qiáng)。1.2.2幾何變換幾何變換又稱為幾何運(yùn)算,它是圖像處理和圖像分析的重要內(nèi)容之一。通過幾何運(yùn)算,可以根據(jù)應(yīng)用的需要使原圖像產(chǎn)生大小、形狀、和位置等各方面的變化。簡單的說,幾何變換可以改變像素點(diǎn)所在的幾何位置,以及圖像中各物體之間的空間位置關(guān)系,這種運(yùn)算可以被看成是將各物體在圖像內(nèi)移動,特別是圖像具有一定的規(guī)律性時,一個圖像可以由另外一個圖像通過幾何變換來產(chǎn)生。實(shí)際上,一個不受約束的幾何變換,可將輸入圖像的一個點(diǎn)變換到輸出圖像中的任意位置。幾何變換不僅提供了產(chǎn)生某些特殊圖像的可能,甚至還可以使圖像處理程序設(shè)計簡單化。從變換性質(zhì)來分可以分為圖像的位置變換、形狀變換等2.設(shè)計思想:2.1圖像處理演示系統(tǒng)實(shí)現(xiàn)工具的選擇使用MATLAB軟件進(jìn)行界面設(shè)計及程序編寫。2.2系統(tǒng)結(jié)構(gòu)框圖圖像處理系統(tǒng)平移變換文件圖像增強(qiáng)幾何變換繪制直方圖縮放旋轉(zhuǎn)翻轉(zhuǎn)變換變換變換幫助保存打開平滑處理銳化處理3.圖形用戶界面設(shè)計GUI是實(shí)現(xiàn)人機(jī)交互的中介,可以通過它實(shí)現(xiàn)數(shù)據(jù)輸入、處理和輸出。MATLAB提供了一個專門的GUI設(shè)計工具——圖形用戶界面開發(fā)環(huán)境(GUIDE),使用該工具,可以快速完成GUI設(shè)計任務(wù)。利用MATLAB提供的有關(guān)數(shù)據(jù),還可以創(chuàng)建工具欄控件和多種對話框。3.1啟動GUIDE在命令窗口輸入GUIDE,則顯示如下的“GUIDEQuickStart”對話框。打開“GUIDEQuickStart”對話框,利用GUIDE模板創(chuàng)建新的GUI,選擇一個模板后,點(diǎn)擊OK按鈕,在輸出編輯器中打開GUI。添加菜單以及選擇模板后點(diǎn)擊運(yùn)行顯示如下:4.圖像處理演示系統(tǒng)各功能的實(shí)現(xiàn)4.1文件的打開與保存4.1.1文件的打開在主菜單“文件”的下拉菜單中,有個“打開”選項(xiàng),在其回調(diào)函數(shù)中添加打開某個文件的相關(guān)代碼:[,pathname]=uigetfile(...{'*.bmp;*.jpg;*.gif;','Files(*.bmp,*.jpg,*.gif)';'*.bmp','位圖文件(*.bmp)';...'*.jpg','Figures(*.jpg)';...'*.gif','MAT-files(*.gif)';...'*.*','AllFiles(*.*)'},...'Openafile');globalwhimgxx;L=length();if<5returnendV=strcat(pathname,);xx=imfinfo(V);handles.my_data1=V;guidata(hObject,handles);axes(handles.axes1);img=imread(V);[w,h,l]=size(img);imshow(img);函數(shù)中主要有兩Uigetfile為將要打開文件的文件名,pathname為將要打開文件的路徑。是生成文件選擇打開對''Openthefile部分參數(shù)'*.bmp;*.jpeg;*.gif…'是想要打開文件的格式,話框的標(biāo)題,載入一幅位圖,其運(yùn)行效果如下:4.1.2文件的保存在主菜單“文件”的下拉菜單中,有個“保存”選項(xiàng),在其回調(diào)函數(shù)中添加保存某個文件的相關(guān)代碼:[new]=uiputfile(...{'*.bmp;*.jpg;*.gif;','MATLABFiles(*.bmp,*.jpg,*.gif)';'*.bmp','位圖文件(*.bmp)';...'*.jpg','Figures(*.jpg)';...'*.gif','MAT-files(*.gif)';...'*.*','AllFiles(*.*)'},...'Saveafile');globalimg;imwrite(img,strcat(newpath,newfile));把當(dāng)前文件保存到用戶選擇的保存路徑下,文件保存對話框中列出當(dāng)前目錄下的所有文件,保存的文件名和路徑名保存到new中。4.2圖像的增強(qiáng)4.2.1圖像的平滑濾波處理1)平滑濾波的作用:對圖像的高頻分量進(jìn)行消弱或消除,增強(qiáng)圖像的低頻分量。平滑濾波一般用于消除圖像中的隨即噪聲,從而起到圖像平滑的作用)平滑濾波原理:2.(1)鄰域平均濾波法鄰域平均濾波法是將一個像素點(diǎn)及其鄰域中的所有像素點(diǎn)的平均值賦給輸出圖像中相應(yīng)的像素點(diǎn),從而達(dá)到平滑的目的,又稱均值濾波法。最簡單的鄰域平均濾波法是所有模板系數(shù)都取相同的值.鄰域平均濾波法的運(yùn)算公式為:g(x,y)=1/N∑f(i.j)x,y=0,1,2,…,N-1j=∈M其中,M是以(x,y)為中心的鄰域像素點(diǎn)的集合,N是該鄰域內(nèi)像素點(diǎn)的總個數(shù),對每個像素點(diǎn)按該公式進(jìn)行計算即可得到增強(qiáng)圖像中所有像素點(diǎn)的灰度值。(2)中值濾波法盡管鄰域平均濾波法可以起到平滑圖像的作用,但在消除噪聲的同時會使圖像中的一些細(xì)節(jié)變得模糊。中值濾波法則在消除噪聲的同時還能保持圖像中的細(xì)節(jié)部分,防止圖像的邊緣部分模糊。與鄰域平均法不同,中值濾波是將鄰域內(nèi)所有的像素點(diǎn)值按從小到大的順序排列,取中間值作為中心像素點(diǎn)的輸出值。其原理是利用一個奇數(shù)點(diǎn)的移動窗口,將窗口中心點(diǎn)的值用窗口各點(diǎn)的中間值代替,與均值濾波不同,它不是通過對鄰域內(nèi)的所有像素點(diǎn)求平均值來消除噪聲的,而是讓與周圍像素點(diǎn)灰度值的差比較大的像素點(diǎn)改取近似于周圍像素點(diǎn)灰度值的值。從而達(dá)到消除噪聲的目的。3)實(shí)現(xiàn)方法:這里主要以采用中值濾波法對圖像進(jìn)行處理(平滑處理)為例,其實(shí)現(xiàn)方法如下:globalwhimg;img2=img;fori=2:w-1forj=2:h-1form=1:3forn=1:3hhh((m-1)*3+n)=img(i+m-2,j+n-2);endendforp=1:9forq=p+1:9if(hhh(p)>hhh(q))temp=hhh(p);hhh(p)=hhh(q);hhh(q)=temp;endendendimg2(i,j)=hhh(5);endendimg=img2;imshow(img);中值濾波處理(平滑處理)后的結(jié)果為:圖像的銳化濾波處理4.2.2銳化濾波的作用:1)如果需要突出圖像的平滑處理會使圖像的邊緣紋理信息受到損失,圖像變得比較模糊。它可以消除或減弱圖像的低頻分量從而圖像的邊緣紋理信息,則可以通過銳化濾波器實(shí)現(xiàn),增強(qiáng)圖像中物體的邊緣輪廓信息,使得除邊緣以外的像素點(diǎn)的灰度值趨向于零。2)銳化濾波原理微分運(yùn)算是求像素點(diǎn)灰度值的變銳化濾波器是以對圖像的微分運(yùn)算或差分運(yùn)算為基礎(chǔ)。因此微分運(yùn)算或差分化率,而圖像內(nèi)不同物體邊緣處的像素點(diǎn)的灰度值往往變化比較明顯,運(yùn)算可以起到增強(qiáng)邊緣信息的作用。銳化算子:0-10H=-14-10-103)實(shí)現(xiàn)方法:globalwhimg;img1=im2double(img);a=img1(:,:,1);b=img1(:,:,2);c=img1(:,:,3);img2=img1;fori=2:w-1forj=2:h-1img2(i,j)=abs(4*img1(i,j)-img1(i-1,j)-img1(i+1,j)-img1(i,j-1)-img1(i,j+1));endendimg=im2uint8(img2);imshow(img);其銳化處理結(jié)果為:4.3圖像的幾何變換4.3.1對圖像進(jìn)行平移1)圖像平移的作用:而使平移后的圖像與,(X0,Y0)移動到另外一個位置將圖像中的某點(diǎn)從一個位置(X,Y)原始圖像完全相同。)圖像平移原理:2圖像的平移是圖像變換中最簡單的變換之一,其特點(diǎn)是平移后的圖像與原圖像完全相同,平移后新圖像上的每一個點(diǎn)都可以在原圖像中找到對應(yīng)的點(diǎn)。方向的X.Y,其中A(X,Y)X方向的平移量為△,Y(若點(diǎn)AX)進(jìn)行平移后,被移到000A(X,Y)的坐標(biāo)為:,那么點(diǎn)平移量為△YX=X+△X0Y=Y+△Y0實(shí)現(xiàn)方法:globalwhimg;prompt={'請輸入橫向平移量?'};title='';ansa=inputdlg(prompt,title);x1=str2num(ansa{1});handles.my_data4=x1;prompt={'請輸入縱向平移量'};title='';ansa=inputdlg(prompt,title);y1=str2num(ansa{1});handles.my_data5=y1;guidata(hObject,handles)%上段代碼中的x1,y1即為需要輸入的橫向平移量與縱向平移量forx=1:wfory=1:hPosSourceX=uint16(x+x1);PosSourceY=uint16(y+y1);if((PosSourceX<1)||(PosSourceX>w)||(PosSourceY<1)||(PosSourceY>h))if(xx.BitDepth==24)Transfor(x,y,1:3)=uint8(1);elseTransfor(x,y)=uint8(1);endelseif(xx.BitDepth==24)img(x,y,1:3)=BmpImage(PosSourceX,PosSourceY,1:3);elseimg(x,y)=BmpImage(PosSourceX,PosSourceY);endendendendimshow(img)%(PosSourceX和PosSourceY是平移后坐標(biāo)點(diǎn),Transfor為平移后圖片)4.3.2對圖像進(jìn)行縮放)圖像縮放的作用:1.對圖像進(jìn)行縮小和放大的處理,可分別對其寬和高的縮放量進(jìn)行設(shè)置。2)圖像縮放原理:方向按相同比例縮方向和Y通常情況下,數(shù)字圖像的比例縮放是將給定的圖像在X方向縮放的比例不同,則圖像的Y倍。從而獲得一副新的圖像,如果X方向和a放比例縮放會改變原始圖像像素之間的相對位置,產(chǎn)生幾何畸變。設(shè)原始圖像中的點(diǎn),則坐標(biāo)關(guān)系可表示為:,Y)(XA(X,Y)比例縮放后,在新圖像中的對應(yīng)點(diǎn)為A101010X1=aX0Y1=bX0若比例縮放所產(chǎn)生的圖像中的像素在原圖像中沒有相對應(yīng)的像素點(diǎn)時,就需要進(jìn)行灰度值的插值運(yùn)算,一般有以下兩種插值處理方法。該方法的主要直接賦值為和它最相近的像素灰度值,這種方法稱為最鄰近插值法,(1)特點(diǎn)是簡單、計算量很小、但可能會產(chǎn)生馬賽克現(xiàn)象;但運(yùn)算通過其他數(shù)學(xué)插值算法來計算相應(yīng)像素點(diǎn)的灰度值,這類方法處理效果好,2)(量會有所增加)實(shí)現(xiàn)方法:3sy.Y向縮放倍數(shù)向縮放倍數(shù):'};m1=m*sx;n1=n*sy;%設(shè)置Xprompt={'請輸入forh=1:m1;title='';forw=1:n1;ansa=inputdlg(prompt,title);b(h,w)=i(round(h/sx),round(w/sy));%roundsx=str2num(ansa{1});取最鄰近整數(shù)handles.my_data3=sx;endguidata(hObject,handles)endm=xx.Width;n=xx.Height;)xx為讀取的原始圖像信息為縮放后的圖像二維數(shù)據(jù),為原始圖像的二維數(shù)據(jù),,(mnm1,n1縮放處理結(jié)果顯示如下:4.3.3對圖像進(jìn)行旋轉(zhuǎn)1)圖像旋轉(zhuǎn)的作用:對圖像進(jìn)行任意角度的旋轉(zhuǎn)。2)圖像旋轉(zhuǎn)原理:圖像的旋轉(zhuǎn)變換是幾何學(xué)中研究的重要內(nèi)容之一,一般情況下,圖像的旋轉(zhuǎn)變換是指以圖像經(jīng)過旋轉(zhuǎn)變換之后,圖像的中心為原點(diǎn),將圖像上的所有像素都旋轉(zhuǎn)同一個角度的變換。和平移變換一樣,在圖像旋轉(zhuǎn)圖像的位置發(fā)生了改變,但旋轉(zhuǎn)后,圖像的大小一般會改變。又可以擴(kuò)大顯示區(qū)域的圖像范圍以顯示圖像的全變換中既可以把轉(zhuǎn)出顯示區(qū)域的圖像截去,部。,為表示方便,A(X,Y)A設(shè)原始圖像的任意點(diǎn)(X,Y)經(jīng)過旋轉(zhuǎn)β角度以后到新的位置000采用極坐標(biāo)形式表示,原始點(diǎn)的角度為а。如下圖所示PrA(X,Y)rA(X,Y)000根據(jù)極坐標(biāo)與二維垂直坐標(biāo)的關(guān)系,原始圖像的點(diǎn)A(X,Y)的X和Y坐標(biāo)如下:00000X=rcosа0Y=rsinа0旋轉(zhuǎn)到新位置以后點(diǎn)A(X,Y)的坐標(biāo)如下:X=rcos(а-β)=rcosаcosβ+rsinаsinβ=Xcosβ+Ysinβ00Y=rsin(а-β)=rsinаcosβ-rcosаsinβ=-Xsinβ+Ycosβ00圖像的旋轉(zhuǎn)變換用矩陣形式表示如下:Xcosβsinβ0X0Y=-sinβcosβ0Y010011對圖像進(jìn)行旋轉(zhuǎn)操作時需要輸入旋轉(zhuǎn)(該題中旋轉(zhuǎn)角為90度)角度,相關(guān)實(shí)現(xiàn)代碼如下:globalwhimg;prompt={'請輸入旋轉(zhuǎn)角度:'};title='AngleDegrees';ansa=inputdlg(prompt,title);n=str2num(ansa{1});i=im2double(img);pai=3.14;n=pai*n/180;%?將角度轉(zhuǎn)換為直觀的表示方法,便于直接輸入度數(shù)。img1=zeros(w,h);fori=1:(w-1)forj=1:(h-1)img1(int32(i*cos(n)+sin(n)*j),int32(j*cos(n)-i*1*sin(n)))=i(i,j);endendimg=im2unit8(img1);imshow(img);旋轉(zhuǎn)處理如下圖所示:4.3.4對圖像進(jìn)行翻轉(zhuǎn)1)圖像翻轉(zhuǎn)的作用:實(shí)現(xiàn)圖像的水平翻轉(zhuǎn)2)圖像翻轉(zhuǎn)原理:垂直方向:y′=h-y+1水平方向:x′=w-x+1其中為h圖像高,w為圖像寬3)實(shí)現(xiàn)方法:globalxximgwh;img1=img;fori=1:wforj=1:himg1(i,j,1:3)=img(w-i+1,h-j+1,1:3);endendimg=img1;imshow(img);其結(jié)果如下顯示:對翻轉(zhuǎn)后的圖像銳化所顯示的圖像為:圖像直方圖的繪制4.4.1)圖像直方圖繪制的作用:實(shí)現(xiàn)圖像直方圖的均衡化。2)圖像直方圖均衡原理:直方圖均衡化是將原圖像的直方圖通過變換函數(shù)修正為均勻的直方圖,然后按均衡直方圖修正原圖像。圖像均衡化處理后,圖像的直方圖是平直的,即各灰度級具有相同的出現(xiàn)頻數(shù),那么由于灰度級具有均勻的概率分布,圖像看起來就更清晰了。首先假定連續(xù)灰度級的情況,推導(dǎo)直方圖均衡化變換公式,令r代表灰度級,P(r)為概率密度函數(shù)。(注:r值已歸一化,最大灰度值為1)。3)實(shí)現(xiàn)方法:globalxximgwh;img1=rgb2gray(img);img1=double(img1);%img1=uint8(255*img1*0.5+0.5);grey_grade=2^8;fori=1:grey_gradegrey_friq(i)=0;endfory=1:wforx=1:hgrey_friq(img1(y,x)+1)=grey_friq(img1(y,x)+1)+1;endendbar(1:256,grey_friq);該圖像的直方圖顯示如下:5.小結(jié)從通常意義上講,數(shù)字圖像處理技術(shù)更加普遍、可靠和準(zhǔn)確,比起模擬方法,它們也更容易實(shí)現(xiàn),專用的硬件被用于數(shù)字圖像處理。今天,硬件解決方案被廣泛的用于視頻處理系統(tǒng),但商業(yè)化的圖像處理任務(wù)基本上仍以軟件形式實(shí)現(xiàn),運(yùn)行在通用個人電腦上,掌握進(jìn)一步的圖像處理技能對今后的學(xué)習(xí)和工作生活也都有其積極的影響!通過這個階段的努力本圖像處理演示系統(tǒng)已基本完成了對文件的打開保存,以及對圖像的平移、圖像的旋轉(zhuǎn)、翻轉(zhuǎn)、圖像的縮放、圖像的增強(qiáng)等功能的實(shí)現(xiàn),由于個人水平和時間的有限,此次課程設(shè)計還存在許多想法沒有很好的實(shí)現(xiàn),擴(kuò)展功能上也有一定的局限性,希望能在今后的學(xué)習(xí)中逐漸彌補(bǔ)和改善!6.源程序functionvarargout=graph(varargin)%instancetorun(singleton).%GRAPHM-graph.fig%%GRAPH,byitself,createsanew%Seealso:GUIDE,GUIDATA,GRAPHorraisestheexistingGUIHANDLES%singleton*.%%Edittheabovetexttomodifytheresponse%H=GRAPHreturnsthehandletoatohelpgraphnewGRAPHorthehandleto%theexistingsingleton*.%LastModifiedbyGUIDEv2.510-Jul-2014%13:33:34%GRAPH('CALLBACK',hObject,eventData,ha%Begininitializationcode-DONOTEDITndles,...)callsthelocalgui_Singleton=1;%functionnamedCALLBACKinglobalwhimgxx;GRAPH.Mwiththegiveninputarguments.gui_State=struct('gui_Name',m,...%'gui_Singleton',%GRAPH('Property','Value',...)createsgui_Singleton,...anewGRAPHorraisesthe'gui_OpeningFcn',%existingsingleton*.Startingfrom@graph_OpeningFcn,...theleft,propertyvaluepairsare'gui_OutputFcn',%appliedtotheGUIbefore@graph_OutputFcn,...graph_OpeningFunctiongetscalled.An'gui_LayoutFcn',%unrecognizedpropertynameor[],...invalidvaluemakespropertyapplication'gui_Callback',[]);%stop.Allinputsarepassedtoifnargin&isstr(varargin{1})graph_OpeningFcnviavarargin.gui_State.gui_Callback=%str2func(varargin{1});%*SeeGUIOptionsonGUIDE'sendToolsmenu.ChooseGUIallowsonlyoneifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});gui_mainfcn(gui_State,varargin{:});Elseend%Endinitializationcode-DONOTEDIT%---Executesjustbeforegraphismadevisible.functiongraph_OpeningFcn(hObject,eventdata,handles,varargin)%Thisfunctionhasnooutputargs,seeOutputFcn.%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%varargincommandlineargumentstograph(seeVARARGIN)%Choosedefaultcommandlineoutputforgraphhandles.output=hObject;%Updatehandlesstructureguidata(hObject,handles);%UIWAITmakesgraphwaitforuserresponse(seeUIRESUME)%uiwait(handles.figure1);%---Outputsfromthisfunctionarereturnedtothecommandline.functionvarargout=graph_OutputFcn(hObject,eventdata,handles)%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Getdefaultcommandlineoutputfromhandlesstructurevarargout{1}=handles.output;%--------------------------------------------------------------------function(hObject,eventdata,handles)%hObjecthandletofile(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%--------------------------------------------------------------------functionopen(hObject,eventdata,handles)%hObjecthandletoopenFile(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)[,pathname]=uigetfile(...{'*.bmp;*.jpg;*.gif;','MATLABFiles(*.bmp,*.jpg,*.gif)';'*.bmp','位圖文件(*.bmp)';...'*.jpg','Figures(*.jpg)';...'*.gif','MAT-files(*.gif)';...'*.*','AllFiles(*.*)'},...'Openafile');globalwhimgxx;L=length();if<5returnendV=strcat(pathname,);xx=imfinfo(V);handles.my_data1=V;guidata(hObject,handles);axes(handles.axes1);img=imread(V);[w,h,l]=size(img);imshow(img);%--------------------------------------------------------------------functionsave_Callback(hObject,eventdata,handles)%hObjecthandletosave(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)[new]=uiputfile(...{'*.bmp;*.jpg;*.gif;','MATLABFiles(*.bmp,*.jpg,*.gif)';'*.bmp','位圖文件(*.bmp)';...'*.jpg','Figures(*.jpg)';...'*.gif','MAT-files(*.gif)';...'*.*','AllFiles(*.*)'},...'Saveafile');globalimg;imwrite(img,strcat(newpath,newfile));%--------------------------------------------------------------------functionstrength_Callback(hObject,eventdata,handles)%hObjecthandletostrength(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%--------------------------------------------------------------------functionsmooth_Callback(hObject,eventdata,handles)%hObjecthandletosmooth(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalwhimg;forq=p+1:9img2=img;if(hhh(p)>hhh(q))fori=2:w-1temp=hhh(p);forj=2:h-1hhh(p)=hhh(q);form=1:3hhh(q)=temp;forn=1:3endendhhh((m-1)*3+n)=img(i+m-2,j+n-2);endendimg2(i,j)=hhh(5);endendforp=1:9endimg=img2;imshow(img);%--------------------------------------------------------------------functionsharping_Callback(hObject,eventdata,handles)%hObjecthandletosharping(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalwhimg;c=img1(:,:,3);img1=im2double(img);img2=img1;a=img1(:,:,1);fori=2:w-1b=img1(:,:,2);forj=2:h-1img2(i,j)=abs(4*img1(i,j)-img1(i-1,j)-img1(i+1,j)-img1(i,j-1)-img1(i,j+1));endendimg=im2uint8(img2);imshow(img);%--------------------------------------------------------------------functiontrans_Callback(hObject,eventdata,handles)%hObjecthandletotrans(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%--------------------------------------------------------------------functiontranslation_Callback(hObject,eventdata,handles)%hObjecthandletotranslation(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalwhimg;prompt={'請輸入縱向平移量'};prompt={'請輸入橫向平移量?'};title='';title='';ansa=inputdlg(prompt,title);ansa=inputdlg(prompt,title);y1=str2num(ansa{1});x1=str2num(ansa{1});handles.my_data5=y1;handles.my_data4=x1;guidata(hObject,handles)%上段代碼中的x1,y1即為需要輸入的橫向平移量與縱向平移量forx=1:wfory=1:hPosSourceX=uint16(x+x1);PosSourceY=uint16(y+y1);if((PosSourceX<1)||(PosSourceX>w)||(PosSourceY<1)||(PosSourceY>h))if(xx.BitDepth==24)Transfor(x,y,1:3)=uint8(1);elseTransfor(x,y)=uint8(1);endelseif(xx.BitDepth==24)img(x,y,1:3)=BmpImage(PosSourceX,PosSourceY,1:3);elseimg(x,y)=BmpImage(PosSourceX,PosSourceY);endendendendfigure;imshow(img)%(PosSourceX和PosSourceY是平移后坐標(biāo)點(diǎn),Transfor為平移后圖片)%--------------------------------------------------------------------functionzoom_Callback(hObject,eventdata,handles)%hObjecthandletozoom(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)prompt={'請輸入X向縮放倍數(shù):'};guidata(hObject,handles)title='';m=xx.Width;ansa=inputdlg(prompt,title);n=xx.Height;sx=str2num(ansa{1});m1=m*sx;n1=n*sy;%設(shè)置Y向縮放倍數(shù)sy.handles.my_data3=sx;forh=1:m1;forw=1:n1;b(h,w)=i(round(h/sx),round(w/sy));%round取最鄰近整數(shù)endend%--------------------------------------------------------------------functionrevolve_Callback(hObject,eventdata,handles)%hObject

溫馨提示

  • 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

提交評論