《MATLAB课程实践》
(在三组题目中任选一组)
题目1:基于MATLAB的图像处理的课程设计
—制作自己的Photoshop
1 课程设计的目的:
综合运用MATLAB工具箱实现图像处理的GUI程序设计。
2 课程设计的基本要求
1)熟悉和掌握MATLAB 程序设计方法
2)掌握MATLAB GUI 程序设计
3)学习和熟悉MATLAB图像处理工具箱
4)学会运用MATLAB工具箱对图像进行处理和分析
3 课程设计的内容
学习MATLAB GUI程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop 。要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给
出设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。
以下列出几点程序的功能,供参考:
1)图像的读取和保存。
2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。
3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域。
4)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存,比较几种插值的效果。
5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。
6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。比较去噪效果。
4 课程设计报告要求
完成课程设计任务后,应按要求提交课程设计报告。设计报告应包含如下几个方面的内容。
① 课程设计目的。
② 课程设计要求。
③ 程序需求和功能模块分析。
④ 详细设计过程,详细阐述如何实现具体操作,必要时画出流程图分析,附上关键程序代码。
⑤调试和结果分析,贴图比较各图像处理的结果,分析。
⑥ 体会。
⑦ 附录(放源代码)和参考资料。
5 参考书目:
1 《MATLAB实用教程》 郑阿奇 电子工业出版社
2 《数字图像处理 MATLAB 版》冈莎雷斯 电子工业出版社
题目2:基于MATLAB的数字信号处理的课程设计
1 课程设计的目的
综合运用MATLAB工具箱实现信号处理的GUI程序设计。
2 课程设计的基本要求
1)熟悉和掌握MATLAB 程序设计方法
2)掌握MATLAB GUI 程序设计
3)学习和熟悉MATLAB信号处理工具箱
4)学会运用MATLAB工具箱对信号进行处理和分析
3 课程设计的内容
要求利用MATLAB GUI设计实现信号处理的图形用户界面,利用MATLAB信号处理工具箱实现ECG信号的分析。
要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。
以下列出几点是程序功能,供参考。
1) ECG信号的读取和显示
2) ECG信号的频谱分析
3) ECG信号的功率谱分析
4) ECG信号基线漂移的中值滤除
5) ECG信号的滤波器选择和滤波
4 课程设计报告要求
完成课程设计任务后,应按要求提交课程设计报告。设计报告应包含如下几个方面的内容。
① 课程设计目的。
② 课程设计要求。
③ 程序需求和功能模块分析。
④ 详细设计过程,详细阐述算法实现说明,画出流程图分析,并附上关键程序代码。
⑤ 调试和结果分析,贴图比较各图像处理的结果,分析。
⑥ 体会。
⑦ 附录(放源代码)和参考资料。
5 参考书目:
1 《MATLAB实用教程》 郑阿奇 电子工业出版社
2 《生物医学信号处理》 刘海龙 化学工业出版社
3 《应用MATLAB实现信号分析和处理》 张明照等 科学出版社
题目3:基于MATLAB GUI的成绩管理系统
1 课程设计的目的:
运用MATLAB实现MATLAB的GUI程序设计。
2 课程设计的基本要求
1)熟悉和掌握MATLAB 程序设计方法。
2)掌握MATLAB GUI 程序设计。
3)掌握MATLAB文件读写方法。
3 课程设计的内容
学习MATLAB GUI程序设计,设计和实现一个成绩管理系统。要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。
以下几点是程序的功能,供参考。
1)成绩的录入和保存
2)成绩的多种查询方法(如按照学号,姓名,科目等)
3)成绩统计和排序。
4 课程设计报告要求
完成课程设计任务后,应按要求提交课程设计报告。设计报告应包含如下几个方面的内容。
① 课程设计目的。
② 课程设计要求。
③ 程序需求和功能模块分析。详细阐述数据结构。
④ 详细设计过程,详细阐述如何实现具体操作,必要时画出流程图分析,附上关键程序代码。
⑤ 调试和结果分析,贴图比较各图像处理的结果,分析。
⑥ 体会。
⑦ 附录(放源代码)和参考资料。
5 参考书目:
1 《MATLAB实用教程》 郑阿奇 电子工业出版社
基于MATLAB的图像处理的课程设计
一、课程设计的目的:
综合运用MATLAB工具箱实现图像处理的GUI程序设计。
二、课程设计的基本要求
1)认识和把握MATLAB 程序设计方法
2)把握MATLAB GUI 程序设计
3)认识MATLAB图像处理工具箱
4)学会运用MATLAB工具箱对图像进行处理和分析
三、课程设计的内容
要求利用MATLAB GUI设计实现图像处理的图形用户界面,利用MATLAB图像处理工具箱实现以下的图像处理功能:
双击打开MATLAB 7.0→File→New→GUI→单击,调整axes1大小→单击OK,调
整按钮大小和颜色,修改名称→再建axes2→单击OK,调整按钮大小和颜色,修改名称→保存→View→M-file Edit→写程序
1)图像的读取和保存。
在function open_Callback(hobject eventdata handles)后面输入如下程序
[namepath]=uigetfile('*.*''');
file=[pathname];
axes(handles.axes1);
x=imread(file); %读取图像
handles.img=x;
guidata(hobject handles);
imshow(x); %显示图像
title('210593225 •打开');
在function save_Callback(hobject eventdata handles)后面输入如下程序
[namepath]=uigetfile('*.*''');
file=[pathname];
axes(handles.axes1);
x=imread(file);
handles.img=x;
guidata(hobject handles);
imshow(x);
imwrite(x'new.jpg'); %保存图像
title('210593225 保存');
2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。
在function liangdu_Callback(hobject eventdata handles) 后面输入如下程序
axes(handles.axes2);
x=(handles.img);
y=imadjust(x[0.15 0.9] [0 1]); %增亮图像
imshow(y);
title('210593225 亮度')
在function huidu_Callback(hobject eventdata handles) 后面输入如下程序
axes(handles.axes2);
x=rgb2gray(handles.img); %RGB图像转换为灰度图像
imshow(x);
title('210593225 灰度')
3)设计图形用户界面,让用户能够用鼠标选取图像感爱好区域,显示和保存该选择区域。
在function cut_Callback(hobject eventdata handles)后面输入如下程序
axes(handles.axes2);
x=imcrop(handles.img); %截图
imshow(x);
imwrite(x'cut.jpg'); %保存图像
title('210593225 截图');
4)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存,比较几种插值的效果。
在function nearfangda_Callback(hobject eventdata handles) 后面输入如下程序
axes(handles.axes2);
x=imresize(handles.img2'nearest'); %最近邻插值法放大
imshow(x);
imwrite(x'nearfangda.jpg')
title('210593225 最近邻插值法放大');
在function nearsuoxiao_Callback(hob ject eventdata handles) 后面输入如下程序
axes(handles.axes2);
x=imresize(handles.img0.5'nearest'); %最近邻插值法缩小
imshow(x);
imwrite(x'nearsuoxiao.jpg')
title('210593225 最近邻插值法缩小');
在function doublefangda_Callback(hobject eventdata handles) 后面输入如下程序
axes(handles.axes2);
x=imresize(handles.img5'bilinear'); %双线性插值法放大图像
imshow(x);
imwrite(x'doublefangda.jpg');
title('210593225 •双线性插值法放大');
在function doublesuoxiao_Callback(hobject eventdata handles) 后面输入如下程序
axes(handles.axes2);
x=imresize(handles.img0.5'bilinear'); %双线性插值法缩小图像
imshow(x);
imwrite(x'doublesuoxiao.jpg');
title('210593225 •双线性插值法缩小');
5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。
在function zhifangtu_Callback(hobject eventdata handles) 后面输入如下程序
set(handles.axes2'HandleVisibility''ON');
axes(handles.axes2);
x=imhist(handles.img); %直方图统计
x1=x(1:10:256);
horz=1:10:256;
bar(horzx1);
%axis([0 255 0 150000]);
set(handles.axes2'xtick'0:50:255);
%set(handles.axes2'ytick'0:2000:15000);
set(handles.axes2'HandleVisibility''OFF');
在function junheng_Callback(hobject eventdata handles) 后面输入如下程序
set(handles.axes2'HandleVisibility''ON');
axes(handles.axes2);
h=histeq(handles.img); %直方图均衡
imshow(h);
%set(handles.axes2'ytick'0:2000:15000);
set(handles.axes2'HandleVisibility''OFF');
6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。比较去噪效果。
在function gaussian_Callback(hobject eventdata handles) 后面输入如下程序
axes(handles.axes2);
x=(handles.img);
y=imnoise(x'gaussian'00.05); %加高斯噪声
imshow(y);
imwrite(y'gaussian.jpg');
title('210593225 加高斯噪声')
在function salt_Callback(hobject eventdata handles) 后面输入如下程序
axes(handles.axes2);
x=(handles.img);
y=imnoise(x'salt &pepper'0.04); %加椒盐噪声
imshow(y);
imwrite(y'salt.jpg');
title('210593225 加椒盐噪声')
在function medfilt_Callback(hobject eventdata handles) 后面输入如下程序
axes(handles.axes2);
x=(handles.img);
y=imnoise(x'salt &pepper'0.04); %加椒盐噪声
z=medfilt2(y[5 5]'symmetric'); %中值滤波
imshow(z);
imwrite(z'medfilt.jpg');
title('210593225 中值滤波');
在function wiener_Callback(hobject eventdata handles) 后面输入如下程序
axes(handles.axes2);
x=(handles.img);
y=imnoise(x'gaussian'00.05); %加高斯噪声
z=wiener2(y[5 5]); %自适应滤波
imshow(z);
imwrite(z'wiener.jpg');
title('210593225 自适应滤波')
7)频谱处理,能够分析图像频谱,显示频谱图。
在function pinputu_Callback(hobject eventdata handles) 后面输入如下程序
axes(handles.axes2);
x=(handles.img);
J2=fft2(x); %傅立叶变换
K2=fftshift(J2); %转换数据矩阵
imshow(log(abs(K2))[]); %显示频谱图
title('210593225 频谱图');
8)设计巴特沃斯低通滤波对图像进行低通滤波处理,显示结果。
在function butterdi_Callback(hobject eventdata handles) 后面输入如下程序
axes(handles.axes2);
x=(handles.img);
y1=imnoise(x'salt &pepper'); % 叠加椒盐噪声
f=double(y1); % 数据类型转换,MATLAB不支持图像的无符号整型的计算
g=fft2(f); % 傅立叶变换
g=fftshift(g); % 转换数据矩阵
[MN]=size(g);
nn=2; % 二阶巴特沃斯(Butterworth)低通滤波器
d0=50; %截止频率为50
m=fix(M/2); n=fix(N/2);
for i=1:M
for j=1:N
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn)); % 计算低通滤波器传递函数
result(ij)=h*g(ij);
end
end
result=ifftshift(result);
y2=ifft2(result);
y3=uint8(real(y2));
imshow(y3); % 显示滤波处理后的图像
imwrite(y3'butterdi.jpg');
title('210593225 •巴特沃斯低通滤波')
9)设计高斯高通虑波器,显示结果。
axes(handles.axes2);
x=(handles.img);
y1=imnoise(x'gaussian'); %加高斯噪声
f=double(y1); % 数据类型转换
k=fft2(f); % 傅立叶变换
g=fftshift(k); % 转换数据矩阵
[MN]=size(g);
nn=2;
d0=25; %截止频率为25
m=fix(M/2); n=fix(N/2);
for i=1:M
for j=1:N
d=sqrt((i-m)^2+(j-n)^2); % 计算高通滤波器传递函数
if d