摘 要

在边缘检测是图像处理和计算机视觉中的基本问题,它的目的是标识出数字图像中亮度变化明显的点。图像经过边沿检测处理之后,不仅大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。

事实上,边缘存在于图像的不规则结构和不平稳现象中,也即存在于信号的突变点处,这些点给出了图像轮廓的位置。这些轮廓常常是我们在图像边缘检测时,所需要的非常重要的一些特征条件,这就需要我们对一幅图像检测并提取出它的边缘。

可用于图像边缘检测和轮廓提取的方法有很多,其中包括有常见的Robert 边缘算子、Prewitt 边缘算子、Sobel 边缘算子等等。本文首先将会从数字图像处理的角度,对几种边缘检测算法进行详细的分析,然后会并选择其中一种边缘检测算法进行实验。考虑到以后进一步的学习,本文将会使用MATLAB对算法进行实现。最后,本文将会把实验获得的实际效果,与理论分析的结果进行比对,并以此对本次实验进行总结。

关键字:边缘检测 轮廓提取 图像处理 matlab

1. 设计的内容与结构

1.1 研究内容

本文就数字图像的边缘检测算法研究主要介绍了五种方法,分别为:Robert算子,Laplacian算子,Prewitt算子,Canny算子以及Sobel算子的“中心思想”以及实现方法、适用范围。除此之外还设计了简单的GUI界面,GUI界面可以使五种算法达到的效果对比更条理清楚,更直观的体现出五种算法的特点以及优劣。最后将五种算法程序融入到整个系统中,经过优化,调试程序以达到最佳效果。确保数据采集准确快速且运行稳定。最后总结了五种方法所实现的边缘检测效果、优缺点。

1.2 结构

第一章主要是此次引言还有介绍下毕设的主要研究内容;

第二章主要是对此次所需要用到的Matlab软件做个简单的介绍,然后再介绍图像处理的基本理论以及人机交互界面GUI的简单设计;

第三章主要是对系统进行分析然后再设计,介绍系统实行的方式和每个模块的主要成分;

第四章则是介绍如何实现此次系统设计,并做一个完整的结果展示;

第五章是对整个设计做个总结,对本次论文设计这些日子以来的工作发展与设计成果以及还存在的问题一一做个介绍,之后就是本次论文的所参考的一些文献等,本次论文的章节结构大致如此。

2. 系统分析与设计

目前,图像边缘检测技术已经广泛的应用于卫星,导航,监控等系统中,本设计由五种算法组成:Robert算子,Laplacian算子,Prewitt算子,Canny算子以及Sobel算子。如下图,它的设计框图2-1:

1.先将原图输入进系统,分别利用Robert算子,Laplacian算子,Prewitt算子,Canny算子以及Sobel算子五种算子进行边缘检测;

2.接着再显示五种算法下边缘检测前后的效果图;

3.观察五种算法下边缘检测的增强效果

图像边缘是图像最基本的特征,边缘在图像分析中起着重要的用。所谓边缘(edge)是指图像局部特征的不连续性。灰度或结构信息的突变称为边缘,例如:灰度级的突变、颜色的突变、纹理结的突变。边缘是一个区域的结束,也是另一个区域的开始,利用该征可以分割图像。 当人们看一个有边缘 的物体时,首先感觉到的便是边缘,如

一条理想的边缘应该具有如图2.1(a) 所示模型的特性。每个像素都处在灰度级跃变的一个垂直的台阶上(例如图形中所示的水平线通过图像的灰度剖面图)。 而实际上,诸如图像采集系统的性能、采样频率和获得图像的照明条件等因素的影响,得到的边缘往往是模糊的,边缘被模拟成具有“斜坡面”的剖面,如图2.1(b) 所示,在这个模型中不再有细线(宽为一个像素的线条),而是出现了边缘的点包含斜坡中任意点的情况。由此可以看到:模糊的边缘使边缘的“宽度”较大,面清晰的边缘使边缘的宽度较小。图像的边缘有方向的幅度两个属性,沿边缘方向像素变化平缓,垂直于边缘方向像素变化剧烈。边缘上的这种变化可以用微分算子检测出来,通常用一阶导数或二阶导数来检测边缘,不同的是一阶导数认为最大值对应边缘位,而二阶导数以过零点对应边缘位置。实际上,对于图像中的任意方向上的边缘都可以进行类似的分析。图像边缘检测中对任意点的一阶导数可以利用该点梯度的幅度来获得,二阶导数可以用拉普拉斯算子得到。

