《基于MATLAB的图像处理》
课程设计
学生姓名: 徐清福
学 号: 110700136
专业班级: 信通一班
指导教师: 郑晓明
二○一零 年 4 月 8 日
目 录(二号字体)
一.课程设计目的…………………………………………………2
二.课程设计要求…………………………………………………2
三.img文件如何打开课程设计报告内容……………………………………………2
四.程序需求和模块分析…………………………………………2
五.详细设计过程…………………………………………………3
六.调试及分析……………………………………………………16
七.心得体会………………………………………………………17
八.附录……………………………………………………………18
九.参考文献………………………………………………………34
课程设计的内容如下:
一.课程设计目的
综合运用MATLAB工具箱实现图像处理的GUI程序设计。
二.课程设计题目描述和要求
1)熟悉和掌握MATLAB 程序设计方法
2)掌握MATLAB GUI 程序设计
3)学习和熟悉MATLAB图像处理工具箱
4)学会运用MATLAB工具箱对图像进行处理和分析
三.课程设计报告内容
学习MATLAB GUI程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop 。要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。
1)图像的读取和保存。
2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。
3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域。
4)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存,比较几种插值的效果。
5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。
6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。比较去噪效果。
四. 程序需求和功能模块分析
在设计过程中出满足了一般的数字图像处理功能。例如读取图像、保存图像、图像的旋转变换、加噪声去噪声、彩图像直方图统计、频谱分析、灰度图像处理和彩图像的颜转换模型等基本功能。本设计还加入了边沿检测和用滑动条控制图像的亮度和gamma值等功能。在菜单栏中还加入了快捷键功能。
由于作者的水平有限,实现的功能不是很多,而且都是一般的功能;
(1)、将一个RGB图像转换为灰度图像。
(2)、可以对图像做各种变换,如旋转等。
(3)、有时并不需要图像显示其细节部分,只要其轮廓,这时候不要很高的灰度级。可以把图像转换为二值图像,进行图像腐蚀,或是创建索引图像等。
(4)、分析一个图像的频谱特征,利用傅里叶变换,将图像从空间域变换到频域,然后进行各种处理,经过高通滤波器或是低通滤波器。
(5)、为了科学地定量描述和使用颜,人们提出了各种颜模型,按用途可分为三类:计算颜模型,视觉颜模型和工业颜模型。有时为了不同的需要,要对颜模型进行转换。
设计完成后的基本效果图如下:
五. 详细设计过程
5.1图像的读取、保存和退出
打开:
为了让使用者更方便的使用,所以在设计的时候,通过对话框的形式来选择文件,选择uigetfile函数来实现,uigetfile函数显示一个打开文件对话框,该对话框自动列出当前路径下的目录和文件,由于这个GUI程序的操作对象是图像文件,设计为可以读取任何格式的图像。
Uigetfile函数的调用格式为[name,path]=yigetfile(…), 在按下对话框中的执行按钮“打开”后,返回选择的文件名和路径,分别保存到“name”和“path”中。如果按下取消按钮或是发生错误,则返回值是0。 根据返回值的情况,如果是0,则弹出提示错误的对话框,否则,通过imread函数读出图像数据,把图像数据赋值给全局变量handles.img。
执行效果如下:
如果没有选中任何文件则弹出错误对话框:
保存图像
同样也通过对话框的形式来保存图像数据,通过uigetfile函数选择文件名和路径,用getimage(gca)取出坐标2变换后的图像数据保存到变量i,最后用imwrite函数,把数据i存到指定的文件。
执行后效果图如下:
如果没有保存弹出错误对话框:
退出
程序如下所示:
clc;
close all;
close(gcf);
5.2图像的编辑:
灰度
实现RGB图像转换成为灰度图像,如果本来就是灰度图像则不能转化,弹出错误对话框。由于RGB图像是三维图像,所以图像数据是一个三维数组,为了显示灰度图像,把三维图像降为二维,可以只取其中的二维数据,实现方法程序为:
y=(handles.img(:,:,1));
imshow(y);
但是这样的话,根据程序所选的不同,图像数据也不同,显示也就不一样。
另一种方法就是,运用rgb2gray函数实现彩图像到灰度图像的转换。程序为:
y=rgb2gray(handles.img);
imshow(y);
这个程序只能用于RGB图像转换灰度图像,当原始图像本来就是灰度图像时,运行该程序时就会出错,但是使用者在使用时有时并不知道这些,为了使该程序更加完善,应该在使用者原先图像时灰度图像时使用该功能时,应该要显示提示类信息。
执行效果如下:
如果读入的是灰度图像,则弹出错误对话框:
亮度和gamma值调整
用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={'input parameter1',''input parameter 2','input gamma'};
defans={'[0 0.7]','[0 1]','1'};
p=inputdlg(prompt,'input parameter ',1,defans);
但是,这种方法并不能很好的让用户能够对图像进行任意的亮度和对比度变化调整,有时并不事先知道参数的值要多少,也不关心,而是任意调节的,直到满意为止。所以应该用滑动条来调节图像的亮度和对比度,这样更适合用户的使用习惯。
由于imadjust函数有五个参数,所以原则上需要设计五个滑动条来调节对比度,这对用户来说显然比较麻烦,因此在设计的时候固定其中的三个参数,通过调节两个参数的值来改变亮度和对比度。
[0 handles.beta],[0 1],,这里的变量handles.beta和就通过滑动条得到,滑动条设计如下图:
亮度调整的tag名为ld,取值范围0~1,gamma值的tag名为gamma,取值范围为0~5。获取滑动条参数的程序如下:
handles.beta=get(handles.ld,'value');
=get(handles.gamma,'value');
执行该操作,调节滑动条到上图所示位置,结果如下图
截图
在MATLAB中,用函数imcrop实现对图像的剪切操作。该操作剪切的是图像中的一个矩形子图,用户可以通过参数指定这个矩形四个顶点的坐标,也可以交互地用鼠标选取这个矩形。
Imcrop函数的调用格式如下:
y=imcrop(handles.img);
不管handles.img是三维的还是二维数据,该函数都能进行操作。下图就是对图像的截图:
缩放功能
在MATLAB中,用函数imresize来实现对图像的放大或缩小。插值方法可选用三种方法,最近邻插值,双线性插值,双三次插值。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论