基于matlab的图像处理》
课程设计。学生姓名: 徐清福。
学号: 110700136
专业班级: 信通一班
指导教师: 郑晓明
二○一零年 4 月 8 日。
目录(二号字体)
一。课程设计目的2
二。课程设计要求2
三。课程设计报告内容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函数读出图像数据,把图像数据赋值给全局变量。
执行效果如下:
如果没有选中任何文件则弹出错误对话框:
保存图像。同样也通过对话框的形式来保存图像数据,通过uigetfile函数选择文件名和路径,用getimage(gca)取出坐标2变换后的图像数据保存到变量i,最后用imwrite函数,把数据i存到指定的文件。
执行后效果图如下:
如果没有保存弹出错误对话框:
退出。程序如下所示:
clc;close all;
close(gcf);
5.2图像的编辑:
灰度。实现rgb图像转换成为灰度图像,如果本来就是灰度图像则不能转化,弹出错误对话框。由于rgb图像是三维图像,所以图像数据是一个三维数组,为了显示灰度图像,把三维图像降为二维,可以只取其中的二维数据,实现方法程序为:
y=( imshow(y);
但是这样的话,根据程序所选的不同,图像数据也不同,显示也就不一样。
另一种方法就是,运用rgb2gray函数实现彩色图像到灰度图像的转换。程序为:
y=rgb2gray(
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=;
defans=;
p=inputdlg(prompt,'input parameter ',1,defans);
但是,这种方法并不能很好的让用户能够对图像进行任意的亮度和对比度变化调整,有时并不事先知道参数的值要多少,也不关心,而是任意调节的,直到满意为止。所以应该用滑动条来调节图像的亮度和对比度,这样更适合用户的使用习惯。
由于imadjust函数有五个参数,所以原则上需要设计五个滑动条来调节对比度,这对用户来说显然比较麻烦,因此在设计的时候固定其中的三个参数,通过调节两个参数的值来改变亮度和对比度。
[0 1],这里的变量和就通过滑动条得到,滑动条设计如下图:
亮度调整的tag名为ld,取值范围0~1,gamma值的tag名为gamma,取值范围为0~5。获取滑动条参数的程序如下:
value');
value');
执行该操作,调节滑动条到上图所示位置,结果如下图。
截图。在matlab中,用函数imcrop实现对图像的剪切操作。该操作剪切的是图像中的一个矩形子图,用户可以通过参数指定这个矩形四个顶点的坐标,也可以交互地用鼠标选取这个矩形。
imcrop函数的调用格式如下:
y=imcrop(
不管是三维的还是二维数据,该函数都能进行操作。下图就是对图像的截图:
缩放功能。在matlab中,用函数imresize来实现对图像的放大或缩小。插值方法可选用三种方法,最近邻插值,双线性插值,双三次插值。
该函数的调用格式如下:
b=imresize(a,m,method)
其中:参数method用于指定插值的方法,可选的值为“nearest”(最近邻法),“bilinear”(双线性插值)、“bicubic”(双三次插值),缺省值为“nearest”。
b=imresizee(a.m,method)表示返回原图a的m倍放大图像(m小于1时实际上是缩小);
放大后的效果图不是很明显,但是缩小后的效果就比较明显了:
5.3旋转功能。
上下旋**函数flipud是实现一个二维矩阵的上下翻转,如。
a=[1 2;3 4],经过该函数处理后,原矩阵变为[3 4;1 2];所以利用该函数也可以对图像进行上下翻转处理,但由于该函数针对二维数据的处理,所以在写程序时,要对rgb图像和灰度图像分开处理,这就要用到isrgb函数来判断,如果是灰度图像,则可以直接用这个函数进行处理,否则就要对rgb图像进行降维处理,
for k=1:3
y(:,k)=flipud(x(:,k));
end执行后的效果如上图所示。
左右旋转。对图像的左右翻转也可以用fliplr函数来处理,同样的,也要对灰度和彩色图像分开处理,处理结果如图:
任意角度的旋转。
5.4加入和去除噪声。
经常用到的噪声有三种,高斯噪声,椒盐噪声,乘性噪声,可以通过以下三个函数来实现:
y=imnoise('gaussian',p1,p2);%高斯噪声。
y=imnoise(x,'salt & pepper',p1椒盐噪声。
y=imnoise('speckle',p1); 乘性噪声。
p1,p2的参数也通过输入对话框的形式得到,原图加入高斯噪声后结果如下所示:
5.5直方图统计。
用imhist函数对图像数据进行直方图统计,x=imhist(
MATLAB课程设计报告
2 整流电路 2.1 单相半波可控整流系统。2.1.1 晶闸管元件的符号和 模型。晶闸管是一种可以通过门极信号触发导通的半导体器件。晶闸管 模型由一个电阻r 一个电感l 一个直流电压源v,和一个开关串联组成。开关受逻辑信号控制,该逻辑信号由电压 电流和门极触发信号 g 决定。晶闸管元件的符号和 模型...
matlab课程设计报告
matlab 软件的使用。姓名 专业 通信技术 班级 通技102 学号 指导老师 史兆强 时间 2013 01 04 用mtlab编程实现句柄图形应用。摘要 本文利用mtlab的算法设计和程序设计的原理和方法,着重介绍了句柄图形的实际运用。根据提出的实际问题,即画出沿曲线移动的小球,给出具体句柄图形...
matlab课程设计报告
1.设火箭的射程在其它条件基本相同时与燃料种类及推进器型号有关。现在考虑4种不同的燃料及3种不同型号的推进器,对于每种搭配各发 火箭两次,得数据见表1。问各自变量和自变量的交互效应是否对火箭的射程有显著影响?表1 燃料 推进器 射程数据表。matlab程序 a 58.2 52.6 49.1 42.8...