Canny算子实验报告
边缘化提取实验报告

一、实验目的1. 理解图像边缘检测的基本原理和过程。
2. 掌握常用的边缘检测算法,如Roberts算子、Sobel算子、Prewitt算子、Laplacian算子和Canny算子。
3. 通过实验验证不同边缘检测算法的效果,并分析其优缺点。
4. 了解特征提取的基本原理和方法,对图像边缘进行特征提取。
二、实验原理图像边缘是图像中灰度值或颜色值发生突变的地方,是图像分割和特征提取的基础。
边缘检测的目的是找到图像中灰度值变化明显的区域,即边缘。
边缘检测算法可以分为两类:基于微分算子的边缘检测算法和基于二值化的边缘检测算法。
1. 基于微分算子的边缘检测算法:- 利用一阶导数或二阶导数检测图像边缘。
- 常见的算子有Roberts算子、Sobel算子、Prewitt算子、Laplacian算子等。
2. 基于二值化的边缘检测算法:- 利用图像的二值化处理,将图像分为前景和背景两部分。
- 常见的算法有Otsu算法、Sauvola算法等。
三、实验内容1. 实验材料:- OpenCV库- Python编程环境2. 实验步骤:(1)读取图像:使用OpenCV库读取待检测的图像。
(2)灰度化:将图像转换为灰度图像,以便进行边缘检测。
(3)边缘检测:- 使用Roberts算子检测边缘。
- 使用Sobel算子检测边缘。
- 使用Prewitt算子检测边缘。
- 使用Laplacian算子检测边缘。
- 使用Canny算子检测边缘。
(4)特征提取:对检测到的边缘进行特征提取,如计算边缘长度、宽度、方向等。
(5)结果展示:将检测到的边缘和提取的特征进行可视化展示。
四、实验结果与分析1. Roberts算子:- 效果:Roberts算子对图像噪声敏感,边缘检测效果较差。
- 分析:Roberts算子对图像局部区域进行检测,容易受到噪声的影响。
2. Sobel算子:- 效果:Sobel算子对图像噪声有一定的抑制能力,边缘检测效果较好。
- 分析:Sobel算子使用高斯滤波器对图像进行平滑处理,然后计算图像的一阶导数。
Canny检测算法与实现

Canny检测算法与实现1、原理图象边缘就是图像颜⾊快速变化的位置,对于灰度图像来说,也就是灰度值有明显变化的位置。
图像边缘信息主要集中在⾼频段,图像锐化或检测边缘实质就是⾼通滤波。
数值微分可以求变化率,在图像上离散值求梯度,图像处理中有多种边缘检测(梯度)算⼦,常⽤的包括普通⼀阶差分,Robert算⼦(交叉差分),Sobel算⼦,⼆阶拉普拉斯算⼦等等,是基于寻找梯度强度。
Canny 边缘检测算法是John F. Canny 于1986年开发出来的⼀个多级边缘检测算法,也被很多⼈认为是边缘检测的最优算法, 最优边缘检测的三个主要评价标准是:低错误率: 标识出尽可能多的实际边缘,同时尽可能的减少噪声产⽣的误报。
⾼定位性: 标识出的边缘要与图像中的实际边缘尽可能接近。
最⼩响应: 图像中的边缘只能标识⼀次。
Canny算⼦求边缘点具体算法步骤如下:1. ⽤⾼斯滤波器平滑图像.2. ⽤⼀阶偏导有限差分计算梯度幅值和⽅向.3. 对梯度幅值进⾏⾮极⼤值抑制.4. ⽤双阈值算法检测和连接边缘.2、实现步骤2.1、消除噪声使⽤⾼斯平滑滤波器卷积降噪。
下⾯显⽰了⼀个 size = 5 的⾼斯内核⽰例:2.2、计算梯度幅值和⽅向按照Sobel滤波器的步骤,计算⽔平和垂直⽅向的差分Gx和Gy:在vs中可以看到sobel像素值和形状:梯度幅值和⽅向为:梯度⽅向近似到四个可能⾓度之⼀(⼀般 0, 45, 90, 135)。
2.3、⾮极⼤值抑制⾮极⼤值抑制是指寻找像素点局部最⼤值。
sobel算⼦检测出来的边缘太粗了,我们需要抑制那些梯度不够⼤的像素点,只保留最⼤的梯度,从⽽达到瘦边的⽬的。
沿着梯度⽅向,⽐较它前⾯和后⾯的梯度值,梯度不够⼤的像素点很可能是某⼀条边缘的过渡点,排除⾮边缘像素,最后保留了⼀些细线。
在John Canny提出的Canny算⼦的论⽂中,⾮最⼤值抑制就只是在0、90、45、135四个梯度⽅向上进⾏的,每个像素点梯度⽅向按照相近程度⽤这四个⽅向来代替。
Canny算子分析

