图像边缘检测系统设计Word格式.docx

上传人:b****4 文档编号:13648911 上传时间:2022-10-12 格式:DOCX 页数:13 大小:346.82KB
下载 相关 举报
图像边缘检测系统设计Word格式.docx_第1页
第1页 / 共13页
图像边缘检测系统设计Word格式.docx_第2页
第2页 / 共13页
图像边缘检测系统设计Word格式.docx_第3页
第3页 / 共13页
图像边缘检测系统设计Word格式.docx_第4页
第4页 / 共13页
图像边缘检测系统设计Word格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

图像边缘检测系统设计Word格式.docx

《图像边缘检测系统设计Word格式.docx》由会员分享,可在线阅读,更多相关《图像边缘检测系统设计Word格式.docx(13页珍藏版)》请在冰豆网上搜索。

图像边缘检测系统设计Word格式.docx

图像边缘检测系统设计

完成期限:

自2016年12月5日至2016年12月9日共1周

一、课程设计依据

在掌握数字图像处理基本算法的基础上,利用MATLAB、VC++、Java等编程语言设计具有指定功能的图形用户界面。

二、课程设计容

1、设计一个实现图像边缘检测功能的界面

2、界面可以采用MATLAB、VC++、Java等编程语言设计

3、要求界面能够读入并显示图片,通过各种控件选择并进行图像的边缘检测操作,操作结果在对比窗口中显示

4、图像边缘检测功能至少包括单方向一阶微分检测(水平/垂直方向)、无方向微分检测(Roberts算子、Sobel算子、Prewitt算子、Laplacian算子、LOG算子)等,每项功能可采用一个或多个算法实现

三.课程设计要求

1、要求每个同学独立完成设计任务。

2、课程设计说明书封面格式要求见《课程设计说明书格式要求》。

3、课程设计的说明书要求简洁、通顺,图像表达容完整、清楚、规。

4、课程设计说明书要求:

1)说明题目的设计原理和思路、采用方法及设计流程。

2)可采用图表或文字对图形用户界面各子模块的功能以及各子模块之间的关系做较详细的描述。

3)详细说明代码的编写流程。

4)采用图像及文字详细说明各功能的演示结果。

指导教师(签字):

系主任(签字):

批准日期:

2016年12月1日

第1章总体设计

1.1设计目的

设计一个实现图像边缘检测功能的界面,通过各种控件选择并进行图像的边缘检测操作,操作结果在对比窗口中显示,完成一个简单的图片处理。

1.2设计方案

先通过GUI可视化界面窗口设计一个对用户使用起来相对方便的界面布局,然后针对界面上的每一个控件进行脚本函数的编写,以实现每一个控件的相应功能。

需要实现的功能:

图片的读取与显示,图片的对比显示和存储,彩色图片到灰度图像的转换,图片的各种算子边缘检测并显示(Roberts算子、Sobel算子、Prewitt算子、Laplacian算子、LOG算子等),并增加了退出程序按钮,最终生成一个可执行软件。

软件的总体设计界面布局如图1-1所示,主要分为2个部分:

显示区域与操作区域。

显示区域:

显示载入原图,以及通过处理后的图像。

操作区域:

通过功能键实现对图像的各种处理。

在截图中可见,左部为一系列功能按键有“读取图片”、“二值化”、“灰度化”三个按钮。

界面右部分为图片显示部分,下方有“存储图片”、“退出”功能键。

界面中间方为系列功能切换选择组包括单方向一阶微分检测(水平/垂直方向)、无方向微分检测(Roberts算子、Sobel算子、Prewitt算子、Laplacian算子、LOG算子)等。

图1-1设计界面图

第2章GUI界面设计

2.1启动GUI界面

通过单击MATLAB菜单项“Home”-->

“New”-->

“GraphicalUserInterface”,显示GUI开发环境的启动窗口,也可在命令窗口输入命令:

guide——打开GUIDE启动界面,如下图2-1所示。

弹出GUIDEQuickStart对话框,如图2-2所示。

选择BlankGUI,打开版图编程器如图2-3。

图2-1命令窗口

图2-2GUI启动窗口

图2-3版图编辑器

2.2控件设计

1.button按钮

利用版图编辑器在布局区添加按钮,双击控件调出属性编辑器,对其进行属性设计。

String表示控件的显示信息,Tag表示控件的唯一标识符。

图2-4按钮控件的设置

右击button选择“Callback”选项,定位该控件的回调函数。

如下图所示。

图2-5查看button回调函数

回调函数初始代码:

functionpushbutton3_Callback(hObject,eventdata,handles)

pushbutton3_Callback是按钮的回调函数,Callback函数是当用户每次触发GUI对象时执行的回调函数;

hObject为当前回调函数对应的GUI对象的句柄;

eventdata表示事件代码;

handles为当前GUI所有数据的结构体,包含所有GUI对象的句柄和用户定义的数据。

2.按钮组

为方便编程,采用按钮组进行算法实现,利用版图编辑器的按钮组,添加单选按钮到按钮组。

如图2-6所示。

图2-6按钮组

右击按钮组选择SelectionChangeFcn选项,定位该控件的回调函数,如图2-7所示。