3. 整个边缘检测系统的实现

本章将主要介绍系统的运行环境与编译工具,还有核心代码的主要功能以及程序架构等。

3.1 系统运行环境与开发的工具

1.系统运行环境

硬件部分:计算机;

软件部分:windows 7,以及Matlab2010以上版本软件;

2.开发编译工具

软件的选择会对系统的开发速率与开发周期都起着至关重要的作用,毕设要求的是基于Mablab的系统设计,使用合适的软件也会在很大程度上提高开发的效率,并有效降低研究的成本,后期的系统维护也能较好的运行。此次毕设的研究课题算是一种比较复杂的图像处理的程序,但是我此次选取得开发工具刚好在这方面占据较大的优势,其丰富的函数种类与工具箱都十分利于对图像的研究。

3.2 程序的基本结构

本图像边缘检测处理程序具有人机交互界面GUI,主程序是MyDip.fig,通过界面的方式,制作一个菜单,来选择不同算子进行图像的边缘检测。

3.3 系统功能实现

3.3.1 界面GUI的设计

整个设计的人机交互界面GUI需要人性化,并且突出边缘检测前后图像的对比,可以在界面灵活地选取不同算法。设计草图如图4-1所示。

3.3.2 GUI界面的制作

该人机交互界面GUI,具有界面友好,容易操作等特征。首先打开matalb软件,在命令窗口command window输入guide,并且敲击回车键,进入matlab GUI快速打开方式窗口。出现如下图:

点击OK确定,进入GUI编辑界面窗口。

       在设计上,拉动2个大小完全相同的Axes方框,用于分别放置边缘检测图像前后对比图像,以达到直观对比效果。界面上制作一个菜单的打开按钮,用于打开选择所要边缘检测处理的图像,句柄内填充以下代码以实现功能。
[filename, pathname] = uigetfile({'*.bmp';'*.jpg';'*.jpeg'},'Pick an image-file');if isequal(filename,0) | isequal(pathname,0)disp('User pressed cancel');elsedisp(['User selected ', fullfile(pathname, filename)])end
x=imread(filename);
[width,height,Cnums]=size(x);
a=log2(width);
b=log2(height);axes(handles.axes2);
imshow(zeros([256,256]));if (Cnums~=1)if (width>256)|(height>256)W=max(width,height);else W=256; endfor m=1:Wfor n=1:W         if (m<=width)&(n<=height)extendx(m,n,:)=x(m,n,:);elseextendx(m,n,:)=realmax;endendendaxes(handles.axes1);imshow(extendx);handles.rgb=x;msgbox('Please transform it to a gray image or it can not be processed correctly','fileopening','warning');
elseif (width>256)|(height>256)W=max(width,height);for m=1:Wfor n=1:Wif (m<=width)&(n<=height)extendx(m,n)=x(m,n);elseextendx(m,n)=realmax;endendendaxes(handles.axes1);imshow(extendx);msgbox('The height or width is larger than 256 or they are both larger than 256!','fileopening','warning')elseif (width<256)|(height<256)for m=1:256for n=1:256if (m<=width)&(n<=height)extendx(m,n)=x(m,n);elseextendx(m,n)=realmax;endendendaxes(handles.axes1);imshow(extendx);msgbox('The height or width is less than 256 or they are both less than 256!','fileopening','warning');elseaxes(handles.axes1);imshow(x);
end
handles.imdata=x;
handles.reload=handles.imdata;
guidata(hObject, handles);

打开的实现功能如下:

在算法选择上,也是利用菜单的下拉按钮pushbutton的形式实现,如下图:

另外,为了从本质上解释图像边缘检测达到效果的原因,特别在GUI界面上设计了2个大小完全一样的axes,用于呈现边缘检测前后两图像的灰度直方图。通过bitton按钮以实现显示直方图。实现的代码如下:

if isequal(handles.Img1, 0)msgbox('请载入原图像!', '提示信息');return;
end
if isequal(handles.Img2, 0)msgbox('请进行边缘检测处理!', '提示信息');return;
end

3.3.3 运行效果示意图

robert图像边缘检测运行截图
Laplacian图像边缘检测运行截图
prewitt图像边缘检测运行截图

