没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
23页
学习MATLAB GUI程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop 。要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。 以下几点是程序必须实现的功能。 1)图像的读取和保存。 2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。 3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域。 4)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存,比较几种插值的效果。 5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。 6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。比较去噪效果。
资源推荐
资源详情
资源评论
1
基于 MATLAB 的图像处理的课程设计
摘要:
数字图像处理技术是 20 世纪 60 年代发展起来的一门新兴学科,随着图像处
理理论和方法的进一步完善,使得数字图像处理技术在各个领域得到了广泛应用,
并显示出广阔的应用前景。MATLAB 既是一种直观、高效的计算机语言,同时又
是一个科学计算平台。它为数据分析和数据可视化、算法和应用程序开发提供了
最核心的数学和高级图形工具。根据它提供的 500 多个数学和工程函数,工程技
术人员和科学工作者可以在它的集成环境中交互或编程以完成各自的计算。
MATLAB 中集成了功能强大的图像处理工具箱。由于 MATLAB 语言的语法特
征与 C 语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写
格式,而且这种语言可移植性好、可扩展性强,再加上其中有丰富的图像处理函
数,所以 MATLAB 在图像处理的应用中具有很大的优势。
关键词:MATLAB,数字图像处理
一、课程设计目的
综合运用 MATLAB 工具箱实现图像处理的 GUI 程序设计。
二、课程设计要求
1)熟悉和掌握 MATLAB 程序设计方法
2)掌握 MATLAB GUI 程序设计
3)学习和熟悉 MATLAB 图像处理工具箱
4)学会运用 MATLAB 工具箱对图像进行处理和分析
三、课程设计的内容
学习 MATLAB GUI 程序设计,利用 MATLAB 图像处理工具箱,设计和实现自己的
Photoshop 。要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设
计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。
以下几点是程序必须实现的功能。
1)图像的读取和保存。
2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和
对比变换前后的图像。
3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区
域。
4)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和
缩小整数倍的操作,并保存,比较几种插值的效果。
5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。
6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。比较去噪效果。
四、题目分析
信息化社会中,计算机在各种信息处理中发挥着重要的作用。我们可以借助计算机,
对数字图像进行处理,以达到不同的效果。根据题目的要求,除了实现要求的功能外,还有
2
很多的功能需要用到。
(1)、将一个 RGB 图像转换为灰度图像。
(2)、可以对图像做各种变换,如旋转等。
(3)、有时并不需要图像显示其细节部分,只要其轮廓,这时候不要很高的灰度级。可以把
图像转换为二值图像,进行图像腐蚀,或是创建索引图像等。
(4)、分析一个图像的频谱特征,利用傅里叶变换,将图像从空间域变换到频域,然后进行
各种处理,经过高通滤波器或是低通滤波器。
(5)、为了科学地定量描述和使用颜色,人们提出了各种颜色模型,按用途可分为三类:计
算颜色模型,视觉颜色模型和工业颜色模型。有时为了不同的需要,要对颜色模型进行转换。
五、总体设计
由于要实现的功能并不是很多,所以在排版的过程中,把各个功能都安排
在目录栏上,整体安排如下图所示:
同时在调节亮度时,虽然可以同对话框的形式输入调节的比例系数,但是
这样效果不好了,不容易调节,因此这里考虑用滚动条来调节。因此,总体的
设计界面如下图所示:
3
六、具体设计
6.1、 文件
6.1.1、打开
为了让使用者更方便的使用,所以在设计的时候,通过对话框的形式来选择
文件,选择 uigetfile 函数来实现,uigetfile 函数显示一个打开文件对话框,该对
话框自动列出当前路径下的目录和文件,由于这个 GUI 程序的操作对象是图像
文件,所以设置这里的缺省后缀名为“.bmp”。
Uigetfile 函数的调用格式为[name,path]=yigetfile(…), 在按下对话框中的执
行按钮“打开”后,返回选择的文件名和路径,分别保存到“name”和“path”
中。如果按下取消按钮或是发生错误,则返回值是 0。 根据返回值的情况,如
果是 0,则弹出提示错误的对话框,否则,通过 imread 函数读出图像数据,把图
像数据赋值给全局变量 handles.img。
6.1.2、保存
同样也通过对话框的形式来保存图像数据,通过 uigetfile 函数选择文件名和
路径,用 getimage(gca)取出坐标 2 变换后的图像数据保存到变量 i,最后用
imwrite 函数,把数据 i 存到指定的文件。
6.1.3、退出
退出比较简单,程序如下所示:
clc;
close all;
close(gcf);
6.2、 编辑
6.2.1、灰度
由于 RGB 图像是三维图像,所以图像数据是一个三维数组,为了显示灰度
图像,把三维图像降为二维,可以只取其中的二维数据,实现方法程序为:
y=(handles.img(:,:,1)); %当然也可以选择(:,:,2) 或(:,:,3)����
imshow(y);
但是这样的话,根据程序所选的不同,图像数据也不同,显示也就不一样。
另一种方法就是,运用 rgb2gray 函数实现彩色图像到灰度图像的转换。程
序为:
y=rgb2gray(handles.img); �����
imshow(y);
这个程序只能用于 RGB 图像转换灰度图像,当原始图像本来就是灰度图像
时,运行该程序时就会出错,但是使用者在使用时有时并不知道这些,为了使该
程序更加完善,应该在使用者原先图像时灰度图像时使用该功能时,应该要显示
提示类信息。所以在开始时应该要有一个 RGB 图像或是灰度图像的判断过程。
完整的程序如下:
if isrgb(handles.img)
y=rgb2gray(handles.img); �����
imshow(y);
else
msgbox('这已经是灰度图像','转换失败');
end
4
如果原图是RGB,执行该操作的结果如下图:
如果原图本身已经是灰度图像了,执行该操作弹出如
右图所示的提示对话框
6.2.2、亮度
用 imadjust 函数,其调用格式如下:
g=imadust(f,[low_in high_in],[low_out high_out]),gamma)
gamma 表示映射性质,默认值是1 表示线性映射。
由于该函数有五个参数需要输入,为了方便用户改变,所
以这里设计一个输入对话框,用户通过对话框把五个参数赋
值给[low_in high_in],[low_out high_out],gamma 这五个参数,
如下一组命令建立了如图所示的输入对话框:
prompt={'输入参数 1','输入参数 2','输入 gamma'};
defans={'[0 0.7]','[0 1]','1'};
p=inputdlg(prompt,'输入参数',1,defans);
但是,这种方法并不能很好的让用户能够对图像进行任意
的亮度和对比度变化调整,有时并不事先知道参数的值要多
少,也不关心,而是任意调节的,直到满意为止。所以应该用
滑动条来调节图像的亮度和对比度,这样更适合用户的使用习惯。
由于 imadjust 函数有五个参数,所以原则上需要设计五个滑动条来调节对比
度,这对用户来说显然比较麻烦,因此在设计的时候固定其中的三个参数,通过
调节两个参数的值来改变亮度和对比度。
[0 handles.beta],[0 1],handles.gm,这里的变量 handles.beta 和 handles.gm 就
通过滑动条得到,滑动条设计如下图:
亮度调整的 tag 名为 ld,取值范围 0~1,gamma 值的 tag 名为 gamma,取值
范围为 0~5。获取滑动条参数的程序如下:
5
handles.beta=get(handles.ld,'value');
handles.gm=get(handles.gamma,'value');
执行该操作,调节滑动条到上图所示位置,结果如下图:
6.2.3、截图
在 MATLAB 中,用函数 imcrop 实现对图像的剪切操作。该操作剪切的是图
像中的一个矩形子图,用户可以通过参数指定这个矩形四个顶点的坐标,也可以
交互地用鼠标选取这个矩形。
Imcrop 函数的调用格式如下:
y=imcrop(handles.img);
不管 handles.img 是三维的还是二维数据,该函数都能进行操作。下图就是
对三维图像的截图:
6.2.4、缩放
在 MATLAB 中,用函数 imresize 来实现对图像的放大或缩小。插值方法可
选用三种方法,最近邻插值,双线性插值,双三次插值。
该函数的调用格式如下:
B=imresize(A,m,method)
其中:
参数 method 用于指定插 值 的方 法 ,可选 的 值为“ nearest”( 最近 邻 法),
“bilinear”(双线性插值)、“bicubic”(双三次插值),缺省值为“nearest”。
B=imresizee(A.m,method)表示返回原图 A 的 m 倍放大图像(m 小
于 1 时实际上是缩小);
下图就是采用邻近插值法的放大和缩小图像,参数值保持默认设置:
剩余22页未读,继续阅读
资源评论
等天晴i
- 粉丝: 3541
- 资源: 10万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功