
一、课程设计的目的
综合运用MATLAB工具箱实现图像处理的GUI程序设计。
二、课程设计的基本要求
1)熟悉和掌握MATLAB程序设计方法
2)掌握MATLAB GUI程序设计
3)熟悉MATLAB图像处理工具箱
4)学会运用MATLAB工具箱对图像进行处理和分析
三、课程设计的内容
要求利用MATLAB GUI设计实现图像处理的图形用户界面,利用MATLAB图像处理工具箱实现以下的图像处理功能:
双击打开MATLAB 7.0——File——New——GUI——单击axes1按钮——调整axes1大小——单击OK按钮——调整按钮大小和颜色,修改名称。
1)运行结果预览。
2)软件说明
1.打开、保存:
本软件可以打开(OPEN)任意路径的图像文件,并可将处理后的图像保存(SAVE)在任意路径。
2.原图:
本软件可以显示原始图像(原图),以方便对其进行其他图像处理。
3.截图:
本软件可以截取(截图)原图以及处理后的图像的任意区域,并可将其保存在任意路径,同时还可对其进行处理(缩放与亮度除外)与保存。
4.灰度:
本软件可以将RGB图像显示为灰度图像。
5.亮度:
本软件可以调整原始图像的亮度。
6.缩放:
本软件可以对原始图像进行最邻近插值法和双线性插值法两种方法的缩放,放大倍数最大为3,缩小倍数最小为0.1.
7.直方图与直方图均衡:
本软件可以对原始图像进行直方图统计和直方图均衡。
8.噪声与滤波:
本软件可以对原始图像进行加噪(高斯、椒盐)处理,与滤波(中值、自适应)处理,并可累计加噪与滤波。
3)图像的读取和保存
读取图片:
保存图片:
4)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。
变暗图像:
变亮图像:
灰度图像:
5)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域。
截图:
6)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存,比较几种插值的效果。
最邻近插值法缩小一倍:
双线性插值法缩小一倍:
最邻近插值法放大1.5倍:
双线性插值法放大1.5倍:
结论:双线性插值法缩放的效果比最邻近插值法的效果好些,但其处理时间也要长些。
7)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。
直方图:
直方图均衡:
6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果,比较去噪效果。
加高斯噪声:
加高斯噪声后中值滤波:
加高斯噪声后自适应滤波:
加椒盐噪声:
加椒盐噪声后中值滤波:
加椒盐噪声后自适应滤波:
结论:对高斯噪声或椒盐噪声的滤波处理,中值滤波的效果比自适应滤波的效果好些,但会使图像变得模糊。
四、详细代码
1.function varargout = KCSJ(varargin)
2.% KCSJ M-file for KCSJ.fig
3.
4.
5.%
6.
7.
8.%
9.
10.
11.%
12.
13.
14.
15.
16.
17.%
18.
19.
20.%
21.% See also: GUIDE, GUIDATA, GUIHANDLES
22.
23.% Copyright 2002-2003 The MathWorks, Inc.
24.
25.% Edit the above text to modify the response to help KCSJ
26.
27.% Last Modified by GUIDE v2.5 16-Oct-2011 11:56:10
28.
29.% Begin initialization code - DO NOT EDIT
30.gui_Singleton = 1;
31.
32.
33.
34.
35.
36. 'gui_Callback', []);
37.if nargin && ischar(varargin{1})
38.
39.end
40.
41.if nargout
42.
43.else
44.
45.end
46.% End initialization code - DO NOT EDIT
47.
48.
49.% --- Executes just before KCSJ is made visible.
50.function KCSJ_OpeningFcn(hObject, eventdata, handles, varargin)
51.% This function has no output args, see OutputFcn.
52.
53.% eventdata reserved - to be defined in a future version of MATLAB
54.
55.
56.
57.% Choose default command line output for KCSJ
58.handles.output = hObject;
59.
60.% Update handles structure
61.guidata(hObject, handles);
62.
63.% UIWAIT makes KCSJ wait for user response (see UIRESUME)
.% uiwait(handles.figure1);
65.
66.
67.% --- Outputs from this function are returned to the command line.
68.function varargout = KCSJ_OutputFcn(hObject, eventdata, handles)
69.% varargout cell array for returning output args (see VARARGOUT);
70.
71.% eventdata reserved - to be defined in a future version of MATLAB
72.
73.
74.% Get default command line output from handles structure
75.varargout{1} = handles.output;
76.
77.%-------------------------------------------------------------------------
78.% --- Executes on button press in OPEN.
79.function OPEN_Callback(hObject, eventdata, handles)
80.
81.% eventdata reserved - to be defined in a future version of MATLAB
82.
83.
84.file=[path,name];
85.x=imread(file); %
86.handles.img=x;
87.guidata(hObject,handles);
88.
.global G;
90.G=x;
91.
92.%-------------------------------------------------------------------------
93.% --- Executes on button press in pushbutton2.
94.function SAVE_Callback(hObject, eventdata, handles)
95.
96.% eventdata reserved - to be defined in a future version of MATLAB
97.
98.
99.file=[path,name];
100.global G;
101.
102.
103.
104.%-------------------------------------------------------------------------
105.% --- Executes on button press in YuanTu.
106.function YuanTu_Callback(hObject, eventdata, handles)
107.
108.% eventdata reserved - to be defined in a future version of MATLAB
109.
110.x=handles.img;
111.imshow(x);title('原始图像');
112.global G;
113.G=x;
114.
115.%--------------------------------------------------------------------------
116.% --- Executes on button press in pushbutton3.
117.function LiangDu_Callback(hObject, eventdata, handles)
118.
119.% eventdata reserved - to be defined in a future version of MATLAB
120.
121.v=get(handles.slider1,'Visible');
122.if strcmp(v,'on');
123.
124.else strcmp(v,'off');
125.
126.end
127.set(handles.slider1,'Visible',v);
128.set(handles.text1,'Visible',v);
129.
130.
131.% --- Executes on slider movement.
132.function slider1_Callback(hObject, eventdata, handles)
133.
134.% eventdata reserved - to be defined in a future version of MATLAB
135.
136.% Hints: get(hObject,'Value') returns position of slider
137.
138.x=handles.img;
139.s=size(x);
140.a=uint8(ones(s(1),s(2),s(3)));
141.v=get(handles.slider1,'Value');
142.str=sprintf('%d',v);
143.set(handles.text1,'String',str);
144.if v>=1
145.
146.else
147.
148.end
149.imshow(y);
150.global G;
151.G=y;
152.
153.% --- Executes during object creation, after setting all properties.
154.function slider1_CreateFcn(hObject, eventdata, handles)
155.
156.% eventdata reserved - to be defined in a future version of MATLAB
157.
158.% Hint: slider controls usually have a light gray background, change
159.
160.usewhitebg = 1;
161.if usewhitebg
162.
163.else
1.
165.end
166.
167.%--------------------------------------------------------------------------
168.% --- Executes on button press in pushbutton4.
169.function HuiDu_Callback(hObject, eventdata, handles)
170.
171.% eventdata reserved - to be defined in a future version of MATLAB
172.
173.global G;
174.x=G;
175.x=rgb2gray(x); %RGB__
176.imshow(x);
177.global G;
178.G=x;
179.
180.
181.%-------------------------------------------------------------------------
182.% --- Executes on button press in JieTu.
183.function JieTu_Callback(hObject, eventdata, handles)
184.
185.% eventdata reserved - to be defined in a future version of MATLAB
186.
187.global G;
188.x=G;
1.x=imcrop(x);
190.
191.file=[path,name];
192.imwrite(x,file,'jpg');
193.imshow(x);
194.global G;
195.G=x;
196.
197.%-------------------------------------------------------------------------
198.% --- Executes on button press in NearSuoFang.
199.function NearSuoFang_Callback(hObject, eventdata, handles)
200.
201.% eventdata reserved - to be defined in a future version of MATLAB
202.
203.v=get(handles.slider2NSF,'Visible');
204.if strcmp(v,'on');
205.
206.else strcmp(v,'off');
207.
208.end
209.set(handles.slider2NSF,'Visible',v);
210.set(handles.text2,'Visible',v);
211.
212.
213.%----------------------------------------------------------------------
214.% --- Executes on slider movement.
215.function slider2NSF_Callback(hObject, eventdata, handles)
216.
217.% eventdata reserved - to be defined in a future version of MATLAB
218.
219.% Hints: get(hObject,'Value') returns position of slider
220.
221.v=get(handles.slider2NSF,'Value');
222.if v>=1
223.
224.end
225.str=sprintf('%.2f',v);
226.set(handles.text2,'String',str);
227.x=handles.img;
228.x=imresize(x,v,'nearest'); %
229.imshow(x);
230.global G;
231.G=x;
232.
233.
234.% --- Executes during object creation, after setting all properties.
235.function slider2NSF_CreateFcn(hObject, eventdata, handles)
236.
237.% eventdata reserved - to be defined in a future version of MATLAB
238.
239.% Hint: slider controls usually have a light gray background, change
240.
241.usewhitebg = 1;
242.if usewhitebg
243.
244.else
245.
246.end
247.
248.
249.%------------------------------------------------------------------------
250.% --- Executes on button press in DoubleSuoFang.
251.function DoubleSuoFang_Callback(hObject, eventdata, handles)
252.
253.% eventdata reserved - to be defined in a future version of MATLAB
254.
255.v=get(handles.slider3DSF,'Visible');
256.if strcmp(v,'on');
257.
258.else strcmp(v,'off');
259.
260.end
261.set(handles.slider3DSF,'Visible',v);
262.set(handles.text3,'Visible',v);
263.
2.%--------------------------------------------------------------------------
265.% --- Executes on slider movement.
266.function slider3DSF_Callback(hObject, eventdata, handles)
267.
268.% eventdata reserved - to be defined in a future version of MATLAB
269.
270.% Hints: get(hObject,'Value') returns position of slider
271.
272.v=get(handles.slider3DSF,'Value');
273.if v>=1
274.
275.end
276.str=sprintf('%.2f',v);
277.set(handles.text3,'String',str);
278.x=handles.img;
279.x=imresize(x,v,'bilinear'); %
280.imshow(x);
281.global G;
282.G=x;
283.
284.
285.% --- Executes during object creation, after setting all properties.
286.function slider3DSF_CreateFcn(hObject, eventdata, handles)
287.
288.% eventdata reserved - to be defined in a future version of MATLAB
2.
290.
291.% Hint: slider controls usually have a light gray background, change
292.
293.usewhitebg = 1;
294.if usewhitebg
295.
296.else
297.
298.end
299.
300.%------------------------------------------------------------------------
301.% --- Executes on button press in ZhiFangTu.
302.function ZhiFangTu_Callback(hObject, eventdata, handles)
303.
304.% eventdata reserved - to be defined in a future version of MATLAB
305.
306.x=handles.img;
307.x=imhist(handles.img(:,:));
308.x1=x(1:10:256);
309.horz=1:10:256;
310.B=bar(horz,x1);
311.set(handles.axes1,'XTick',0:50:255);
312.
313.
314.
315.%------------------------------------------------------------------------
316.% --- Executes on button press in JunHeng.
317.function JunHeng_Callback(hObject, eventdata, handles)
318.
319.% eventdata reserved - to be defined in a future version of MATLAB
320.
321.x=handles.img;
322.x=rgb2gray(x);
323.h=histeq(x(:,:));
324.imshow(h);
325.global G;
326.G=h;
327.
328.
329.%-----------------------------------------------------------------------
330.% --- Executes on button press in Gaussian.
331.function Gaussian_Callback(hObject, eventdata, handles)
332.
333.% eventdata reserved - to be defined in a future version of MATLAB
334.
335.global G;
336.x=G;
337.y=imnoise(x,'gaussian',0,0.05);
338.imshow(y);
339.global G;
340.G=y;
341.
342.
343.%------------------------------------------------------------------------
344.% --- Executes on button press in JiaoYan.
345.function JiaoYan_Callback(hObject, eventdata, handles)
346.
347.% eventdata reserved - to be defined in a future version of MATLAB
348.
349.global G;
350.x=G;
351.y=imnoise(x,'salt & pepper',0.08);
352.imshow(y);
353.global G;
354.G=y;
355.
356.
357.%------------------------------------------------------------------------
358.% --- Executes on button press in Medfilt.
359.function Medfilt_Callback(hObject, eventdata, handles)
360.
361.% eventdata reserved - to be defined in a future version of MATLAB
362.
363.global G;
3.x=G;
365.for i=1:3
366.z(:,:,i)=medfilt2(x(:,:,i),[5 5],'symmetric');
367.end
368.imshow(z);
369.global G;
370.G=z;
371.
372.
373.
374.%--------------------------------------------------------------------------
375.% --- Executes on button press in Wiener.
376.function Wiener_Callback(hObject, eventdata, handles)
377.
378.% eventdata reserved - to be defined in a future version of MATLAB
379.
380.global G;
381.x=G;
382.for i=1:3
383.z(:,:,i)=wiener2(x(:,:,i),[3 3]);
384.end
385.imshow(z);
386.global G;
387.G=z;
388.
3.