Canny算子分析摘要: 图像边缘识别在实际应用中一直是图像边缘检测中的热点和难点, 迄今已有许多边缘检测方法, 其中Canny 算子在图像边缘的检测与提取中已经取得了较好的处理效果。
关键词:Canny 算子图像边缘重要概念边缘定义为图像中灰度发生急剧变化的区域边界。
边缘检测的实质是采用某种算法来提取出图像中对象与背景间的交界线。
Canny( 坎尼) 算子是以待处理像素为中心的邻域作为进行灰度分析的基础, 实现对图像边缘的提取并已经取得了较好的处理效果。
在图象边缘检测中往往要求所检测到的边缘具有封闭特性,即边界闭合图象边缘检测的基本步骤(1)滤波。
边缘检测主要基于导数计算,但受噪声影响。
但滤波器在降低噪声的同时也导致边缘强度的损失。
(2)增强。
增强算法将邻域中灰度有显著变化的点突出显示。
一般通过计算梯度幅值完成。
(3)检测。
但在有些图象中梯度幅值较大的并不是边缘点。
最简单的边缘检测是梯度幅值阈值判定。
(4)定位。
精确确定边缘的位置。
图1 边缘检测酸法的基本步骤Canny 边缘检测基本原理具有既能滤去噪声又保持边缘特性的边缘检测最优滤波器, 其采用一阶微分滤波器。
采用二维高斯函数的任意方向上的一阶方向导数为噪声滤波器, 通过与图像卷积进行滤波; 然后对滤波后的图像寻找图像梯度的局部最大值, 以此来确定图像边缘。
根据对信噪比与定位乘积进行测度, 得到最优化逼近算子,这就是Canny 边缘检测算子。
Canny算子求边缘点具体算法步骤如下:1. 用高斯滤波器平滑图像.2. 用一阶偏导有限差分计算梯度幅值和方向.3. 对梯度幅值进行非极大值抑制.4. 用双阈值算法检测和连接边缘.步骤1. 图像与高斯平滑滤波器卷积:令g(x,y)为平滑后的图像,用h(x,y,σ)对图像f(x,y)的平滑可表示为:g(x,y)= h(x,y,σ)*f(x,y)其中“*”代表卷积。
步骤2. 使用一阶有限差分计算偏导数列阵P与Q:步骤3.对梯度幅值进行非极大值抑制(non_maxima suppression,NMS):仅仅得到全局的梯度并不足以确定边缘,因此为确定边缘,必须保留局部梯度最大的点,而抑制非极大值。
Canny边缘检测与轮廓提取

摘要................................................................................................................................................... Abstract (I)1 绪论 02 设计内容与OpenCV简介 (1)2.1 设计任务内容 (1)2.2 OpenCV简介 (1)3 理论分析 (2)3.1 边缘检测 (2)3.1.1 图像的边缘 (2)3.1.2 边缘检测的基本步骤 (2)3.2 轮廓提取 (3)4 边缘检测的算法比较 (4)4.1 Reborts算子 (4)4.2 Sobel算子 (4)4.3 Prewitt 算子 (5)4.4 Kirsch 算子 (6)4.5 LOG算子 (6)4.6 Canny算子 (7)5 实验仿真 (9)5.1算法设计 (9)5.2 实验结果 (10)6 分析与总结 (11)参考文献 (12)附录 (13)边缘检测是和中的基本问题,它的目的是标识出数字图像中亮度变化明显的点。
图像经过边沿检测处理之后,不仅大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。
事实上,边缘存在于图像的不规则结构和不平稳现象中,也即存在于信号的突变点处,这些点给出了图像轮廓的位置。
这些轮廓常常是我们在图像边缘检测时,所需要的非常重要的一些特征条件,这就需要我们对一幅图像检测并提取出它的边缘。
可用于图像边缘检测和轮廓提取的方法有很多,其中包括有常见的Robert边缘算子、Prewitt 边缘算子、Sobel边缘算子等等。
本文首先将会从数字图像处理的角度,对几种边缘检测算法进行详细的分析,然后会并选择其中一种边缘检测算法进行实验。
考虑到以后进一步的学习,本文将会使用openCV对算法进行实现。
最后,本文将会把实验获得的实际效果,与理论分析的结果进行比对,并以此对本次实验进行总结。
视觉机器应用实验报告(3篇)

