数字图像边缘检测算法设计与实现_第1页
数字图像边缘检测算法设计与实现_第2页
数字图像边缘检测算法设计与实现_第3页
数字图像边缘检测算法设计与实现_第4页
数字图像边缘检测算法设计与实现_第5页
免费预览已结束,剩余20页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科毕业论文 设计 创作 题 目 数字图像边缘检测算法设计与实现 学生姓名 学号 0231002045 所在院系 信息与通信技术系 专业 电子信息工程 入学时间 2010 年 9 月 导师姓名 职称 学位 讲师 博士 导师所在单位 完成时间 2014 年 5 月 安徽三联学院教务处 制 安徽三联学院毕业论文 0 数字图像边缘检测算法设计与实现 摘 要 图像有很多最基本的特征 边缘是其中之一 所以图像处理的主要内容 中也有图像的边缘检测 图像的边缘检测也是图像测量技术中的热点 本篇论 文是来研究图像边缘检测 图像处理技术已经有很广阔的应用域 图像的边缘 检测最主要的意思是将图像的边缘提取出来 本文首先简要的介绍了什么是边 缘检测 和边缘检测的一些基本知识和原理 然后回顾了一些经典的边缘检测 算法 最后在已有的经典算法基础上进行编程仿真来提取图像的边缘 关键词 图像处理 边缘检测 Hough 变换 轮廓跟踪 安徽三联学院毕业论文 1 Design and implementation the algorithm of digital image edge detection Abstract Images have a lot of the most basic features edge is one of them So the image edge detection is one of the main content for image processing the image edge detection has been the hot point in image measurement technology This paper is to study the image edge detection Image processing technology has very broad application field The main mean of image edge detection is to detect image edge In this article first briefly introduced what is edge detection and some basic knowledge and principle of edge detection Then reviews some of the classical edge detection algorithm Finally extracting image edge programming simulation on the basis of the existing classic algorithms Key words Image Processing Edge Detection Hough manipulation contour tracing 安徽三联学院毕业论文设计 目 录 第一章第一章 绪论绪论 1 1 1 1 课程设计选题的背景及意义 1 1 2 图像边缘检测的发展现状 1 第二章第二章 边缘检测有关知识点边缘检测有关知识点 2 2 2 1 边缘检测算法的分类 2 2 2 边缘检测基本步骤 2 2 3 边缘检测算法评价标准 3 第三章第三章 一些经典的边缘检测算子的原理介绍一些经典的边缘检测算子的原理介绍 5 5 3 1 Roberts 边缘检测算子 5 3 2 Prewitt 算子 5 3 3 Kirsch 算子 6 第四章第四章 图像边缘检测相关程算法和程序图像边缘检测相关程算法和程序 7 7 4 1 Hough 变换 7 4 2 轮廓提取 9 4 4 轮廓跟踪 14 第五章第五章 程序调式仿真程序调式仿真 1818 5 1 MATLAB 简介 18 结论结论 1919 致谢致谢 2020 参考文献参考文献 2121 安徽三联学院毕业论文设计 0 第一章 绪论 我们日常生活和工作中获取和交换信息的来源主要是图像 所以图像处理 技术涉及到我们生活的方方面面 数字图像处理技术的发展涉及计算机科学 数学 信息技术等科学 也因此与边缘相关的学科对图像处理技术的发展有着 很大的影响 随着多年的发展 图像处理技术被运用到很多高科技领域 1 1 课程设计选题的背景及意义 所谓边缘 是指图像中灰度发生急剧变化的区域 或者说是指周围像素灰 度有阶跃变化或屋顶变化的那些像素的集合 1 在对图像处理研究中 图像 图 形的处理 包括数字图像的处理 储存等是主要的工作 多媒体技术 计算机 视觉和计算机模式识别已经逐渐地应用在日常生活中 2 一个区域的终结和另 一个区域的开始就是边缘 边缘普遍存在于目标与背景 目标与目标 区域与 区域 基元与基元之间 图像分割所依赖的重要特征就是边缘 纹理特征的重 要信息源和形状特征的基础是边缘 有了图像边缘 物体的几何尺寸可以确定 基于有了边缘 并进一步对其测量 物体在空间中的几何位置可以确定 物体 的形状特征被确定并对物体进行识别 图像的边缘信息在图像分析和计算机视 觉中图像的边缘信息很重要 图像识别中提取图像特征的一个重要属性是边缘 即使它在数字图像处理中有很重要的作用 1 2 图像边缘检测的发展现状 图像的边缘检测有着很长的研究历史 学术思想非常活跃 不断涌现新理 论 新方法 一直是国内外图像处理领域研究的热点一直是图像的边缘检测 现今许多方法和理论己经被提出 目前为止提出的关于边缘检测的方法和理论 依然存在不足的地方 在某些具体情况下依然无法很好的检测出目标物体的边 缘在某些具体情况下 所以 根据具体的应用要求设计新的边缘检测方法根据 具体的应用 或者对现有的方法进行改进以达到满意的结果 研究的主流方向 依然是这些依然是 安徽三联学院毕业论文设计 1 第二章 边缘检测有关知识点 2 1 边缘检测算法的分类 随着图像处理技术的发展和多种学科在数字图像处理领域的融合交叉 多 种多样的边缘检测算法不断出现 目前 边缘检测方法含有算子法 曲面拟合 法 模板匹配法等 3 分方法为主的是经典边缘检测算法 又可分为一阶微分 算法和二阶微分算法 新边缘检测算法有很多种 包含多种学科 有良好的发 展形势 如分类图 2 1 所示 图 2 1 边缘检测算法分类 2 2 边缘检测基本步骤 通常边缘检测主要包括以下四个步骤 4 如图 2 2 所示 1 图像滤波 边缘检测算法 经典算法 新算法 一阶算法 二阶算法 Roberts 算法 Sobel 算法 Prewitt 算法 Canny 算法 Laplace 算法 LOG 算法 数学形态法 小波变换法 神经网络法 模糊检测法 安徽三联学院毕业论文设计 2 同属图像中强度变化剧烈的部位是边缘和噪声 所以边缘检测算子对边缘 和噪声都很敏感 为了改善与噪声有关的边缘检测算子的性能所以必须使用滤 波器 而边缘检测算法主要是基于图像灰度的一阶和二阶导数 导数的计算对 噪声很敏感 而边缘检测算法主要是基于图像灰度的一阶和二阶导数 为了改 善与噪声有关的边缘检测器的性能须用滤波器 2 图形增强 确定图像各点邻域强度的变化值是增强边缘的基础 可以将邻域强度值有 显著变化的点突出显示的算法是增强算法 3 图像检测 图像中有许多梯度幅值比较大的点 然而这些点并不都是边缘在一些特定 的应用领域中 哪些是边缘点应用某些方法来确定 梯度幅值阈值判据是最简 单的边缘检测判据 4 图像定位 确定边缘点的具体位置就是边缘定位 边缘细化 连接也应该包括 如果 边缘位置在某一应用场合要求确定 则边缘的位置可利用子像素分辨率来估计 也可以估计出边缘的方位 图 2 2 边缘检测的流程 2 3 边缘检测算法评价标准 边缘检测算法的评价标准的研究 需追溯到其发展的思想源头和理论基础 一般情况下 图像中的边缘点可认为是信号中的奇异点和突变点 它相邻像素 灰度分布的梯度反映了其附近灰度的变化情况 基于以上我们提出了多种边缘 检测算子 如 Robert 算子 Prewitt 算子等 这些方法多灰度分析的基础是待 处理像素为中心的邻域 对图像边缘的提取得以实现并已经取得了较好的处理 效果 边缘像素宽 噪声干扰较严重等缺点也同时存在于这些方法中 即使采 安徽三联学院毕业论文设计 3 用一些辅助的方法去噪 边缘模糊等难以克服的缺陷也会相应带来 本质上讲 计算局部的微分算子是各种边缘检测技术的基本思想 一般图像的边缘检测识别过程中有如下的要求 1 有效的边缘能够正确的检测出 2 要有高精度的边缘定位 3 检测的响应最好是单像素的检测响应 4 对于不同尺度的边缘都能有较好的响应且能尽量减少漏检 5 对噪声尽量不敏感 边缘检测器的响应可简略的总结为以下三种误差 1 丢失的有效边缘 2 边缘定位误差 3 将噪声误判断为边缘 安徽三联学院毕业论文设计 4 第三章 一些经典的边缘检测算子的原理介绍 3 1 Roberts 边缘检测算子 利用局部差分算子寻找边缘的算子就是 Roberts 算子 Roberts 算子在 2 2 邻域上计算对角导数 3 1 22 1 11 1 jifjifjifjifjiG 又称为 Roberts 交叉算子 近似简化运算 jiG 3 2 1 11 1 jifjifjifjifjiG 用卷积模板 上式变为 3 3 yX GGjiG 其中和由图 3 2 的模板计算 x G y G a 对角导数 b 对角导数 x G x G 图 3 1 Roberts 边缘检测算子 将在内插点处计算差分值 该点连续梯度的近似值就是 Roberts 算子 不 是预期点处的近似值 经过用面两个卷积算子对图像运算后 代入 可求得图像的梯度幅度值 再选取适当的门 yX GGjiG jiG 限 TH 作如下判断 为阶跃状边缘点 为一个二 jiTHjiG jiG 值图像 就得到了图像的边缘 3 2 Prewitt 算子 Prewitt 由 2 2 扩大到 3 3 来计算差分算子 此算子不仅能检测边缘点 01 10 10 0 1 安徽三联学院毕业论文设计 5 这些算子样板是由理想的边缘图像构成的 检测图像则是次用边缘样板 最大 值则是由与被检测区域最为相似的样板给出 算子的输出值就是用这个的最大 值 则边缘像素就可被检测出来 Prewitt 边缘检测算子模板的定义如下 上面8个算子样板分别对应8个等方向的边缘方向 然后适当选取门限TH 作此 判断 若P i j TH 那么 i j 为阶跃状边缘点 就得到 P i j 为边缘图像 4 拉普拉斯算子 Laplace 拉普拉斯定义为 3 4 拉普拉斯也是采用模板计算 有一种经常用的5 5的模板 5 3 3 Kirsch 算子 Kirsch 是方向算子 它是用八个卷积核的边缘检测算子 一共有八个 3 3 卷积核 6 各方向上的边缘均可检测 选择其中的最大值输出 计算量增加了 并且减少因为平均而造成的细节丢失 局部边缘的突出基于边缘增强算子 通 过设置门限的方法提取边缘点集 像素中的 边缘强度 就被定义了这是边缘 检测的基本原理 我们要寻找一些各项同性的检测算子这是因为边缘 轮廓在 一幅图像中经常具有任意的方向 们对任意方向的边缘 轮廓都有一样的检测 能力 7 2 2 2 2 2 y f x f yxf 安徽三联学院毕业论文设计 6 第四章 图像边缘检测相关程算法和程序 4 1 Hough 变换 Hough 变换用来在图像中查找直线 它的原理很简单 假设有一条与原点距离 为 s 方向角为 的一条直线 下图所示 直线上的每一点都满足方程 4 1 利用这个事实 我们可以找出某条直线来 举一个例子 用一段程序找出图像 中最长的直线 红色直线 我们可将直线颜色加粗 原图变换的结果 找到的最长直线确实是它 下面给出 BOOL Hough 程序 BOOL Hough HWND hWnd 定义一个自己的直线结构 typedef struct int topx 最高点的 x 坐标 int topy 最高点的 y 坐标 int botx 最低点的 x 坐标 int boty 最低点的 y 坐标 MYLINE DWORD OffBits BufSize LPBITMAPINFOHEADER lpImgData LPSTR lpPtr HDC hDc LONG x y 安徽三联学院毕业论文设计 7 long i maxd int k int Dist Alpha HGLOBAL hDistAlpha hMyLine Int lpDistAlpha MYLINE lpMyLine TempLine MaxdLine static LOGPEN rlp PS SOLID 1 1 RGB 255 0 0 HPEN rhp if NumColors 256 MessageBox hWnd Must be a mono bitmap with grayscale palette Error Message MB OK MB ICONEXCLAMATION return FALSE 计算最大距离 Dist int sqrt double bi biWidth bi biWidth double bi biHeight bi biHeight 0 5 Alpha 180 2 0 到 to 178 度 步长为 2 度 为距离角度数组分配内存 if hDistAlpha GlobalAlloc GHND DWORD Dist Alpha sizeof int NULL MessageBox hWnd Error alloc memory Error Message MB OK MB ICONEXCLAMATION return FALSE if hMyLine GlobalAlloc GHND DWORD Dist Alpha sizeof MYLINE NULL GlobalFree hDistAlpha return FALSE OffBits bf bfOffBits sizeof BITMAPFILEHEADER BufSize 为缓冲区大小 BufSize OffBits bi biHeight LineBytes lpImgData LPBITMAPINFOHEADER GlobalLock hImgData lpDistAlpha int GlobalLock hDistAlpha lpMyLine MYLINE GlobalLock hMyLine for i 0 i long Dist Alpha i TempLine MYLINE lpMyLine i TempLine boty 32767 for y 0 y bi biHeight y lpPtr 指向位图数据 lpPtr char lpImgData BufSize LineBytes y LineBytes for x 0 x bi biWidth x if lpPtr 0 是个黑点 for k 0 k TempLine topy 记录该直线最高点的 x y 坐标 TempLine topx x TempLine topy y if y TempLine boty 安徽三联学院毕业论文设计 8 记录该直线最低点的 x y 坐标 TempLine botx x TempLine boty y maxd 0 for i 0 i maxd maxd k MaxdLine topx TempLine topx MaxdLine topy TempLine topy MaxdLine botx TempLine botx MaxdLine boty TempLine boty hDc GetDC hWnd rhp CreatePenIndirect SelectObject hDc rhp MoveToEx hDc MaxdLine botx MaxdLine boty NULL LineTo hDc MaxdLine topx MaxdLine topy DeleteObject rhp ReleaseDC hWnd hDc 释放内存及资源 GlobalUnlock hImgData GlobalUnlock hDistAlpha GlobalFree hDistAlpha GlobalUnlock hMyLine GlobalFree hMyLine return TRUE 若 已知 可找到在该方向上最长的直线 通过以上程序 4 2 轮廓提取 轮廓提取的实例如图所示 原图轮廓提取 掏空内部点就可对轮廓进行提取 原图中若有一点是黑的 与它相邻的 8 个点 也是黑色 那么就把那个点删掉 源程序如下 BOOL Outline HWND hWnd 安徽三联学院毕业论文设计 9 DWORD OffBits BufSize LPBITMAPINFOHEADER lpImgData LPSTR lpPtr HLOCAL hTempImgData LPBITMAPINFOHEADER lpTempImgData LPSTR lpTempPtr HDC hDc HFILE hf LONG x y int num int nw n ne w e sw s se if NumColors 256 MessageBox hWnd Must be a mono bitmap with grayscale palette Error Message MB OK MB ICONEXCLAMATION return FALSE OffBits bf bfOffBits sizeof BITMAPFILEHEADER BufSize 为缓冲区大小 BufSize OffBits bi biHeight LineBytes if hTempImgData LocalAlloc LHND BufSize NULL MessageBox hWnd Error alloc memory Error Message MB OK MB ICONEXCLAMATION return FALSE lpImgData LPBITMAPINFOHEADER GlobalLock hImgData lpTempImgData LPBITMAPINFOHEADER LocalLock hTempImgData 拷贝头信息和位图数据 memcpy lpTempImgData lpImgData BufSize for y 1 y bi biHeight 1 y 注意 y 的范围是从 1 到高度 2 lpPtr char lpImgData BufSize LineBytes y LineBytes lpTempPtr char lpTempImgData BufSize LineBytes y LineBytes for x 1 x SeedFillStack ElementsNum return FALSE 栈已满 返回 FALSE TempPtr POINT SeedFillStack lpMyStack SeedFillStack ptr TempPtr x p x TempPtr y p y return TRUE pop 操作 POINT MyPop POINT InvalidP InvalidP x 1 InvalidP y 1 if SeedFillStack ptr0 注意判断边界 NeighborP x CurP x 1 NeighborP y CurP y lpTempPtr1 lpTempPtr 1 if lpTempPtr1 0 上邻点 if CurP y 0 注意判断边界 NeighborP x CurP x NeighborP y CurP y 1 lpTempPtr1 lpTempPtr LineBytes if lpTempPtr1 0 MyPush NeighborP 右邻点 if CurP x bi biWidth 1 注意判断边界 NeighborP x CurP x 1 NeighborP y CurP y 安徽三联学院毕业论文设计 13 lpTempPtr1 lpTempPtr 1 if lpTempPtr1 0 MyPush NeighborP 下邻点 if CurP y bi biHeight 1 注意判断边界 NeighborP x CurP x NeighborP y CurP y 1 lpTempPtr1 lpTempPtr LineBytes if lpTempPtr1 0 MyPush NeighborP 析构堆栈 释放内存 DeInitStack if hBitmap NULL DeleteObject hBitmap hDc GetDC hWnd 创建新的位图 hBitmap CreateDIBitmap hDc LPBITMAPINFOHEADER lpTempImgData LONG CBM INIT LPSTR lpTempImgData sizeof BITMAPINFOHEADER NumColors sizeof RGBQUAD LPBITMAPINFO lpTempImgData DIB RGB COLORS hf lcreat c seed bmp 0 lwrite hf LPSTR lwrite hf LPSTR lpTempImgData BufSize lclose hf 释放内存和资源 ReleaseDC hWnd hDc LocalUnlock hTempImgData LocalFree hTempImgData GlobalUnlock hImgData return TRUE 4 4 轮廓跟踪 经过顺序找出边缘点以跟踪出边界就是轮廓跟踪 廓跟踪后的结果图如下 给出程序 BOOL Contour HWND hWnd DWORD OffBits BufSize 安徽三联学院毕业论文设计 14 LPBITMAPINFOHEADER lpImgData LPSTR lpPtr HLOCAL hTempImgData LPBITMAPINFOHEADER lpTempImgData LPSTR lpTempPtr HDC hDc HFILE hf LONG x y POINT StartP CurP BOOL found int i int direct 8 2 1 0 1 1 0 1 1 1 1 0 1 1 0 1 1 1 if NumColors 256 MessageBox hWnd Must be a mono bitmap with grayscale palette Error Message MB OK MB ICONEXCLAMATION return FALSE 到位图数据的偏移值 OffBits bf bfOffBits sizeof BITMAPFILEHEADER 缓冲区大小 BufSize OffBits bi biHeight LineBytes if hTempImgData LocalAlloc LHND BufSize NULL MessageBox hWnd Error alloc memory Error Message MB OK MB ICONEXCLAMATION return FALSE lpImgData LPBITMAPINFOHEADER GlobalLock hImgData lpTempImgData LPBITMAPINFOHEADER LocalLock hTempImgData memset lpTempImgData BYTE 255 BufSize 拷贝头信息 memcpy lpTempImgData lpImgData OffBits 找到标志置为假 found FALSE for y 0 y bi biHeight y lpPtr char lpImgData BufSize LineBytes y LineBytes for x 0 x bi biWidth x if lpPtr 0 found TRUE if found 如果找到了 才做处理 在这里把它们减 1 得到 起始点坐标 StartP StartP x x 1 StartP y y 1 lpTempPtr char lpTempImgData BufSize LineBytes StartP y LineBytes StartP x lpTempPtr unsigned char 0 起始点涂黑 右邻点 CurP x StartP x 1 CurP y StartP y lpPtr char lpImgData BufSize LineBytes CurP y LineBytes CurP x if lpPtr 0 CurP x StartP x 1 CurP y StartP y 1 lpPtr char lpImgData BufSize LineBytes CurP y LineBytes CurP x 安徽三联学院毕业论文设计 15 if lpPtr 0 若仍为白 则找下邻点 CurP x StartP x CurP y StartP y 1 else 若仍为白 则找左下邻点 CurP x StartP x 1 CurP y StartP y 1 while CurP x StartP x lpTempPtr unsigned char 0 for i 0 i 8 i direct i 中存放的是该方向 x y 的偏移值 x CurP x direct i 0 y CurP y direct i 1 lpTempPtr char lpTempImgData BufSize LineBytes y LineBytes x lpPtr char lpImgData BufSize LineBytes y LineBytes x if lpPtr 0 CurP y y break if hBitmap NULL DeleteObject hBitmap hDc GetDC hWnd 创立一个新的位图 hBitmap CreateDIBitmap hDc LPBITMAPINFOHEADER lpTempImgData LONG CBM INIT LPSTR lpTempImgData sizeof BITMAPINFOHEADER NumColors sizeof RGBQUAD LPBITMAPINFO lpTempImgData DIB RGB COLORS hf lcreat c contour bmp 0 lwrite hf LPSTR lwrite hf LPSTR lpTempImgData BufSize lclose hf 释放内存和资源 ReleaseDC hWnd hDc LocalUnlock hTempImgData LocalFree hTempImgData GlobalUnlock hImgData return TRUE 安徽三联学院毕业论文设计 16 BOOL IsContourP LONG x LONG y char lpPtr int num n w e s n unsigned char lpPtr LineBytes 上邻点 w unsigned char lpPtr 1 左邻点 e unsigned char lpPtr 1 右邻点 s unsigned char lpPtr LineBytes 下邻点 num n w e s if num 0 return FALSE return TRUE 安徽三联学院毕业论文设计 17 第五章 程序调式仿真 5 1 MATLAB 简介 MATLAB 是美国 MathWorks 公司出品的商业数学软件 矩阵实验室的简称是 MATLAB 它有两大部分 分别是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论