实验报告学院:地信院班级:生医1101 姓名:学号:指导教师:戴培山,喻罡时间: 2014.7.15数字图像处理实习一.目的1.用MATLAB或其他的语言来实现数字图像处理方面的一些操作;2.熟悉MATLAB7.1的一些基本函数及与数字图像处理相关的函数;3.熟悉图形用户界面(GUI),并用其来编写界面;4.熟悉数字图像处理课程中的一些知识点,如图像灰度变化,直方图,图像增强,滤波,图像复原,形态学处理,图像边缘检测,图像放大和缩小等等,并能用MATLAB实现以上的功能;5.掌握从简单到复杂的方法,一步一步的实现功能,并能耐心排错,养成合作互助精神。
二.任务1.实现图像的打开,显示,保存操作,实现图像的旋转;2.实现图像的灰度变换(图像反转,对数反转,幂次反转);3.实现图像的大小变换;4.实现图像的直方图处理及直方图均衡化;5.实现图像的空域和频域增强,实现均值滤波,维纳滤波,中值滤波及巴特沃斯低通、高通滤波;6.实现图像的加噪,如椒盐噪声、高斯噪声等;7.实现图像的形态学运算,如开运算,闭运算,膨胀运算,腐蚀运算等操作;8.实现图像的边缘检测,如Robert算子边缘检测,Sobel算子边缘检测,Prewitt算子边缘检测,Log 算子边缘检测,Canny算子边缘检测;9.实现整个界面的设计,编排,最终达到一种比较完美的效果。
三.主要内容程序和界面截图设计步骤1启动GUIDE在命令窗口中键入guide,启动GUIDE,显示如下图所示的“GUIDE Quick Start”对话框。
打开“GUIDE Quick Start”对话框,利用GUIDE 模板创建新的GUI,选择一个模板后,单机OK 按钮,在输出编辑器中打开GUI。
如下:2输出编辑器在GUIDE中打开GUI以后,它显示在输出编辑器中。
输出编辑器是所有GUIDE工具的控制面板。
可以通过拖拉控件来设计GUI,这些控件位于输出编辑器左侧的工具箱中,有按钮、弹出式菜单和坐标系等多种。
也可以用输出编辑器设置GUI控件的基本属性。
3菜单编辑器利用菜单编辑器,可以创建、设置、修改下拉式菜单和弹出式菜单。
在GUIDE中单机工具栏上的按钮,或者选择“Tools”菜单中的“Menu Editor…”选项,打开菜单编辑器的界面,如下图所示:上图中左上角第一个按钮用于创建下拉式菜单。
用户可以通过单击它来创建下拉式主菜单。
第二个按钮用于创建下拉式主菜单的子菜单最终GUI菜单栏运行效果图如下:4整体界面设计首次运行后会自动生成Pjimage.m和pjimage.fig两个文件,默认目录设在MATLAB安装目录下的雅丽课设文件夹里,pjimage.m中存放的是GUI的相关编码,以及相关控件的回调函数,今后可以对其进行代码修改,添加,删除等操作,pjimage.fig是GUI的界面文件。
这次课设主要是对pjiamge.m 文件里面代码的相关操作以实现相关功能!模块设计菜单栏各文件下面有相关的子文件。
如下图:灰度变化下的子文件有灰度变换、对数变换和图像反转。
工具栏设计如下:这些图标分别对应于文件打开、保存、图像还原。
数字图像处理其他方法设计,如下图:以及拓展的功能按钮系统各主要功能分析及演示1、文件的打开及保存在主菜单“文件”的下拉菜单中,有个“打开”选项,在其回调函数中添加打开某个文件的相关代码。
图1打开一幅图像后在界面窗口显示在m_file_save_Callback程序的基础上添加如下代码。
[filename, pathname] = uiputfile({'*.bmp','BMP files';'*.jpg;','JPGfiles';'*.tif;','tif files'}, 'Pick an Image');if isequal(filename,0) || isequal(pathname,0)return;elsefpath=fullfile(pathname, filename);¨endimg_src=getappdata(handles.figure_pjimage,'img_src');imwrite(img_src,fpath);准备把当前文件*.tif保存到当前目录下,文件保存对话框中目录下的该文件,保存的文件名和路径名保存到newfile和newpath中。
2图像增强图像增强是数字图像处理的基本内容之一,其目的是根据应用需要突出图像中的某些“有用”的信息,削弱或去除不需要的信息,以达到扩大图像中不同物体特征之间的差别,使处理后的图像对于特定应用而言,比原始图像更合适,或者为图像的信息提取以及其他图像分析技术奠定了基础。
一般情况下,经过增强处理后,图像的视觉效果会发生改变,这种变化意味着图像的视觉效果得到了改善,某些特定信息得到了增强。
输入参数:获得增强图像:3 基本变换大小变换和旋转为几何变换。
几何变换又称为几何运算,它是图像处理和图像分析的重要内容之一。
通过几何运算,可以根据应用的需要使原图像产生大小、形状、和位置等各方面的变化。
简单的说,几何变换可以改变像素点所在的几何位置,以及图像中各物体之间的空间位置关系,这种运算可以被看成是将各物体在图像内移动,特别是图像具有一定的规律性时,一个图像可以由另外一个图像通过几何变换来产生。
实际上,一个不受约束的几何变换,可将输入图像的一个点变换到输出图像中的任意位置。
几何变换不仅提供了产生某些特殊图像的可能,甚至还可以使图像处理程序设计简单化。
从变换性质来分可以分为图像的位置变换、形状变换等。
本次课设,我们主要是为了实现大小变换和图像的旋转1)大小变换原来的图像点击“ok”2)旋转旋转后的图像,可以设置任意角度参数,得到的效果不相同。
4 灰度变化灰度变换是将彩色图像转换为灰度图像,MATLAB把灰度图像存储为一个数据矩阵,该数据矩阵中的元素分别代表了图像中的像素,其直为颜色的灰度值。
大多数情况下,灰度图像很少跟颜色映射表一起保存,但是在显示灰度图像时,MATLAB仍然在后台使用系统预定义的默认的灰度颜色映射表对数变换与图像反转是基于点的图像增强,需要在灰度变换的基础上进行操作。
1)灰度变换前的图像变换后图像2)对数变换后的图像还可以设置其他的参数3)图像反转后的图像(就是图像对比度增强,黑白颜色看起来像互换)5、直方图均衡直方图均衡属于灰度变换增强,灰度变换增强是把对比度弱的图像变成对比度强的图像。
由于各种拍摄条件的限制,导致图像的对比度比较差,图像的直方图分布不够均衡,主要的元素集中在几个像素值附近,通过直方图均衡化,使得图像中各个像素值尽可能均匀分布或者服从一定形式的分布,从而提高图像处理的对比度。
图像的直方图是一个统计像素个数的图形,它统计一副图像中相同像素值的个数,即一幅图像中有多少个像素值为1,有多少个像素值为2,利用图像的直方图对图像进行增强是一种简单有效地方法。
直方图均衡化是将一副图像的像素值均匀地分布在图像的各个区间上,从而使图像的视觉效果得到改善。
在MATLAB中,用于直方图均衡化的函数是histeq。
1)原来的图像和均衡化后的图像2)原来的直方图和均衡化的直方图3.6、图像二值化图像二值化是将原图像转换成二值图像,二值图像只需要一个数据矩阵,每个像素只能取两个灰度值0或者1中的一个。
二值图像可以采用uint8或double类型存储。
7 加噪和滤波数字图像中往往存在各种各样的噪声,噪声使获得的图像的像素值不能反映真实场景亮度的误差。
为了模拟不同方法的去噪效果,MATLAB图像处理工具箱中使用imnoise函数对一幅图像加入不同类型的噪声。
(使用以上的原图加噪,之所以没有用彩色图像是因为只有真彩色图像加噪后才能滤波成功,而真彩色的图像不易寻找)滤波是一种图像增强的技术。
对一幅图像进行滤波可以强调一些特征而去除另外一些特征。
通过图像的滤波可以实现图像的光滑、锐化和边缘检测。
图像滤波是一种领域操作,输出图像的像素值是对输入图像的像素的领域值进行一定的处理而得到的。
线性滤波是指对输入图像的领域进行线性算法操作得到输出图像。
均值滤波是线性滤波,中值滤波和维纳滤波是空间域滤波增强,巴特沃斯则是频率域的图像增强。
A、加噪处理1)椒盐噪声2)高斯噪声3)斑点噪声B、以椒盐噪声为例进行不同类型的滤波处理1)椒盐噪声加噪及均值滤波效果(椒盐噪声参数设置为0.5)2)椒盐噪声加噪及中值滤波效果(0.5)3)椒盐噪声加噪及维纳滤波效果(0.5)4)椒盐噪声加噪及巴特沃斯低通滤波效果(0.5)5)椒盐噪声加噪及巴特沃斯高通滤波效果(0.5)8边缘检测在图像中,边缘是指图像中对象的边界,即反应图像中像素值剧烈变化的曲线。
MATLAB图像处理工具箱使用使用edge函数来检测边界,这个函数寻找像素值剧烈变化的像素点。
edge函数用来求边界的方法很多,其中有roberts,sobel,prewitt,log,canny等。
1)prewitt算子检测后的图像2)sobel算子检测后的图像3)log算子检测后的图像4)canny算子检测后的图像5)roberts算子检测后的图像6)零交叉9 形态学运算形态学运算是由一组形态学的代数运算子组成,是用一定形态的结构元素找到图像中的对应形状以达到图像分割识别的目的,基本操作有腐蚀、膨胀、开运算和闭运算。
腐蚀和膨胀是数学形态学的基本操作,数学形态学的很多操作都是以腐蚀和膨胀为基础推导的算法。
膨胀是将像素加到图像中对象的边缘,而腐蚀是指删除图像中对象的边缘。
开操作是先腐蚀后膨胀,闭操作是先膨胀再腐蚀。
1)膨胀2)腐蚀3)开操作4)闭操作截图功能四:设计过程中遇到的问题及解决方案1 界面设计中遇到的问题在设计界面滚动条的时候,程序代码粘贴上去了,没有错误,但运行之后滚动条上面没有出现数值,查找资料询问他人知道,是因为滚动条上面的static text 的tag属性没有设置,滚动条的该属性也没有设置。
设置之后就运行成功了。
初始弹出的界面框,标题是untitled,查找原因发现是在界面保存的时候没有按照要求命名,这个不能直接更改,可能会出现问题吧,只有先备份一个。
在各种处理方法做好按钮加比较大的框的时候,加完后发现,在已完成的按钮上弹不出callback 界面,试了各种方法,询问了别人,开始的时候是让所有的程序都编写好之后再加框,后来还是不能运行。
最终,当请教别人调程序的时候,被告知框的类型错误,不应该是Bushbutton,而应该是Panel,这样就不会出现错误了。
2 运行的过程中出现的问题最开始运行的时候更改和添加相关程序后,发现图片可以保存,但却不可以打开,通过调试程序,清除界面上的相关图标等方法,发现时保存的界面名称出现了问题。