第1篇一、实验目的本次实验旨在通过实际操作,了解并掌握视觉机器的基本原理和应用,提高对视觉机器处理技术的认识。
实验内容包括边缘检测、显著性检测、特征点检测和直线检测等,通过对比不同算法的优缺点,分析其在实际图像处理中的应用和局限性。
二、实验内容与步骤1. 边缘检测(1)选择图像数据:选取一张包含明显边缘结构的图像作为实验对象。
(2)Sobel边缘检测:使用Sobel算子对图像进行边缘检测,记录结果。
(3)Canny边缘检测:使用Canny算子对图像进行边缘检测,记录结果。
(4)比较两种方法的边缘检测效果,分析其差异。
2. 显著性检测(1)选择图像数据:选取一张包含不同显著性区域的图像作为实验对象。
(2)HC显著性检测:使用Python和OpenCV实现HC显著性检测算法,调整参数,比较检测效果。
(3)基于最小方向对比度显著性检测:使用Python和OpenCV实现基于最小方向对比度显著性检测算法,调整参数,比较检测效果。
(4)基于最稳定区域显著性检测:使用Python和OpenCV实现基于最稳定区域显著性检测算法,调整参数,比较检测效果。
3. 特征点检测(1)选择图像数据:选取一张包含明显角点的图像作为实验对象。
(2)Harris角点检测:使用Python和OpenCV实现Harris角点检测算法,调整参数,比较检测效果。
(3)分析角点检测结果与实际图像特征之间的关系。
4. 直线检测(1)选择图像数据:选取一张包含直线的图像作为实验对象。
(2)哈夫变换直线检测:使用Python和OpenCV实现哈夫变换直线检测算法,调整参数,比较检测效果。
(3)对图像进行预处理(如边缘检测)以提高直线检测效果。
(4)分析哈夫变换在实际场景中的应用和局限性。
三、实验结果与分析1. 边缘检测通过对比Sobel算子和Canny算子的边缘检测结果,发现Canny算子具有更好的检测效果,能够有效抑制噪声,同时保留边缘信息。
dsp-Canny算子实现图像的边缘检测(董书月组)要点

