版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 《 MATLAB 實(shí)踐 》</p><p><b> 課程設(shè)計(jì)</b></p><p> 學(xué)生姓名: </p><p> 學(xué) 號: </p><p> 專業(yè)班級:
2、 </p><p> 指導(dǎo)教師: </p><p> 二○○ 年 3月 1 日</p><p> 目 錄</p><p> 1.設(shè)計(jì)目的…………………………………………………3</p><p> 2.題目分析…………
3、………………………………………3</p><p> 3.總體設(shè)計(jì)…………………………………………………3</p><p> 4.具體設(shè)計(jì)…………………………………………………5</p><p> 5.結(jié)果分析…………………………………………………34</p><p> 6.心得體會…………………………………………………34</p
4、><p> 7.附錄代碼…………………………………………………36</p><p> 1、設(shè)計(jì)目的:綜合運(yùn)用MATLAB工具箱實(shí)現(xiàn)圖像處理的GUI程序設(shè)計(jì), 利用MATLAB圖像處理工具箱,設(shè)計(jì)和實(shí)現(xiàn)自己的Photoshop 。</p><p><b> 2、題目分析 </b></p><p> 利用matlab的
5、GUI程序設(shè)計(jì)一個(gè)簡單實(shí)用的圖像處理程序。該程序應(yīng)具備圖像處理的常用功能,以滿足用戶的使用?,F(xiàn)設(shè)計(jì)程序有以下基本功能:</p><p> 1)圖像的讀取和保存。</p><p> 2)設(shè)計(jì)圖形用戶界面,讓用戶能夠?qū)D像進(jìn)行任意的亮度和對比度變化調(diào)整,顯示和對比變換前后的圖像。</p><p> 3)設(shè)計(jì)圖形用戶界面,讓用戶能夠用鼠標(biāo)選取圖像感興趣區(qū)域,顯示和保
6、存該選擇區(qū)域。</p><p> 4)編寫程序通過最近鄰插值和雙線性插值等算法將用戶所選取的圖像區(qū)域進(jìn)行放大和縮小整數(shù)倍的操作,并保存,比較幾種插值的效果。</p><p> 5)圖像直方圖統(tǒng)計(jì)和直方圖均衡,要求顯示直方圖統(tǒng)計(jì),比較直方圖均衡后的效果。</p><p> 6)能對圖像加入各種噪聲,并通過幾種濾波算法實(shí)現(xiàn)去噪并顯示結(jié)果。</p>&
7、lt;p><b> 7)額外功能。</b></p><p><b> 3、總體設(shè)計(jì)</b></p><p><b> 圖一</b></p><p> 軟件的總體設(shè)計(jì)界面布局如上圖所示,主要分為2個(gè)部分:顯示區(qū)域與操作區(qū)域。</p><p> 顯示區(qū)域:顯示載入原
8、圖,以及通過處理后的圖像。</p><p> 操作區(qū)域:通過功能鍵實(shí)現(xiàn)對圖像的各種處理。</p><p> 在截圖中可見,左部為一系列功能按鍵如“還原”、“撤銷”、“截圖”等等 ;界面正中部分為圖片顯示部分,界面中下方為系列功能切換選擇組。</p><p> 設(shè)計(jì)完成后運(yùn)行的軟件界面如下:</p><p><b> 圖二&l
9、t;/b></p><p> 與圖一先比,運(yùn)行后的界面更為簡潔。</p><p> 利用“編輯”菜單可調(diào)出相應(yīng)的功能鍵。例如:</p><p><b> 4、具體設(shè)計(jì)</b></p><p> 現(xiàn)介紹各個(gè)功能模塊的功能與實(shí)現(xiàn)。</p><p> 4.1菜單欄的設(shè)計(jì)。</p&g
10、t;<p> 通過Menu Editor創(chuàng)建如下菜單,通過以下菜單來控制顯示或隱藏功能按鍵</p><p> 以“編輯”菜單中“圖像變形”中的“圖像翻轉(zhuǎn)”為例說明實(shí)現(xiàn)用戶界面功能鍵“圖像翻轉(zhuǎn)”的顯示與隱藏。</p><p> 實(shí)現(xiàn)該功能的程序段如下:</p><p> function tuxiangfanzhuan_Callback(hObj
11、ect, eventdata, handles)</p><p> % hObject handle to tuxiangfanzhuan (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles
12、 structure with handles and user data (see GUIDATA)</p><p> set(handles.uipanel7,'Visible','on');</p><p> if strcmp(get(gcbo, 'Checked'),'on')</p><p
13、> set(handles.uipanel7,'Visible','on');</p><p> set(gcbo, 'Checked', 'off');</p><p> set(handles.uipanel7,'Visible','off');</p><p
14、><b> else </b></p><p> set(gcbo, 'Checked', 'on');</p><p><b> end</b></p><p> 該段程序通過設(shè)置“圖像翻轉(zhuǎn)”功能鍵對應(yīng)的句柄uipanel7中的“Visible”屬性的開關(guān)來實(shí)現(xiàn)該功能鍵的顯示
15、隱藏。其他同理。</p><p> 4.2圖像的讀取和保存。</p><p> ?。?)利用“文件”菜單中的“打開”、“保存為…”分別實(shí)現(xiàn)圖片的讀取與保存。</p><p> 利用matlab中 “ uigetfile”、“imread” “imshow”實(shí)現(xiàn)圖像文件的讀取與顯示:</p><p> function openfile_
16、Callback(hObject, eventdata, handles)</p><p> % hObject handle to openfile (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % han
17、dles structure with handles and user data (see GUIDATA)</p><p> [filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'載入圖像');</p><p> if ise
18、qual(filename,0)|isequal(pathname,0)</p><p> errordlg('沒有選中文件','出錯(cuò)');</p><p><b> return;</b></p><p><b> else </b></p><p> fi
19、le=[pathname,filename];</p><p> global S %設(shè)置一個(gè)全局變量S,保存初始圖像路徑,以便之后的還原操作</p><p><b> S=file;</b></p><p> x=imread(file);</p><p> set(handles.axes1,'H
20、andleVisibility','ON');</p><p> axes(handles.axes1);</p><p> imshow(x);</p><p> set(handles.axes1,'HandleVisibility','OFF');</p><p> axe
21、s(handles.axes2);</p><p> imshow(x);</p><p> handles.img=x;</p><p> guidata(hObject,handles);</p><p><b> end</b></p><p><b> 程序關(guān)鍵部分:
22、</b></p><p> 通過[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'載入圖像')選擇相應(yīng)路徑打開的圖像;通過file=[pathname,filename]; x=imread(file); 讀取選中的圖像;最后,通過imshow
23、(x)在顯示區(qū)域上顯示圖像。</p><p><b> (2)圖像保存。</b></p><p> 利用“uiputfile”、“imwrite”函數(shù)實(shí)現(xiàn)圖像文件的保存。</p><p> function save_Callback(hObject, eventdata, handles)</p><p> %
24、 hObject handle to save (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)</p&
25、gt;<p> [sfilename ,sfilepath]=uiputfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'保存圖像文件','untitled.jpg');</p><p> if ~isequal([sfilename,sfilepath],[0,0])<
26、;/p><p> sfilefullname=[sfilepath ,sfilename];</p><p> imwrite(handles.img,sfilefullname);</p><p><b> else</b></p><p> msgbox('你按了取消鍵','保存失敗
27、9;);</p><p><b> end</b></p><p><b> 程序關(guān)鍵部分:</b></p><p> 通[sfilename ,sfilepath]=uiputfile({'*.jpg';'*.bmp';'*.tif';'*.*'},&
28、#39;保存圖像文件','untitled.jpg')選擇圖像文件保存的路徑與格式;然后,通過sfilefullname=[sfilepath ,sfilename];</p><p> imwrite(handles.img,sfilefullname); 實(shí)現(xiàn)對圖像的保存。</p><p><b> ?。?)程序的退出。</b></
29、p><p> function exit_Callback(hObject, eventdata, handles)</p><p> % hObject handle to exit (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB
30、</p><p> % handles structure with handles and user data (see GUIDATA)</p><p><b> clc;</b></p><p> close all;</p><p> close(gcf);</p><p>
31、<b> clear;</b></p><p> 4.3對圖像進(jìn)行任意的亮度和對比度變化調(diào)整,顯示和對比變換前后的圖像。</p><p> 運(yùn)行程序后,通過“編輯”菜單中的“常用處理”選中“亮度調(diào)節(jié)”</p><p> 在顯示出相應(yīng)的功能鍵后,通過載入讀取圖像,比并進(jìn)行處理,效果如下:</p><p><b
32、> 亮度處理前:</b></p><p><b> 亮度處理后:</b></p><p><b> 實(shí)現(xiàn)程序段如下:</b></p><p> % --- Executes on button press in radiobutton12.</p><p> functi
33、on radiobutton12_Callback(hObject, eventdata, handles)</p><p> % hObject handle to radiobutton12 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p
34、><p> % handles structure with handles and user data (see GUIDATA)</p><p> % Hint: get(hObject,'Value') returns toggle state of radiobutton12</p><p><b> global T<
35、;/b></p><p> axes(handles.axes2);</p><p> T=getimage;</p><p> prompt={'調(diào)整倍數(shù)'};</p><p> defans={'1'};</p><p> p=inputdlg(prompt,'
36、;input',1,defans);</p><p> p1=str2num(p{1});</p><p> y=imadjust(handles.img,[ ], [ ],p1); %亮度調(diào)節(jié)</p><p> imshow(y);</p><p> handles.img=y;</p><p
37、> guidata(hObject,handles);</p><p><b> 對比度處理前:</b></p><p> 對比度處理后(增強(qiáng)3倍):</p><p> 對比度減弱1.5倍后:</p><p><b> 實(shí)現(xiàn)程序段如下:</b></p><p>
38、; function uipanel10_SelectionChangeFcn(hObject, eventdata, handles)</p><p> % hObject handle to uipanel10 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of M
39、ATLAB</p><p> % handles structure with handles and user data (see GUIDATA)</p><p><b> global T</b></p><p> str=get(hObject,'string');</p><p>
40、 axes(handles.axes2);</p><p> switch str</p><p><b> case'增強(qiáng)'</b></p><p> T=getimage;</p><p> prompt={'輸入?yún)?shù):'};</p><p> def
41、ans={'1'};</p><p> p=inputdlg(prompt,'input',1,defans);</p><p> p1=str2num(p{1});</p><p> f=immultiply(handles.img,p1); </p><p> imshow(f)
42、;</p><p> handles.img=f;</p><p> guidata(hObject,handles);</p><p><b> case'減弱'</b></p><p> T=getimage;</p><p> prompt={'輸入?yún)?shù):&
43、#39;};</p><p> defans={'1'};</p><p> p=inputdlg(prompt,'input',1,defans);</p><p> p1=str2num(p{1});</p><p> f=imdivide(handles.img,p1);
44、</p><p> imshow(f);</p><p> handles.img=f;</p><p> guidata(hObject,handles);</p><p><b> end</b></p><p> 該程序段主要通過 f=immultiply(handles.img,
45、p1); p=inputdlg(prompt,'input',1,defans);</p><p> 分別實(shí)現(xiàn)圖像對比度的增強(qiáng)與減弱。</p><p> 4.4 用鼠標(biāo)選取圖像感興趣區(qū)域,顯示和保存該選擇區(qū)域。</p><p> 通過imcrop(x)函數(shù)來實(shí)現(xiàn)對圖片某一區(qū)域的截取,截取的圖片在右框中顯示。結(jié)合“保存為…”,可把截圖處理后的圖
46、片保存在指定路徑。</p><p><b> 實(shí)現(xiàn)程序段如下:</b></p><p> % --- Executes on button press in pushbutton1.</p><p> function pushbutton1_Callback(hObject, eventdata, handles)</p>
47、<p> % hObject handle to pushbutton1 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data
48、(see GUIDATA)</p><p><b> global T</b></p><p> axes(handles.axes2);</p><p> T=getimage;</p><p> x=imcrop(handles.img); %截圖</p><p&g
49、t; imshow(x);</p><p> handles.img=x;</p><p> guidata(hObject,handles);</p><p> 4.5 圖像轉(zhuǎn)化為灰度圖像。</p><p> 由于在matlab中較多的圖像處理函數(shù)支持對灰度圖像進(jìn)行處理,故對圖像進(jìn)行灰度轉(zhuǎn)化十分必要。可利用rgb2gray(X)函
50、數(shù)對其他圖像進(jìn)行灰度圖像的轉(zhuǎn)化。</p><p><b> 轉(zhuǎn)化實(shí)例如下:</b></p><p><b> 實(shí)現(xiàn)程序段如下:</b></p><p> % --- Executes on button press in radiobutton16.</p><p> function ra
51、diobutton16_Callback(hObject, eventdata, handles)</p><p> % hObject handle to radiobutton16 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p>
52、<p> % handles structure with handles and user data (see GUIDATA)</p><p> % Hint: get(hObject,'Value') returns toggle state of radiobutton16</p><p><b> global T</b&g
53、t;</p><p> axes(handles.axes2);</p><p> T=getimage;</p><p> x=rgb2gray(handles.img); %RGBͼÏñת»»Îª»Ò¶
54、ÈͼÏñ</p><p> imshow(x);</p><p> handles.img=x;</p><p> guidata(hObject,handles);</p><p> 4.6對圖像進(jìn)行放大和縮小整數(shù)倍的操作。</p><p> 通過imre
55、size(X,n,mode)函數(shù)對圖像X進(jìn)行放大或者縮小。N放大縮小倍數(shù),mode為采用的方式。 </p><p> 通過處理后可發(fā)現(xiàn)保存的圖片的比原圖放大了(縮小了)。</p><p><b> 實(shí)現(xiàn)的程序段如下:</b></p><p> function uipanel9_SelectionChangeFcn(hObje
56、ct, eventdata, handles)</p><p> % hObject handle to uipanel9 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles struct
57、ure with handles and user data (see GUIDATA)</p><p><b> global T</b></p><p> str=get(hObject,'string');</p><p> axes(handles.axes2);</p><p> swi
58、tch str</p><p> case'最近鄰插值'</p><p> T=getimage;</p><p> prompt={'輸入?yún)?shù):'};</p><p> defans={'2'};</p><p> p=inputdlg(prompt,'
59、;input',1,defans);</p><p> p1=str2num(p{1});</p><p> f=imresize(handles.img,p1,'nearest'); </p><p> imshow(f);</p><p> handles.img=f;</p>
60、;<p> guidata(hObject,handles);</p><p> case'雙線性插值'</p><p> T=getimage;</p><p> prompt={'輸入?yún)?shù):'};</p><p> defans={'1'};</p>&
61、lt;p> p=inputdlg(prompt,'input',1,defans);</p><p> p1=str2num(p{1});</p><p> f=imresize(handles.img,p1,'bilinear'); </p><p> imshow(f);</p>
62、<p> handles.img=f;</p><p> guidata(hObject,handles);</p><p><b> end</b></p><p> 4.7圖像直方圖統(tǒng)計(jì)和直方圖均衡。</p><p> (1)通過histeq(X)函數(shù)實(shí)現(xiàn)直方圖均衡。</p>&l
63、t;p> 因?yàn)榇撕瘮?shù)只能對灰度圖像進(jìn)行直方圖均衡。故應(yīng)先將彩圖轉(zhuǎn)為灰度圖像。</p><p> 在上一步的基礎(chǔ)上對第二幅圖進(jìn)行直方圖均衡:</p><p> 直方圖均衡實(shí)現(xiàn)程序段如下:% --- Executes on button press in pushbutton7.</p><p> function pushbutton7_Callbac
64、k(hObject, eventdata, handles)</p><p> % hObject handle to pushbutton7 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles
65、 structure with handles and user data (see GUIDATA)</p><p><b> global T</b></p><p> axes(handles.axes2);</p><p> T=getimage;</p><p> h=histeq(handles
66、.img); </p><p> imshow(h);</p><p> handles.img=h;</p><p> guidata(hObject,handles); </p><p> 關(guān)鍵部分:通過 h=histeq(handles.img)進(jìn)行直方圖均衡 </p><
67、;p> ?。?)直方圖統(tǒng)計(jì)。通過利用imhist(X)函數(shù)來實(shí)現(xiàn)直方圖統(tǒng)計(jì)。</p><p> % --- Executes on button press in pushbutton8.</p><p> function pushbutton8_Callback(hObject, eventdata, handles)</p><p> % hObj
68、ect handle to pushbutton8 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)</
69、p><p> axes(handles.axes2);</p><p> x=imhist(handles.img); %直方圖統(tǒng)計(jì)</p><p> x1=x(1:10:256);</p><p> horz=1:10:256;</p><p> bar(horz,x1);</p><p&
70、gt; axis([0 255 0 15000]);</p><p> set(handles.axes2,'xtick',0:50:255);</p><p> set(handles.axes2,'ytick',0:2000:15000);</p><p> 注意:橫縱坐標(biāo)的范圍應(yīng)選取適當(dāng),否則,統(tǒng)計(jì)圖表有可能超出范圍。&
71、lt;/p><p> 4.8加入各種噪聲,并通過幾種濾波算法實(shí)現(xiàn)去噪。</p><p> (1)加入噪聲。通過imnoise(I,type,parameters)來加入各種噪聲。</p><p><b> 加入椒鹽噪聲</b></p><p><b> 加入高斯噪聲:</b></p>
72、<p><b> 加入乘性噪聲:</b></p><p><b> 實(shí)現(xiàn)程序段如下:</b></p><p> function uipanel4_SelectionChangeFcn(hObject, eventdata, handles)</p><p> % hObject handle
73、to uipanel4 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)</p><p>&
74、lt;b> global T</b></p><p> str=get(hObject,'string');</p><p> axes(handles.axes2);</p><p> switch str</p><p> case '椒鹽噪聲'</p><p
75、> T=getimage; </p><p> prompt={'數(shù)日椒鹽噪聲參數(shù)1:'};</p><p> defans={'0.02'};</p><p> p=inputdlg(prompt,'input',1,defans);</p><p> p1=str2num(p
76、{1});</p><p> f=imnoise(handles.img,'salt & pepper',p1);</p><p> imshow(f);</p><p> handles.img=f;</p><p> guidata(hObject,handles);</p><p>
77、; case '¸高斯噪聲'</p><p> T=getimage;</p><p> prompt={'輸入高斯噪聲1:','輸入高斯噪聲2'};</p><p> defans={'0','0.02'};</p><p> p=input
78、dlg(prompt,'input',1,defans);</p><p> p1=str2num(p{1});</p><p> p2=str2num(p{2});</p><p> f=imnoise(handles.img,'gaussian',p1,p2);</p><p> imshow(f)
79、;</p><p> handles.img=f;</p><p> guidata(hObject,handles); </p><p> case '乘性噪聲'</p><p> T=getimage;</p><p> prompt={'輸入乘性噪聲1:'};<
80、;/p><p> defans={'0.02'};</p><p> p=inputdlg(prompt,'input',1,defans);</p><p> p1=str2num(p{1});</p><p> f=imnoise(handles.img,'speckle',p1);&l
81、t;/p><p> imshow(f);</p><p> handles.img=f;</p><p> guidata(hObject,handles); </p><p><b> end</b></p><p> ?。?)濾除噪聲(椒鹽噪聲)。</p>&l
82、t;p><b> 濾波前</b></p><p><b> 中值濾波后</b></p><p><b> 線性濾波后</b></p><p><b> 自適應(yīng)濾波后</b></p><p><b> 實(shí)現(xiàn)程序段如下:</b&
83、gt;</p><p> function uipanel5_SelectionChangeFcn(hObject, eventdata, handles) %圖像濾波</p><p> % hObject handle to uipanel5 (see GCBO)</p><p> % eventdata reserved - to be de
84、fined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)</p><p><b> global T</b></p><p> str=get(hObject,'strin
85、g');</p><p> axes(handles.axes2);</p><p> switch str</p><p> case '中值濾波'</p><p> T=getimage;</p><p> k=medfilt2(handles.img);</p>&
86、lt;p> imshow(k);</p><p> handles.img=k;</p><p> guidata(hObject,handles);</p><p> case '線性濾波'</p><p> T=getimage;</p><p> h=[1 1 1;1 1 1;1
87、 1 1];</p><p><b> H=h/9;</b></p><p> i=double(handles.img);</p><p> k=convn(i,h);</p><p> imshow(k,[]);</p><p> handles.img=k;</p>
88、<p> guidata(hObject,handles);</p><p> case '自適應(yīng)濾波'</p><p> T=getimage;</p><p> k=wiener2(handles.img,[5,5]);</p><p> imshow(k);</p><p>
89、 handles.img=k;</p><p> guidata(hObject,handles);</p><p><b> end </b></p><p><b> 低通濾波器濾波后</b></p><p><b> 高通濾波器濾波后</b></p>
90、<p><b> 實(shí)現(xiàn)程序如下:</b></p><p> % --- Executes on button press in pushbutton14.</p><p> function pushbutton14_Callback(hObject, eventdata, handles)</p><p> % hObje
91、ct handle to pushbutton14 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)</
92、p><p> axes(handles.axes2);</p><p> y1=handles.img; </p><p> f=double(y1); % 數(shù)據(jù)類型轉(zhuǎn)換,matlab不支持圖像的無符號整型的計(jì)算</p><p> g=fft2(f); % 傅里葉變換</p><p> g
93、=fftshift(g); % 轉(zhuǎn)換數(shù)據(jù)矩陣</p><p> [M,N]=size(g);</p><p> nn=2; %二階巴特沃斯低通濾波器</p><p> d0=50; %截止頻率50</p><p> m=fix(M/2); n=fix(N/2);</p><
94、;p><b> for i=1:M</b></p><p><b> for j=1:N</b></p><p> d=sqrt((i-m)^2+(j-n)^2);</p><p> h=1/(1+0.414*(d/d0)^(2*nn)); % 計(jì)算低通濾波器傳遞函數(shù)</p><p
95、> result(i,j)=h*g(i,j);</p><p><b> end</b></p><p><b> end</b></p><p> result=ifftshift(result);</p><p> y2=ifft2(result);</p><
96、;p> y3=uint8(real(y2));</p><p> imshow(y3); % 顯示處理后的圖像</p><p> % --- Executes on button press in pushbutton15.</p><p> function pushbutton15_C
97、allback(hObject, eventdata, handles)</p><p> % hObject handle to pushbutton15 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> %
98、handles structure with handles and user data (see GUIDATA)</p><p> axes(handles.axes2);</p><p> x=(handles.img);</p><p> f=double(x); % 數(shù)據(jù)類型轉(zhuǎn)換</p
99、><p> k=fft2(f); % 傅里葉變換</p><p> g=fftshift(k); % 轉(zhuǎn)換數(shù)據(jù)矩陣</p><p> [M,N]=size(g);</p><p><b> nn=2;</b
100、></p><p> d0=25; %截止頻率25</p><p> m=fix(M/2); n=fix(N/2);</p><p><b> for i=1:M</b></p><p><b> for j=1:N</b&g
101、t;</p><p> d=sqrt((i-m)^2+(j-n)^2); % 計(jì)算高通濾波器傳遞函數(shù)</p><p><b> if d<=d0</b></p><p><b> h=0;</b></p><p><b> else h=1;</b>
102、</p><p><b> end</b></p><p> result(i,j)=h*g(i,j);</p><p><b> end</b></p><p><b> end</b></p><p> result=ifftshift(r
103、esult);</p><p> y2=ifft2(result);</p><p> y3=uint8(real(y2));</p><p> imshow(y3); % 顯示濾波處理后的圖像</p><p><b> 4.9還原</b></p&
104、gt;<p> 通過一個(gè)全局變量保存原始圖像路徑,在需要還原至原始圖像時(shí),重新讀取該全局變量即可。</p><p><b> 實(shí)現(xiàn)程序段如下:</b></p><p> % --- Executes on button press in pushbutton9.</p><p> function pushbutton9_
105、Callback(hObject, eventdata, handles)</p><p> % hObject handle to pushbutton9 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> %
106、handles structure with handles and user data (see GUIDATA)</p><p> global S %還原</p><p> axes(handles.axes2);</p><p> y=imread(S);</p><p&
107、gt; f=imshow(y);</p><p> handles.img=y;</p><p> guidata(hObject,handles);</p><p><b> 4.10 撤銷。</b></p><p> 撤銷上一步的操作。通過另設(shè)一個(gè)全局變量T保存是上一次操作后的圖像。</p>
108、<p><b> 實(shí)現(xiàn)程序段如下:</b></p><p> --- Executes on button press in pushbutton11.</p><p> function pushbutton11_Callback(hObject, eventdata, handles)</p><p> % hObject
109、 handle to pushbutton11 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)</p&
110、gt;<p> axes(handles.axes2); %撤銷</p><p><b> global T</b></p><p> imshow(T);</p><p> handles.img=T;</p><p> guidata(hObject,handles);</p>
111、;<p> 該程序段只是簡單的顯示圖像的功能,其中全局變量T中儲存的是上一步操作處理后的圖像信息。在以上的各段功能程序段中可見均有 “T=getimage;”,此句把當(dāng)前操作前的圖像,即上一次操作后的圖像信息賦予全局變量T。</p><p> 4.11 圖像變形。</p><p> ?。?)圖像翻轉(zhuǎn)。實(shí)現(xiàn)圖像的鏡像翻轉(zhuǎn)。</p><p><b
112、> 左右翻轉(zhuǎn):</b></p><p><b> 上下翻轉(zhuǎn)</b></p><p><b> 實(shí)現(xiàn)程序如下:</b></p><p> function uipanel7_SelectionChangeFcn(hObject, eventdata, handles) %圖像翻轉(zhuǎn)</p>
113、;<p> % hObject handle to uipanel7 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (
114、see GUIDATA)</p><p> str=get(hObject,'string');</p><p> axes(handles.axes2);</p><p><b> global T</b></p><p> switch str</p><p> ca
115、se '左右翻轉(zhuǎn)'</p><p> T=handles.img;</p><p> f=fliplr(handles.img);</p><p> imshow(f);</p><p> handles.img=f;</p><p> guidata(hObject,handles); &
116、lt;/p><p> case '上下翻轉(zhuǎn)'</p><p> T=handles.img;</p><p> f=flipud(handles.img);</p><p> imshow(f);</p><p> handles.img=f;</p><p> guid
117、ata(hObject,handles); </p><p><b> end</b></p><p> 程序關(guān)鍵部分:通過f=fliplr(handles.img); f=flipud(handles.img);分別實(shí)現(xiàn)左右鏡像翻轉(zhuǎn)與上下鏡像翻轉(zhuǎn)。</p><p><b> ?。?)圖像旋轉(zhuǎn)。</b></p
118、><p> 實(shí)現(xiàn)圖像的逆時(shí)針旋轉(zhuǎn)任意角度。</p><p><b> 實(shí)現(xiàn)程序段如下:</b></p><p> function pushbutton3_Callback(hObject, eventdata, handles) %圖像愛那個(gè)旋轉(zhuǎn)</p><p> % hObject handle
119、to pushbutton3 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)</p><p&g
120、t;<b> global T</b></p><p> axes(handles.axes2);</p><p> T=getimage;</p><p> prompt={'旋轉(zhuǎn)角度:'};</p><p> defans={'0'};</p><p>
121、; p=inputdlg(prompt,'input',1,defans);</p><p> p1=str2num(p{1});</p><p> f=imrotate(handles.img,p1,'bilinear','crop');</p><p> imshow(f);</p><
122、p> handles.img=f;</p><p> guidata(hObject,handles);</p><p> 關(guān)鍵部分:通過p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1}); 來輸入旋轉(zhuǎn)參數(shù)。</p><p> 通過函數(shù)f=imrotate(handles.img
123、,p1,'bilinear','crop');實(shí)現(xiàn)翻轉(zhuǎn)。</p><p><b> 4.12特殊處理</b></p><p> (1)底片效果。將圖像變?yōu)榈灼@示。</p><p><b> 實(shí)現(xiàn)程序如下:</b></p><p> % --- Execu
124、tes on button press in pushbutton12.</p><p> function pushbutton12_Callback(hObject, eventdata, handles)</p><p> % hObject handle to pushbutton12 (see GCBO)</p><p> % eventdat
125、a reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)</p><p><b> global T</b></p><p> axes
126、 (handles.axes2);</p><p> T=getimage;</p><p> f=imcomplement(handles.img); %圖像取反´</p><p> imshow(f);</p><p> handles.img=f;</p><p> guidata(hObj
127、ect,handles);</p><p> 程序段關(guān)鍵部分:通過f=imcomplement(handles.img);實(shí)現(xiàn)圖像取反,形成底片效果。</p><p> ?。?)邊緣信息。采取圖像的邊緣信息。</p><p><b> 實(shí)現(xiàn)程序段如下:</b></p><p> % --- Executes on
128、button press in pushbutton16.</p><p> function pushbutton16_Callback(hObject, eventdata, handles)</p><p> % hObject handle to pushbutton16 (see GCBO)</p><p> % eventdata rese
129、rved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)</p><p><b> global T</b></p><p> axes(handle
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- matlab課程設(shè)計(jì)--圖像處理
- matlab課程設(shè)計(jì)--圖像處理
- matlab課程設(shè)計(jì)圖像處理
- matlab課程設(shè)計(jì)--應(yīng)用圖像處理
- mtalab課程設(shè)計(jì) matlab圖像處理
- matlab圖像處理課程設(shè)計(jì)報(bào)告
- matlab軟件課程設(shè)計(jì)-- 應(yīng)用圖像處理
- 圖像處理課程設(shè)計(jì)--基于matlab的數(shù)字圖像處理
- 基于matlab的圖像處理的課程設(shè)計(jì)
- matlab課程設(shè)計(jì)報(bào)告--matlab gui的音樂鍵盤仿真
- 數(shù)字圖像處理-課程設(shè)計(jì)報(bào)告-matlab
- 基于matlab的圖像處理的課程設(shè)計(jì)
- matlab課程設(shè)計(jì)(基于matlab的圖像處理的基本運(yùn)算)
- 數(shù)字圖像處理課程設(shè)計(jì)--基于matlab的數(shù)字圖像處理
- 圖像處理課程設(shè)計(jì)--應(yīng)用matlab語言編制圖像處理軟件
- matlab課程設(shè)計(jì)報(bào)告-數(shù)字圖像處理研究
- 數(shù)字圖像處理課程設(shè)計(jì)--基于matlab的數(shù)字圖像處理
- matlab課程設(shè)計(jì)報(bào)告---基于matlab_gui_的濾波器設(shè)計(jì)軟件
- 數(shù)字信號處理課程設(shè)計(jì)--基于matlab的數(shù)字圖像處理
- 基于Matlab GUI的醫(yī)學(xué)圖像處理系統(tǒng).pdf
評論
0/150
提交評論