图2-7查看按钮组回调

回调函数初始代码:

functionuipanel1_SelectionChangeFcn(hObject,eventdata,handles),程序代码见附录。

搭建结果界面截图如2-6所示。

图2-8设计界面图

设计完成后运行的软件界面如图2-9所示,点击按钮组里算法选项可看到程序运行结果,程序见附录。

图2-9运行界面图

第3章运行结果及主要程序

3.1边缘检测的步骤及结果

一般来说,边缘检测的算法有如下四个步骤:

1)滤波:

边缘检测算法主要是基于图像增强的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与噪声有关的边缘检测器的性能。

2)增强:

增强边缘的基础是确定图像各点邻域强度的变化值。

增强算法可以将邻域(或局部)强度之有显著变化的点突显出来。

边缘增强一般都是通过计算梯度幅值来完成的。

3)检测:

在图像中有许多点的梯度幅值比较大,而这些点在特定的应用领域中并不都是边缘,所以应该用某种方法来确定哪些是边缘点。

最简单的边缘检测判据是梯度幅值阈值判据。

4)定位:

如果某一应用场合要求确定边缘位置,则边缘的位置可在子像素分辨率上来估计,边缘的方位也可以被估计出来。

图3-1算子运行结果

(1)

图3-2算子运行结果

(2)

1.一阶微分

作为坐标点(x,y)处的灰度倾斜度的一阶微分值,可以用具有大小和方向的向量表示如下:

其中,为x方向的微分,为y方向的微分。

和在数字图像中是用下式计算的:

微分值和被求出后,由以下的公式就能算出边缘的强度与方向。

强度:

或者,方向:

向量的朝向。

2.Roberts算子,边缘定位精度较高,但容易丢失一部分边缘,同时图像没经过平滑处理,所以不具备抑制噪声的能力。

该算子适用于具有陡峭边缘且含噪声少的图像。

3.Sobel算子和Prewitt算子,对噪声具有一定抑制能力,但不能完全排除虚假边缘。

定位效果不错但容易产生多像素边缘。

4.LOG算子,抑制噪声会将尖锐的边缘平滑掉而无法被检测到。

当高斯滤波器宽度参数取值较小时,边缘定位精度高,但图像平滑作用较弱;

增大取值时,又导致模板增大,使边缘位置偏移严重,且运动量增加。

5.Canny算子,当弱边缘和强边缘相连时,才输出弱边缘,检测效果要比LOG算子好。

6.拉普拉斯算子,不依赖于边缘方向的二阶微分算子,定位准确,对噪声非常敏感,使噪声加强,从而使部分信息丢失,造成一些不连续的边缘。

由上可知,算子不同,结果存在明显差异,但是在原始图像上边缘明显的部分都被有效的提取出来了。

Roberts算子检测出的边缘线比较清晰,但噪声大多也同时提取出来了。

对于模糊部分取差分间隔宽的Sobel算子和Prewitt算子似乎有效。

Canny算子可以检测到弱边缘,但受阴影的影响较大。

LoG算子易于强化噪声,更适用于点状物的检测和图像锐化。

3.2主要程序

1.读取图片程序,定义可读取“.jpg.bmp.gif.png”属性的图片,读取图片到axes1坐标轴中显示。

functionpushbutton1_Callback(hObject,eventdata,handles)

globalim

[filename,pathname]=...

uigetfile({'

*.jpg'

;

'

*.bmp'

*.gif'

*.png'

},'

选择图片'

);

str=[pathnamefilename];

im=imread(str);

axes(handles.axes1);

imshow(im);

2.存储图片程序,存储axes2坐标轴的结果图像到自定义路径,可选择存储属性为“.bmp.tif.png”。

functionpushbutton4_Callback(hObject,eventdata,handles)

globalim%定义全局变量

[filename,pathname,filterindex]=...

uiputfile({'

*.tif'

save?

picture'

%存储图片路径

ifisequal(filename,0)||isequal(pathname,0)

return%如果取消操作,返回

elsestr=[pathnamefilename];

%合成路径+文件名

axes(handles.axes2);

%使用第二个axes

im=getimage(handles.axes2);

imwrite(im,str);

%写入图片信息,即保存图片

end

3.关闭窗口程序。

functionpushbutton5_Callback(hObject,eventdata,handles)

close(gcf)%关闭当前Figure窗口句柄

4.按钮组功能,当选择按钮组中不同算法变换时,用switch语句进行算法的选择进行图像变换,显示结果在axes2坐标轴中。

functionuipanel1_SelectionChangeFcn(hObject,eventdata,handles)

[m,n,o]=size(im);

ifo>

1

im=rgb2gray(im);

R=double(im)/255;

else

str=get(hObject,'

string'

axes(handles.axes2);

switchstr

case'

Initial'

imshow(im)

directionX'

a=[-1-2-1;

000;

121]/256;

b=[-101;

-202;

-101]/256;

BW=conv2(im,a,'

same'

BW=abs(BW);

%处理水平方向算子的结果

imshow(BW);

directionY'

BW=conv2(im,b,'

%处理垂直方向算子的结果

directionXY'

BW1=conv2(im,a,'

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1