边缘检测对于物体的识别也是很重要的。主要有以下几个理由:首先,人眼通过追踪未知物体的轮廓(轮廓是由一段的边缘片段组成的)而扫视一个未知的物体。第二,经验告诉我们:如果我们能成功地得到图像的边缘,那么图像分析就会大大简化,图像识别就会容易得多。第三,很多图像并没有具体的物体,对这些图像的理解取决于他们的纹理性质,而提取这些纹理性质与边缘检测有极其密切的关系。然而自从1959年文献上最早提出边缘检测,从那以后每年都会出现很多关于边缘检测的文章。经过了四十多年的发展,已有许多种不同的边缘检测方法。典型一阶边缘检测算子包括Roberts算子,Sobel算子,Prewitt算子以及梯度算子等;典型二阶边缘检测算子包括Laplacian算子,LOG算子,canny算子。
减少假边缘数量的典型方法是对N(i,j)使用一个阈值,将低于阈值的所有值赋零值。对非极大值抑制幅值进行阈值化的结果是一个图像I(i,j)的边缘阵列。阈值化后得到的边缘阵列仍然有假边缘存在,原因是阈值太低(假正确)以及阴影的存在,使得边缘对比度减弱,或阈值T取得太高而导致部分轮廓丢失(假错误)。选择合适的阈值是困难的,需要经过反复试验。为了解决这个问题,Canny提出了一种双阀值方法。首先利用累计统计直方图得到一个高阀值 ,然后再取一个低阀值 (本文用MATLAB实现时使 =0.5 )。如果图像信号的响应大于高阀值,那么它一定是边缘;如果低于低阀值,那么它一定不是边缘;如果在低阀值和高阀值之间,我们就看它的8个邻接像素有没有大于高阀值的边缘,如果有,那么它是边缘,否则它不是边缘。
基于canny算子的边缘检测算法应用研究
基于canny算子的边缘检测算法应用研究作者:陈蒙来源:《电子技术与软件工程》2013年第23期摘要:边缘检测技术是图像处理过程的重要一环,本文主要研究基于canny算则的边缘检测算法中的抑制噪声、寻找亮度梯度、非极大值抑制、边缘的确定和连接等四个过程,并逐个分析其实现过程及作用。
【关键词】边缘检测高斯平滑1 引言随着图像处理技术的发展与广泛应用,现在社会中图像处理的应用领域越来越广泛,如三维重建,医学诊断,图像识别等等。
而图像处理过程中,最重要的一项预处理技术即为边缘检测技术。
图像的边缘是图像特征识别中的重要组成部分。
我们一般认为边缘是图像中周围像素有不连续变化或屋脊变化的像素的集合。
在一幅图像中,边缘特征所表达的信息量在整张图片的特征信息中占有主导地位,对图像特征的识别、分析十分重要。
边缘信息主要从像素值幅度和走向两个方面来表示。
一般来说,沿着边缘走向的像素点灰度值呈连续性变化特征,而垂直于边缘走向的像素点灰度值则呈跳跃性或阶跃性变化特征。
边缘检测技术即为通过一定的算法将图像中的边缘尽可能真实地提取或表示出来的技术。
边缘检测技术发展到目前已有很多类提取算法,但主要的计算原则就借助于类似高斯平滑、傅里叶变换等的数学函数与图像的灰度矩阵进行卷积计算,从而得到横、纵两个方向上的梯度图像和模图像,然后根据梯度方向来进行模的极大值提取,获得需要的图像特征边缘。
本文主要研究的是以canny算子为检测手段的边缘检测算法。
2 canny边缘检测算法任何一个边缘检测算法的原则都是真实、详尽地标识出原图像的实际边缘,同时又尽可能避免图像中的噪点、伪边缘等噪声的干扰,找到一个最优的图像边缘。
Canny边缘检测算法也是如此,一般由抑制噪声、寻找梯度亮度、非极大值抑制、确定和连接边缘这四步完成的。
2.1 1抑制噪声任何图像在进行边缘检测之前,都要进行抑制噪声的预处理。
它是所有图像处理过程的第一步。
图像的噪声主要有椒盐噪声和高斯噪声两种,而绝大部分图形的干扰噪声属于高斯噪声,因此canny算法的第一步采用的是运用二维高斯平滑模板与原图像数据进行卷积计算,而得到抑制噪声后的待处理图像。
毕业设计(论文)-基于动态双阈值的canny算子对象边缘提取算法研究[管理资料]
摘要边缘检测在图像理解,分析识别领域中是十分重要的研究课题,边缘检测的效果将直接影响到图像理解和识别的性能。
在图像处理领域,边缘是图像的基本特征。
所谓边缘是指图像周围像素灰度有阶跃变化或屋顶状变化的像素的集合,它存在于目标和背景,目标与目标,区域与区域,基元与基元之间。
边缘具有方向和幅度两个特征,沿边缘走向,像素值变化比较平缓;垂直于边缘走向,像素值变化比较剧烈,可能呈现阶跃状,也可能呈现斜坡状。
Canny算子提取算法采用二维高斯函数任一方向上的一阶方向导数为噪声滤波器,通过卷积运算对图像滤波,然后寻找滤波后图像梯度的局部极大值,以确定图像边缘。
Canny算子提取算法得到的目标图像,具有信噪比大和检测精度高的优点,因此得到广泛的应用。
动态阈值Canny算法根据图像的具体情况而选择阈值,该方法具有更广的自适应能力,保证了图像边界提取的准确性。
关键词:边缘检测,Canny算子,动态阈值ABSTRACTEdge detection is an important topic in image understanding and identifies areas. The effect of edge detection will directly affect the image understanding and performance recognition.Edge is the most basic features of image. The so-called edge is around the pixel grayscale image with a step change or roof-like changes in the set of pixels. It exists in target and background, goals and objectives, regional and regional, unit and unit. There are two characteristic of edge, which are direction and magnitude. Along with edge, changes of pixel value are small, and in another direction changes are dramatically large. Sometimes it may shows step-like and sometimes it may be presented sloping.Canny edge detection employs 2-dimentional Gaussian filter function to eliminate noise. And then find out the maximal value of filtered image in local. There was high signal- noise ratio and accurate location of edges detected by Canny. So it is widely used in the world. Dynamic threshold of Canny method selects the threshold by every image, so it has a more adjustable and accurately.KEY WORDS:edge detection, canny operator, dynamic threshold目录第1章前言 (1)研究背景 (1)Canny算子边缘提取算法的研究现状 (1)经典算法 (2)新兴算法 (3)本文的研究内容与章节安排 (5)本文的研究成果与意义 (5)第2章 Canny算子边缘检测的基本理论 (6)图像边缘的定义[12] (6)边缘检测的基本原理与衡量指标[13] (7)边缘检测的基本原理 (8)边缘检测的衡量指标[14][15] (9)Canny算子边缘检测 (9)Canny算子的实现步骤[16] (10)Canny算子的约束准则[18][19] (11)固定双阈值的Canny算法 (12)Canny算子存在的问题及改进的方法[20] (13)Canny算子存在的问题 (13)改进的Canny算法[21] (13)第3章动态双阈值Canny算子边缘提取算法与实现 (17)算法框图 (17)动态阈值的实现 (17)Matlab函数的意义: (18)Matlab函数实现 (18)改变测试图像 (21)第4章实验对比与分析 (24)测试图像参数说明 (24)图像的测试结果与分析 (24)Tsukuba图像的测试结果与分析 (24)Mart图像的测试结果与分析 (26)IlkayJohn图像的测试结果与分析 (29)实验总结 (31)第5章结论与展望 (32)全文工作总结 (32)未来展望 (32)致谢 (33)参考文献 (34)附录1 英文原文 (35)附录2 中文译文 (44)第1章前言研究背景在图像处理、模式识别、计算机视觉、生物医学、遥感器视觉、气象预测等诸多领域的图像预处理中,特征提取起着举足轻重的作用。
基于Canny算子的大米边缘检测
第29卷第3期河南工业大学学报(自然科学版)Vol .29,No .32008年6月Journal of Henan University of Technol ogy (Natural Science Editi on )Jun .2008收稿日期:2008202206作者简介:陈卫东(19722),男,湖南望城县人,讲师,硕士,主要研究方向为图像处理与模式识别.文章编号:167322383(2008)0320055204基于Canny 算子的大米边缘检测陈卫东1,董卓莉1,李研琰2(1.河南工业大学信息科学与工程学院,河南郑州450001;2.河南省政法管理干部学院计算机科学系,河南郑州450002)摘要:阐述了常用边缘检测算子进行边缘检测的方法,详细介绍了Canny 算子的边缘检测步骤,并将其应用于大米图像的边缘检测中.实验结果表明,Canny 算子提取的边缘线型连接程度较好,可应用于从群体米样提取大米边缘.关键词:大米;边缘检测;Canny 算子中图分类号:TS212 文献标识码:B0 引言边缘检测[1]技术首先检测出图像局部特性的不连续性,再将它们连成边界,这些边界把图像分成不同的区域,检测出边缘的图像就可以进行特征提取和形状分析.边缘特征提取是所有基于边界分割的图像分析方法中最基础的内容,并在应用中起着重要的作用,它是图像分析与识别中重要的环节,是进行目标检测、图像分割所依赖的重要特征.大米边缘提取对分析大米的品质如加工精度、不完善率、杂质、出糙率、整精米率等都有十分重要的意义,是实现大米质量检测和分级的最基本参数[2].1 常用边缘检测算子图像边缘是图像局部特性不连续性(灰度突变、颜色突变、纹理结构突变等)的反映,它标志着一个区域的终结和另一个区域的开始[3-4].为了计算方便起见,通常选择一阶和二阶导数来检测边界,利用求导方法可以很方便的检测到灰度值的不连续效果.常用的微分算子有Roberts 算子[5]、Sobel 算子[6]、Pre witt 算子[7],它们均是以图像灰度的两个差分来逼近梯度算子.采用这3种微分算子对群体米样图像进行边缘检测时,阈值thresh 的选择对边缘提取的效果至关重要.如果thresh 选取得好,可以获得比较完整的边缘,同时使得噪声不至于过大.但如果thresh 选取得不合适,则极易得到很强的噪声或者是提取的边缘的完整性极差.由于不能够自动选取合适的thresh,因此在群体米样的自动识别中,纯微分算子边缘检测法适用场合非常有限.事实上,它们存在一些共同的问题:它们的结果对噪声很敏感,图像的离散差分对噪声比对原图像更敏感;可以通过先对图像做平滑以改善结果,但是又会产生一个问题:会把一些靠在一起的边缘平滑掉,而且会影响对边缘的定位;用这些模板卷积后得到的边缘可能是跨跃好几个点而不是一个点.2 Canny 算子边缘检测2.1 Canny 算子简介Canny 算子[8-9]检测边缘遵循的3个准则为:保证成功检测出边缘,对于弱边缘也应有强响应;保证边缘良好定位;保证一个边缘只得到一次检测.Canny 算子检测边缘的具体过程如下:Step1:用二维高斯滤波模板与灰度图像卷积,以减小噪声影响;Step2:利用导数算子(如Pre witt 算子、Sobel56 河南工业大学学报(自然科学版)第29卷算子)找到图像灰度沿着两个方向的导数Gx 、Gy,并求出梯度的大小和方向:|G|=G2x +G2y,θ=arctanG yG xStep3:非极大值抑制.遍历图像,如果某个像素的灰度值与其梯度方向上前后两个像素的灰度值相比不是最大的,则将该像素值置0,即不是边缘.Step4:使用图像累计直方图计算两个阈值:灰度值大于高阈值的像素为边缘,小于低阈值的不是边缘,介于两个阈值之间的,如果其邻接像素有灰度值大于高阈值的则为边缘,如没有则不是.2.2 Canny算法实现本研究针对Canny算子检测边缘的具体过程,采用V isual C++6.0进行了编程实验[10]. 2.2.1 计算方向导数利用原图像计算图像像素的方向导数.函数名称:void D irGrad(unsigned char3 pUnchS m thd I m g,int n W idth,int nHeight,int3 pnGradX,int3pnGradY).输入:经过滤波后的图像(unsigned char3 pUnchS m thd I m g),图像宽度(int n W idth),图像高度(int nHeight).输出:x方向的方向导数(int3pnGradX)和y 方向的方向导数(int3pnGradY).2.2.2 计算梯度利用方向导数的计算结果,采用二阶范数计算梯度.函数名称:v oid Grad Magnitude(int3pn2 GradX,int3pnGradY,int n W idth,int nHeight, int3pn Mag).输入:3pnGradX、3pnGradY、n W idth、nHeight(含义同前).输出:梯度幅度(int3pn Mag).2.2.3 对梯度幅值进行非极大值抑制函数名称:void NonmaxSupp ress(int3pn2 Mag,int3pnGradX,int3pnGradY,int n W idth, int nHeight,unsigned char3pUnchR st).输入:3pn Mag、3pnGradX、3pnGradY、n W idth、nHeight(含义同前).输出:边缘部分非边界点(unsigned char3 pUnchR st).2.2.4 用双阈值算法检测和连接边缘根据梯度计算及经过非最大抑制后的结果设定阈值,这个函数也是Canny算子的重要部分,阈值的设定直接涉及哪些像素点可能为边界.函数名称:void Esti m ateThreshold(int3pn2 Mag,int n W idth,int nHeight,int3pnThdH igh, int3pnThd Low,unsigned char3pUnchEdge, double dRati oH igh,double dRati oLow)其中:3pn Mag、n W idth、int nHeight含义同前,int3pnThdH igh表示高阈值,int3pnThdLow 表示低阈值,double dRati oLow表示低阈值和高阈值之间的比例,double dRati oH igh表示高阈值占图像像素总数的比例,unsigned char3pUnchEdge 表示经过non-maxi m um处理后的数据.说明:经过处理后的数据pUnchEdge,统计pn Mag的直方图,确定阈值.本函数中只统计pUnchEdge中可能为边界点的那些像素.然后利用直方图,根据dRati oH igh设置高阈值,存储到3 pnThdHigh.利用dR ti oLow和高阈值,设置低阈值,存储到3pnThdLow,dRati oH igh是一种比例:表明梯度小于3pnThdH igh的像素数目占像素总数目的比例.dRati o Low表明3pnThdH igh和3 pnThd Low的比例.3 结果与讨论本文对上述3种经典边缘检测算子及Canny 算子分别编写了函数,并进行了实验研究,输出结果如图1~图4所示.第3期陈卫东等:基于Canny 算子的大米边缘检测57 从输出结果可以看出Roberts 算子边缘粗细不均匀,Sobel 算子边缘检测较粗,而用Pre witt 检测的边缘并不是完全连通的,这是因为利用一阶微分算子的边缘检测方法都采用梯度思想,即边缘点的求取是通过相邻几点的灰度运算得到的.以Roberts 梯度算子为例,像素点(m ,n )的梯度计算公式为:Δx f =f (m ,n )-f (m -1,n -1)Δy f =f (m -1,n )-f (m ,n -1)Δf =(Δx f )2+(Δy f )2因此,像素点(m ,n )的梯度值与f (m ,n )、f (m -1,n -1)、f (m -1,n )、f (m ,n -1)4点的灰度值有关,这就意味着若有一个点f (i,j )被噪声干扰了,那么通过梯度运算检测时,与其相邻的8个点的梯度运算结果均受噪声的干扰,即边缘检测时噪声的影响通过检测算子被扩散.梯度计算完成后,将结果与选取的阈值作比较,并作出判断:如果大于阈值,则该点为边缘点,否则不是边缘点.由于梯度计算结果受噪声干扰,用梯度计算来检测边缘的方法对噪声敏感,故检测结果不甚理想.而Canny 算子首先应用二维高斯函数对图像进行平滑,再采用窗口计算灰度梯度的幅值和方向,重要的是对梯度图像进行非极大值抑制,即细化梯度幅值图像G 中的屋脊带,只保留幅值的局部极大值,弱化了噪声对梯度幅值的影响.最后采用双阈值法从候选边缘点中检测和连接出最终的边缘.双阈值法的使用克服了传统边缘检测算子因阈值设定过高损失重要的边缘信息或阈值设定较低不能有效抑制噪声的缺点,且阈值是根据具体的灰度图像累计直方图自动选取的,故Canny 算子检测边缘效果最好.在对群体米样图像进行边缘提取时,采用Canny 算子能较好地提取出连续的大米轮廓边缘,得到稳定的边缘提取结果.但实验过程中发现由于受到光源照度、信号传输等因素的影响,一些重要的边缘细节也会由于干扰或对比度不足而变得模糊、微弱,如何既有效抑制图像中的噪声,又很好地保护边缘细节应作进一步的研究与探讨.参考文献:[1] 何东健,耿楠,张义宽.数字图像处理[M ].西安:西安电子科技大学出版社,2003.[2] 任宪忠,马小愚.农产品粒形识别研究进展及其在工程中应用现状[J ].农业工程学报,2004,20(3):2762280.[3] 余成波.数字图像处理及MAT LAB 实现[M ].重庆:重庆大学出版社,2003.[4] 夏平,刘馨琼,向学军,等.基于形态学梯度的图像边缘检测算法[J ].计算机技术与发展,2007,17(12):1072109.[5] Roberts L G .Machine percep ti on of three 2di 2mensi on s olids [C ].Op tical and Electr o 2Op 2ti m alI nfor mati on Pr ocessing .Ca mbridge,MA:M I T Press,1965.[6] PrattW K,Ada m s JE .D igital i m age p r ocess 2ing (4thediti on )[J ].Journal of Electr onicI m aging,2007,16(2):029901.[7] S OBEL I .Ca mera models and machine per 2cep ti on [M ].CA:Stanf ord A I Me mo,1970:121.[8] Canny J.A computati onal app r oach t o edgedetecti on [J ].I EEE Transacti ons on PatternAnalysis and Machine I ntelligence,1986,8(6):6792698.[9] 吕哲,王福利,常玉清.一种改进的Canny边缘检测算法.东北大学学报:自然科学版,2007,28(12):168121684.[10]何斌.V isual C ++数字图像处理[M ].北京:人民邮电出版社,2001:394.58 河南工业大学学报(自然科学版)第29卷R ICE EDGE DETECTION BASED ON CANNY OPERAT ORCHEN W ei2dong1,DONG Zhuo2li1,L I Yan2yan2(1.College of Infor m a tion Science and Engineering,Henan U n iversity of Technology,Z hengzhou450052,China;2.D epart m ent of Co m puter S cience,Henan A dm inistrativeInstitute of Politics and L aw,Zhengzhou450002,China)Abstract:The rep resentative algorithm s f or edge detecti on have been p resented.The Canny operat or p rinci p le and algorith m were described in detail and were used t o detect the edges of rice as well.The results showed that the edge inf or mati on which was extracted with the Canny operat or could get the better linear connectivity and thus be app lied t o extract rice edge fr om gr oup s rice sa mp les.Key words:rice;edge detecti on;Canny operat or(上接第54页)[11]赵斌,何绍江.微生物学实验[M].北京:科学出版社,2002:2512252.[12]杨丽,张晶,熊强,等.聚乙烯醇-海藻酸钙作为德氏乳酸杆菌包埋剂的研究[J].南京工业大学学报,2007,29(1):66268. [13]陈功,王联结.P VA膜固定化酵母发酵酒精的研究[J].食品科学,2007,28(8):2442246.[14]王克明,王宇光.P1的研究,2003,14(2):442ST UDY ON I ZI N G PEN IC ILL IUM C I TR IRUM CELLSNUCLEASE P1USING D IFFERENTMULTI P LE CARR IERSS ONG W ei1,Z HANG Q in2,L I Huan2qing1(1.College of B ioengineering,Henan U niversity of Technology,Zhengzhou450052,China;2.Henan A cade m y of F ishery Science,Zhengzhou450001,China)Abstract:Three multi p le carriers were p repared t o i m mobilize the Penicillium Citrirum cells,which were s odi2 um alginate m ixing with gelatin,agar and P VA res pectively.The perf or mance of the carriers was analyzed thr ough batch fer mentati on.The results showed that mechanical strength and che m ical stability of i m mobilized cells were high when the rati o of s odium alginate t o P VA was1∶2.After50days with20batches of fer menta2 ti on on the above conditi ons,the enzy me activity of nuclease P1maintained stability,bet w een468.3U/mL t o 501.4U/mL.Key words:nuclease P1;multi p le carriers;i m mobilizati on。
opencv实现canny边缘检测实验报告
//
//+Smooth[(i+1)*nWidth+(j+1)]-Smooth[(i+1)*nWidth+j])/2;
//
//Q[i*nWidth+j]=(double)(Smooth[i*nWidth+j]-Smooth[(i+1)*nWidth+j]
//
//+Smooth[i*nWidth+(j+1)]-Smooth[(i+1)*nWidth+(j+1)])/2;
图像边缘检测实验报告 一、实验任务
熟悉opencv,实现canny边缘检测算法,比较canny算子,Sobel算子,Prewitt算子。
二、实验原理
1)滤波:边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感, 因此必须采用滤波器来改善与噪声有关的边缘检测器的性能。常见的滤波方法主要有高斯滤波,即 采用离散化的高斯函数产生一组归一化的高斯核,然后基于高斯核函数对图像灰度矩阵的每一点进 行加权求和。
pdkernal_2[i+j*nWindowSize]/=dSum_2; } } //************************************************************************* //高斯滤波 for(int i=0;i<nHeight;i++) { for(int j=0;j<nWidth;j++) {
data3 =(256+img->imageData[j*img->widthStep + i*3 + 2])%256; //R分量
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
cvLoadImage, cvCreateImage, cvCvtColor
grayImage与高斯核做卷积得到 GaussCanny
用Sobel计算G、θ,得到M 对M非极大值印制得到N
计算或设置双阈值
进行边缘检测
cvShowImage
cvReleaseImage 结束
图 5.Canny 流程图
将梯度角离散为圆周的四个扇区之一,用 3*3 的窗口作抑制运算。4 个扇区 对应 3*3 邻域的四种可能组合。 在每一点上,邻域的中心像素 M[x,y]与沿着梯度线的两个像素相比,若其不比它 们的梯度值大,则令 M[x,y] = 0,最后得到 N 矩阵。
图3
(4)用双阈值算法检测和连接边缘 减少假边缘段数量的典型方法是对 N[i,j]使用一个阈值。将低于阈值的所有值赋 零值。 双阈值算法对非极大值抑制图象作用两个阈值τ 1 和τ 2,从而可以得到两个阈 值边缘图象 N1[i,j]和 N2[i,j] 。由于 N2[i,j]使用高阈值得到,因而含 有很少的假边缘,但有间断(不闭合)。双阈值法要在 N2[i,j]中把边缘连接成 轮廓,当到达轮廓的端点时,该算法就在 N1[i,j]的 8 邻点位置寻找可以连接 到轮廓上的边缘,这样,算法不断地在 N1[i,j]中收集边缘,直到将 N2[i,j] 连接起来为止。根据经验数据,一般选取前 79%个灰度值中的最大的灰度值为高 阈值,上下限阈值比为 2:1 到 3:1 之间。 三、算法流程图 A.Sobel、Prewitt
边缘检测
实验报告
姓名: 学号: 一、实验题目 编程实现 Canny、Sobel、Perwit 这三个边缘检测算子,并分析和比较它们性 能。 二、实验原理 边缘是指图像局部强度变化最显著的部分。主要存在于目标与目标、目标与 背景、区域与区域(包括不同色彩)之间,是图像分割、纹理特征和形状特征等图 像分析的重要基础。 边缘检测正是利用物体和背景在某种图像特征上的差异来实 现检测,这些差异包括灰度、颜色或纹理特征,边缘检测实际上就是检测图像特 征发生变化的位置。 a. Sobel 边缘检测算子 Sobel 算子是一种一阶微分算子,它利用像素临近区域的梯度值来计算 1 个 像素的梯度,然后根据一定的阈值来取舍。 Sobel 算子是 3*3算子模板。图 1 所示的 2 个卷积核 dx、 dy 形成 Sobel 算 子。一个核通常的垂直边缘响应最大,而另一个核对水平边缘响应最大。
四、程序实现 程序部分借鉴网上的代码,详细请看附件。 五、实验结果
图 6.原图
图 7.Sobel、Prewitt 边缘检测
Canny 计算梯度的幅值和方向时分别使用了 Sobel 和 Roberts 算子, 见图 8 和 图9
图 8.Canny(Sobel)边缘检测,阈值比 2:1,5:1
图 9.Cann3:1
五、实验结果分析 Prewitt 算子:对噪声有抑制作用,抑制噪声的原理是通过像素平均,但是像 素平均相当于对图像的低通滤波。 Sobel 算子:Sobel 算子和 Prewitt 算子都是加权平均,但是 Sobel 算子认为, 邻域的像素对当前像素产生的影响不是等价的, 所以距离不同的像素具有不同的 权值,对算子结果产生的影响也不同。一般来说,距离越远,产生的影响越小。 因此从图 7 可以看出,Sobel 比 Prewitt 的边缘检测更加明显,Sobel 要比 Prewitt 更能准确检测图像边缘。
开始
cvLoadImage, cvCreateImage, cvCvtColor 计算Gx、Gy
计算G、θ
min(255,G)
cvShowImage
cvReleaseImage 结束
图 4.Sobel、Prewitt 流程图
先通过 OpenCV 把图像灰度化, 过公式 1.1/1.4 算出图像与卷积核的卷积 Gx、 Gy,然后通过公式 1.2、1.3 算出 G、θ ,由于图像已经灰度化,所以 G 和 255 比较取小值,最后利用 OpenCV 输出图像。 B. Canny
图 1 . Sobel 算子
以 A 代表原始图像, Gx 及 Gy 分别代表经横向及纵向边缘检测的图像灰度值, 其公式如下:
A ������1 = ������4 ������7 ������2 ������3 ������5 ������6 ������8 ������9
(1.1) 图像的每一个像素的横向及纵向灰度值通过以下公式结合,来计算该点灰度 的大小: (1.2)
图 2.Prewitt 算子
(1.4) c. Canny 边缘检测算子 Canny 边缘检测基本原理: (1)图象边缘检测必须满足两个条件:一能有效地抑制噪声;二必须尽量精确确 定边缘的位置。 (2)根据对信噪比与定位乘积进行测度,得到最优化逼近算子。这就是 Canny 边 缘检测算子。 (3) 先平滑后求导数的方法。 Canny 的目标是找到一个最优的边缘检测算法,最优边缘检测的含义是: : (1)好的检测- 算法能够尽可能多地标识出图像中的实际边缘。 (2)好的定位- 标识出的边缘要尽可能与实际图像中的实际边缘尽可能接近。 (3)最小响应- 图像中的边缘只能标识一次, 并且可能存在的图像杂讯不应标识为 边缘。 Canny 边缘检测算法的步骤: (1)去噪:灰度化,与高斯核作卷积; 一维高斯核: (1.5) 二维高斯核: (1.6) (2)用一阶偏导有限差分来计算梯度的幅值和方向,常用 Sobel、Roberts 算子; (3)对梯度幅值进行非极大值抑制 得到全局的梯度仍未能确定边缘, 因此为确定边缘, 必须保留局部梯度最大的点, 抑制非极大值。 解决方法:利用梯度的方向
Canny 算子:功能比前面几种都要好,但是它实现起来较为麻烦,Canny 算 子是一个具有滤波,增强,检测的多阶段的优化算子,在进行处理前,Canny 算 子先利用高斯平滑滤波器来平滑图像以除去噪声,Canny 分割算法采用一阶偏导 的有限差分来计算梯度幅值和方向,在处理过程中,Canny 算子还将经过一个非 极大值抑制的过程,最后 Canny 算子还采用两个阈值来连接边缘。 从 Canny 算子的检测结果来看,它对于图像中的纹理丰富的地方和背景处的 边缘, 以及对比度弱的边缘都能得到很好的检出率, 但是对这些边缘点的组织结 构刻画得不是特别细致, 边缘点的位置有小范围的偏差;在大尺度上同样也丢失 了很多细节,只表现出一些轮廓特征。另外,Canny 边缘检测子不容易受到噪声 的干扰,
梯度方向: (1.3) 梯度 G 大于某一阀值则认为该点(x,y)为边缘点 b. Prewitt 边缘检测算子 Prewitt 算子是 3*3算子模板。 图 2 所示的 2 个卷积核 dx 和 dy 形成了 Prewitt 算子。与 Sobel 算子的方法一样,图像中的每个点都用这 2 个核进行卷积。