MATLAB图像边缘提取系统设计
一、设计依据
在掌握数字图像处理基本算法的基础上,利用MATLAB、VC++、Python等编程语言设计具有指定功能的图形用户界面。
二、设计内容
1、设计一个实现图像边缘提取功能的界面
2、界面可以采用MATLAB等编程语言设计
3、要求界面能够读入并显示图片,通过各种控件选择并进行图像的边缘检测和提取操作,操作结果在对比窗口中显示
4、图像边缘检测和提取功能至少包括单方向一阶微分检测(水平/垂直方向)、无方向微分检测(Roberts算子、Sobel算子、Prewitt算子、Laplacian算子、LOG算子)等,每项功能可采用一个或多个算法实现
目 录
第一章 设计方案 1
1.1 设计目的 1
1.2 设计要求 1
1.3 设计方案 1
第二章 原理介绍 3
2.1 算法简介 3
2.2 控件设计 4
2.2.1 按钮控件 4
2.2.2 弹出式菜单控件 4
第三章 功能实现 5
第四章 设计结果与分析 8
4.1 边缘提取 8
4.2 结果分析 8
总结 9
参考文献 10
附录 11
程序代码 11
第一章 设计方案
1.1设计目的
本学期开设了数字图像处理的课程,在课上老师讲解了图像的基本知识,介绍了图像处理的一些算法,为了检验对于知识的掌握以及锻炼实用能力,使用相应编程语言实现对于一副图像的处理。
1.2设计要求
设计一个实现图像边缘提取功能的界面,编程实现对于图像的读入和显示,并通过各种控件对读入的图像进行处理,实现边缘检测和提取效果,图像边缘检测和提取功能至少包括单方向一阶微分检测(水平/垂直方向)、无方向微分检测(Roberts算子、Sobel算子、Prewitt算子、Laplacian算子、LoG算子)等,每项功能可采用一个或多个算法实现。
1.3设计方案
我们使用MATLAB进行设计实现,先在电脑上安装好MATLAB。然后通过GUI可视化界面设计出一个简单布局,添加各种控件,来实现相应功能。用到的控件有:按钮控件(用来实现添加图像和退出操作)、弹出式菜单控件(用来选择不同的图像处理方法)、坐标轴控件(用来展示图像)、面板控件(用来把一类控件放置在一起)。
首先要把外部的一幅图像读入到界面中并显示出来,这个是最基本的,然后对图像进行灰度化处理得到灰度图像,在灰度图像的基础上进行各种处理,我们按照要求设计了对图像的一阶微分检测和无方向检测,这两部分放在两个面板中。其中无方向检测我们添加了Sobel、Canny、LoG、Roberts、Prewitt这些算法来实现。在MATLAB工具箱中提供了用于边缘提取的edge()函数,由edge()函数可以实现各算子对图像边缘的提取。除此之外,我们还在界面当中添加了图像增强功能,分为均值滤波处理和伪彩色处理。最后在界面中加入了退出按钮,实现了退出操作。界面展示如图1-1所示:
图1-1 设计界面
第二章 原理介绍
2.1算法简介
得益于MATLAB这个软件提供了强大的功能,各种算法都已经集成在其库中,因此我们需要了解的是对于这些算法函数的调用。要对一幅彩色图像进行边缘提取,先对其进行灰度化处理比较好,为此我们使用到了rgb2gray()函数,rgb2gray()是MATLAB内部一种处理图像的函数,通过消除图像色调和饱和度信息同时保留亮度实现将RGB图像或彩色图转换为灰度图像,即灰度化处理的功能,调用这个功能的格式是:I = rgb2gray(RGB),意思是将真彩色图像RGB转换为灰度强度图像I。灰度化处理有多种处理方式:分量法、最大法、平均法、加权平均法,Matlab 中采用的是对R、G、B分量进行加权平均的算法:0.2989R+ 0.5870G + 0.1140B。
Sobel算子:该算子是像素图像边缘检测中最重要的算子之一,在机器学习、数字媒体、计算机视觉等信息科技领域起着举足轻重的作用。在技术上,它是一个离散的一阶差分算子,用来计算图像亮度函数的一阶梯度之近似值。在图像的任何一点使用此算子,将会产生该点对应的梯度矢量或是其法矢量。该算子包含两组3×3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。如果以A代表原始图像,Gx及Gy分别代表经横向及纵向