matlab图像中提取不连续的点_MATLAB边缘检测GUI设计相关推荐

  1. 利用matlab提取水印,怎么在含有水印的图像中提取出水印

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 %水印嵌入代码 M = 256;%原始图像长度 N = 32; %水印图像长度 K = 8; I = zeros(M, M); J = zeros(N, ...

  2. matlab实现图片区水印,怎么在含有水印的图像中提取出水印

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 %水印嵌入代码 M = 256;%原始图像长度 N = 32; %水印图像长度 K = 8; I = zeros(M, M); J = zeros(N, ...

  3. matlab手动抠取圆形区域_图像中提取圆形子区域matlab code

    图像中提取圆形区域子图像 在图像中提取矩形区域非常容易,应用冒号表达式即可: 例如: IMG_Out=IMG_In(300:400,400:700); 就可以轻松提取到图像中100*300大小矩形区域 ...

  4. matlab图像水印,怎么在含有水印的图像中提取出水印

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 %水印嵌入代码 M = 256;%原始图像长度 N = 32; %水印图像长度 K = 8; I = zeros(M, M); J = zeros(N, ...

  5. 从单一图像中提取文档图像:ICCV2019论文解读

    从单一图像中提取文档图像:ICCV2019论文解读 DewarpNet: Single-Image Document Unwarping With Stacked 3D and 2D Regressi ...

  6. ITK:在一幅图像中提取感兴趣区域ROI

    ITK:在一幅图像中提取感兴趣区域ROI 内容提要 输出结果 C++实现代码 内容提要 在给定图像中提取给定的关注区域(ROI) 输出结果 C++实现代码 #include "itkImag ...

  7. ITK:从二进制图像中提取最大的连接组件

    ITK:从二进制图像中提取最大的连接组件 内容提要 输入 输出 C++实现代码 内容提要 从二进制图像中提取最大的连接组件 输入 输出 输出: Number of objects: 3 C++实现代码

  8. ITK:从图像中提取轮廓

    ITK:从图像中提取轮廓 内容提要 输出结果 C++实现代码 内容提要 从图像中提取轮廓. 输出结果 There are 2 contoursContour 0: [10.5, 19] [10.460 ...

  9. 使用OpenCV和Python从图像中提取形状

    Welcome to the first post in this series of blogs on extracting features from images using OpenCV an ...

最新文章

  1. C++ 共用体union 的使用
  2. INDEX FULL SCAN和INDEX FAST FULL SCAN的区别
  3. 转 AIX7.2+11.2.0.4RAC实施
  4. 机器人学习--双目视觉测距
  5. 简洁!get请求和post请求的区别——Web网络系列学习笔记
  6. /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found错误的解决
  7. puppeteer 鼠标定位滑块_监听滑块滑动或滑块随鼠标移动 | JShare
  8. linux18.2安装界面,Ubuntu 18.10下安装Grub Customizer 5.1.0配置grub2图形化界面
  9. UVA455 - Periodic Strings
  10. Skywalking-09:OAL原理——如何通过动态生成的Class类保存数据
  11. 机械学哪种计算机语言,对于机器学习,到底该选择哪种编程语言?
  12. html研究中心,新媒体研究中心.html
  13. android仿微信选择器同时展示视频和图片
  14. 计算机无法连接到wifi但手机可以使用,电脑连不上wifi而手机能连怎么办
  15. 【懒懒的Tensorflow学习笔记一之快速入门】
  16. 移动端h5头像上传、头像裁切、上传图片
  17. QQ群、讨论组上传文件,由于网络原因上传失败?
  18. 2022第三届全国大学生网络安全精英赛练习题(1)
  19. mount命令使用详解
  20. 世界上到处都是有才华的穷人_15位年轻有才华的设计师

热门文章

  1. PCL——从PCD文件中读取点云数据
  2. CPU的内部架构和工作原理
  3. webpack——文件和图片打包
  4. 物联网测试正面临四大难关
  5. c语言定义一个strcmp函数,定义一个strcmp函数实现两个字符串比较,函数原型为int strcmp(char * p1,...
  6. 脚本清理maven项目打包残留文件,节省磁盘空间
  7. iF.SVNAdmin
  8. 第4章 Selenium2-java WebDriver API (三)
  9. 【PowerShell】PS中 the fuck 插件(PoShFuck)将 wtf 搜索引擎从 Google 改为 Baidu 或者 Bing
  10. 国家一级计算机考试选择题题库,计算机一级考试选择题题库与答案2016