Canny边缘检测与轮廓提取
- 格式:doc
- 大小:292.90 KB
- 文档页数:25
目标轮廓提取方法目标轮廓提取是计算机视觉和图像处理领域中的一个重要任务,其主要目的是从图像中识别并提取出感兴趣目标的边界或外形。
以下是几种常用的目标轮廓提取方法:边缘检测:这是最直接的方法,主要利用边缘检测算子如Canny、Sobel、Prewitt、Roberts等,它们通过计算图像中像素点的梯度强度来确定边缘。
这种方法对于具有明显边缘特征的目标效果较好,但对于边缘模糊或复杂背景的情况可能效果不佳。
阈值分割:这是一种基于像素值的方法,首先设定一个或多个阈值,然后根据像素值与阈值的关系将图像分为不同的区域。
例如,对于二值图像,可以直接设定一个阈值,大于阈值的像素被视为目标,小于阈值的像素被视为背景。
这种方法简单快速,但对于目标与背景颜色接近或重叠的情况可能效果不佳。
形态学处理:这是一种基于数学形态学的图像处理技术,主要利用结构元素对图像进行膨胀、腐蚀、开运算、闭运算等操作,从而提取或强调目标的轮廓。
这种方法对于去除噪声、填补孔洞、断开连接等任务非常有效。
区域生长:这是一种基于种子点的方法,首先选择一个或多个种子点,然后按照一定的规则(如像素值相似、距离近等)将相邻的像素点加入到目标区域中,直到满足停止条件。
这种方法对于目标内部特征一致、背景复杂的情况效果较好。
深度学习:近年来,随着深度学习技术的发展,越来越多的研究者开始使用神经网络来提取目标轮廓。
例如,U-Net、Mask R-CNN等网络可以直接从图像中预测出目标的轮廓或分割掩码。
这种方法对于复杂场景和多变的目标形状具有较强的适应性,但需要大量的训练数据和计算资源。
总的来说,目标轮廓提取的方法多种多样,需要根据具体的应用场景和目标特性来选择合适的方法。
图像识别中的轮廓提取算法探索引言:图像识别技术如今已经广泛应用于各个领域,其关键之一就是图像中的轮廓提取算法。
轮廓提取的准确与否直接影响到图像识别的效果。
本文将探索图像识别中常用的轮廓提取算法,并对其原理和优缺点进行分析。
一、边缘检测算法边缘检测是图像处理中最基础的一步,是进行轮廓提取的前提。
常用的边缘检测算法有Sobel算子、Laplacian算子和Canny算子等。
1. Sobel算子Sobel算子是一种基于梯度的边缘检测算法,其原理是通过计算每个像素点的梯度值来判断其是否为边缘点。
然后根据梯度值的大小确定边缘的强度,进而提取轮廓。
Sobel算子的优点是计算简单,对噪声鲁棒性强。
但其缺点也较为明显,容易产生边缘断裂的情况,并且对角线边缘检测效果较差。
2. Laplacian算子Laplacian算子是一种基于二阶导数的边缘检测算法,其原理是通过计算图像中每个像素点的二阶导数来判断其是否为边缘点。
Laplacian算子的优点是能够检测出边缘的交叉点,能够更精准地定位边缘。
但其缺点是对噪声比较敏感,容易产生误检。
3. Canny算子Canny算子是一种综合考虑多种因素的边缘检测算法,其原理是通过梯度计算、非极大值抑制和阈值处理来提取目标轮廓。
Canny算子的优点是能够提取清晰且连续的边缘,对噪声抑制效果好。
但其缺点是计算量较大,算法较为复杂。
二、区域生长算法区域生长算法是一种基于种子点的轮廓提取方法,其原理是在图像中选择若干个种子点,然后通过像素点之间的相似性判断来逐渐生长成为一个完整的区域。
区域生长算法的优点是能够提取出连续且相似的轮廓,适用于要求较高的图像识别任务。
但其缺点是对种子点的选择比较敏感,容易受到图像质量和噪声的影响。
三、边缘跟踪算法边缘跟踪算法是一种基于边缘连接的轮廓提取方法,其原理是通过追踪边缘点的连接关系,形成完整的轮廓。
边缘跟踪算法的优点是能够提取出精细的轮廓,并且对噪声抑制效果好。
计算机视觉中的轮廓线提取技术随着现代技术的迅速发展,计算机视觉技术也日渐成熟。
其中轮廓线提取技术是视觉算法中一个重要的环节,它能够从图像中提取出物体的轮廓线,为图像处理、目标检测、三维建模等应用提供基础支持。
本文将介绍计算机视觉中的轮廓线提取技术,包括方法原理、应用场景以及相关算法。
一、轮廓线提取技术原理轮廓线提取是数字图像处理中一个重要的过程,它主要通过对图像进行边缘检测和特征提取,来实现对物体轮廓线的提取。
轮廓线是物体和背景之间的边界线,它具有明显的区分度,适用于识别物体的形状、大小和位置等信息。
轮廓线提取技术的主要流程包括:1. 去噪:对原始图像进行降噪处理,使得图像更加干净,有利于后续的边缘检测和特征提取。
2. 边缘检测:经过降噪后,对图像进行边缘检测,以便提取出物体的轮廓线。
边缘检测算法主要有Sobel算子、Canny算子、Laplacian算子等。
3. 特征提取:提取边缘点,将其组成闭合的轮廓线。
常用的特征提取算法有霍夫变换、最大连通区域分析等。
二、轮廓线提取算法1. Sobel算子Sobel算子是一种边缘检测算法,在数字图像处理中广泛应用。
该算法通过对图像进行卷积操作,来提取出图像中的边缘点。
Sobel算子具有简单、易于实现的特点,但是提取出的边缘点可能不够准确,容易受到噪声的影响。
2. Canny算子Canny算子是一种比较常用的边缘检测算法,它对图像进行多次卷积操作,以提取出图像中的边缘点。
Canny算子具有高灵敏度和低误检率的特点,可以有效地提取出物体的轮廓线,受到很广泛的应用。
3. Laplacian算子Laplacian算子是一种利用二阶偏导数求解的边缘检测算法,它主要通过对图像进行拉普拉斯滤波,来提取出图像中的边缘点。
Laplacian算子具有灵敏度高、响应速度快的特点,但是容易受到噪声的干扰。
三、轮廓线提取技术的应用场景轮廓线提取技术可以应用于多个领域,如图像处理、目标检测、三维建模等。
图像处理中的边缘检测和特征提取方法图像处理是计算机视觉领域中的关键技术之一,而边缘检测和特征提取是图像处理中重要的基础操作。
边缘检测可以帮助我们分析图像中的轮廓和结构,而特征提取则有助于识别和分类图像。
本文将介绍边缘检测和特征提取的常见方法。
1. 边缘检测方法边缘检测是指在图像中找到不同区域之间的边缘或过渡的技术。
常用的边缘检测方法包括Sobel算子、Prewitt算子和Canny算子。
Sobel算子是一种基于梯度的边缘检测算法,通过对图像进行卷积操作,可以获取图像在水平和垂直方向上的梯度值,并计算获得边缘的强度和方向。
Prewitt算子也是一种基于梯度的边缘检测算法,类似于Sobel算子,但其卷积核的权重设置略有不同。
Prewitt算子同样可以提取图像的边缘信息。
Canny算子是一种常用且经典的边缘检测算法。
它结合了梯度信息和非极大值抑制算法,可以有效地检测到图像中的边缘,并且在边缘检测的同时还能削弱图像中的噪声信号。
这些边缘检测算法在实际应用中常常结合使用,选择合适的算法取决于具体的任务需求和图像特点。
2. 特征提取方法特征提取是指从原始图像中提取出具有代表性的特征,以便进行后续的图像分析、识别或分类等任务。
常用的特征提取方法包括纹理特征、形状特征和颜色特征。
纹理特征描述了图像中的纹理信息,常用的纹理特征包括灰度共生矩阵(GLCM)、局部二值模式(LBP)和方向梯度直方图(HOG)。
GLCM通过统计图像中像素之间的灰度变化分布来描述纹理特征,LBP通过比较像素与其邻域像素的灰度值来提取纹理特征,HOG则是通过计算图像中梯度的方向和强度来提取纹理特征。
这些纹理特征可以用于图像分类、目标检测等任务。
形状特征描述了图像中物体的形状信息,常用的形状特征包括边界描述子(BDS)、尺度不变特征变换(SIFT)和速度不变特征变换(SURF)。
BDS通过提取物体边界的特征点来描述形状特征,SIFT和SURF则是通过提取图像中的关键点和描述子来描述形状特征。
轮廓特征提取
轮廓特征提取是一种常用的图像处理技术,用于从图像中提取物体的轮廓信息。
这种技术可以应用于许多领域,例如医学图像分析、工业自动化、机器人视觉等。
轮廓特征提取的主要步骤包括:
1. 边缘检测:通过应用一些算法,如Canny算子、Sobel滤波器等,从图像中提取出物体的边缘。
2. 轮廓提取:在边缘检测的基础上,通过对边缘进行处理,提取出物体的轮廓。
常用的轮廓提取算法包括分水岭算法、连通域分析等。
3. 特征提取:在得到物体的轮廓后,可以通过一些特征提取方法,如Hu不变矩、Zernike矩、傅里叶描述子等,提取出物体的形状、纹理等特征信息。
轮廓特征提取的应用非常广泛,例如在医学图像分析中,可以通过提取肿瘤轮廓的特征信息,对肿瘤进行识别和分类;在工业自动化中,可以通过提取产品轮廓的特征信息,实现自动检测和质量控制;在机器人视觉中,可以通过提取环境中物体的轮廓特征,实现机器人的感知和导航等功能。
- 1 -。
C语⾔实现opencv提取直线、轮廓及ROI实例详解⼀、Canny检测轮廓在上⼀篇⽂章中有提到sobel边缘检测,并重写了soble的C++代码让其与matlab中算法效果⼀致,⽽soble边缘检测是基于单⼀阈值的,我们不能兼顾到低阈值的丰富边缘和⾼阈值时的边缘缺失这两个问题。
⽽canny算⼦则很好的弥补了这⼀不⾜,从⽬前看来,canny边缘检测在做图像轮廓提取⽅⾯是最优秀的边缘检测算法。
canny边缘检测采⽤双阈值值法,⾼阈值⽤来检测图像中重要的、显著的线条、轮廓等,⽽低阈值⽤来保证不丢失细节部分,低阈值检测出来的边缘更丰富,但是很多边缘并不是我们关⼼的。
最后采⽤⼀种查找算法,将低阈值中与⾼阈值的边缘有重叠的线条保留,其他的线条都删除。
本篇⽂章中不对canny的算法原理作进⼀步说明,稍后会在图像处理算法相关的⽂章中详细介绍。
下⾯我们⽤OpenCV中的Canny函数来检测图像边缘int main(){Mat I=imread("../cat.png");cvtColor(I,I,CV_BGR2GRAY);Mat contours;Canny(I,contours,125,350);threshold(contours,contours,128,255,THRESH_BINARY);namedWindow("Canny");imshow("Canny",contours);waitKey();return 0;}显⽰效果如下:⼆、直线检测⽤到的是霍夫变换检测直线的算法直线在图像中出现的频率⾮常之⾼,⽽直线作为图像的特征对于基本内容的图像分析有着很重要的作⽤,本⽂通过OpenCV中的hough变换来检测图像中的线条。
我们先看最基本的Hough变换函数HoughLines,它的原型如下:void HoughLines(InputArray image, OutputArray lines, double rho, double theta, int threshold, double srn=0, double stn=0 );它的输⼊是⼀个⼆值的轮廓图像,往往是边缘检测得到的结果图像;它的输出是⼀个包含多个Vec2f点的数组,数组中的每个元素是⼀个⼆元浮点数据对<rou,theta>,rou代表直线离坐标原点的距离,theta代表⾓度。
在MATLAB中,可以使用Canny算法来提取图像的轮廓线。
以下是一个简单的示例代码,演示如何使用Canny算法提取轮廓线:
matlab
# 读取图像
img = imread('image.jpg');
# 转换为灰度图像
gray_img = rgb2gray(img);
# 使用Canny算法提取轮廓线
edges = edge(gray_img, 'Canny');
# 显示原始图像和提取的轮廓线
subplot(1, 2, 1);
imshow(img);
title('原始图像');
subplot(1, 2, 2);
imshow(edges);
title('提取的轮廓线');
在这个示例中,首先使用imread函数读取一张图像,然后使用rgb2gray函数将其转换为灰度图像。
接下来,使用edge函数并指定'Canny'作为算法参数来提取轮廓线。
最后,使用imshow函数显示原始图像和提取的轮廓线。
需要注意的是,Canny算法是一种多阶段算法,包括滤波、非极大值抑制、双阈值检测和滞后阈值等步骤。
在MATLAB中,Canny算法的实现可能因版本而异,因此具体实现细节可能会有所不同。
OpenCV笔记(3)(Canny边缘检测、⾼斯⾦字塔、拉普拉斯⾦字塔、图像轮廓、模板匹配)⼀、Canny边缘检测Canny边缘检测是⼀系列⽅法综合的结果。
其中主要包含以下步骤:1.使⽤⾼斯滤波器,平滑图像,滤除噪声。
2.计算图像中每个像素点的梯度强度和⽅向。
3.应⽤⾮极⼤值抑制(NMS:Non-Maximum Suppression),以消除边缘检测带来的杂散相应。
4.应⽤双阈值(Double-Threshold)检测来确定真实和潜在的边缘。
5.通过抑制孤⽴的弱边缘最终完成边缘检测。
1.⾼斯滤波器平滑图像。
2.计算梯度和⽅向使⽤X和Y⽅向的Sobel算⼦来分别计算XY⽅向梯度:每个点的梯度强度有XY⽅向的梯度计算出来:计算每个点梯度的⽅向:3.使⽤NMS有两种⽅法,第⼀种⽅法(插值法,⽐较复杂):通过计算出的梯度⽅向,找到与周边临近点的边的交点,然后使⽤权重计算交点的值,假设g1和g2之间的交点(左上的⿊点)处于6/4的位置,那么他的值为M = g1*(1-0.6)+g2*(0.4)。
当算出左上的⿊点和右下的⿊点值后,⽤这两个点与C的值进⾏⽐较,如果都⼩于C,则C归为边界。
如果有⼀个⽐C⼤,则丢弃C,这就叫抑制。
第⼆种⽅法(指定8个⽅向,不⽤插值,简化版):4.双阈值检测在NMS的基础上,判断⼀个边界点的梯度强度: (1) 如果值⼤于maxVal,则处理为边界 (2) 如果值minVal<梯度值<maxVal,再检查是否挨着其他边界点,如果旁边没有边界点,则丢弃,如果连着确定的边界点,则也认为其为边界点。
(3) 梯度值<minVal,舍弃。
通过以上步骤,完成Canny边缘检测。
调⽤Canny API如下:# 使⽤Canny边界检测def use_canny(image):# 后⾯两个参数代表双阈值检测的minVal和maxValimg1 = cv.Canny(image, 50, 100)cv.imshow('img1', img1)# 这⾥使⽤更⼤的minVal和maxVal,细节边界变少了img2 = cv.Canny(image, 170, 250)cv.imshow('img2', img2)⼆、⾼斯⾦字塔图像⾦字塔:Image pyramid如图中所⽰,从0到3是⼀个下采样过程(指图⽚越来越⼩的⽅向),从3到0是⼀个上采样过程(将图⽚变⼤的过程),⼀次下采样加⼀次上采样不等于原图像,因为会损失⼀些细节信息。
边缘检测与图像轮廓提取算法研究摘要:边缘检测与图像轮廓提取算法是计算机视觉领域的重要研究方向之一。
本文通过对边缘检测与图像轮廓提取算法的研究,总结了常用的边缘检测方法,并对其原理和应用进行了详细的介绍和分析。
本文还对不同方法进行了比较,并讨论了其优缺点及适用范围。
通过本文的研究,可以为计算机视觉领域的相关工作提供参考和借鉴。
1. 引言随着计算机视觉技术的不断发展,图像处理成为一个重要的研究方向。
在图像处理中,边缘检测与图像轮廓提取是一个基础而重要的任务。
它可以在数字图像中找到物体或场景之间的分界线或区域,并将其转化为数字化信息。
2. 边缘检测方法2.1 Roberts算子Roberts算子是一种基于差分运算符来进行边缘检测的方法。
它通过将一个2×2大小的模板应用于原始图像中相邻点之间来计算边缘强度。
Roberts算子简单易行,计算速度快,但对于噪声敏感。
2.2 Sobel算子Sobel算子是一种基于梯度运算符的边缘检测方法。
它通过将一个3×3大小的模板应用于原始图像中的每一个像素点来计算梯度强度。
Sobel算子对噪声有一定的抑制作用,但对边缘方向有一定的模糊性。
2.3 Canny边缘检测Canny边缘检测是一种基于多步骤操作来进行边缘检测的方法。
它首先进行高斯滤波以抑制噪声,然后通过计算梯度幅值和方向来确定像素点是否为边缘点,最后使用非极大值抑制和双阈值处理来提取最终的图像轮廓。
3. 图像轮廓提取方法3.1 链码法链码法是一种基于连续性原则进行图像轮廓提取的方法。
它通过将轮廓线转化为由连续码字序列组成的链码表示形式,并根据相邻点之间是否连续来确定链码中每个点之间的关系。
3.2 轮廓跟踪法轮廓跟踪法是一种基于像素跟踪的图像轮廓提取方法。
它通过从图像中的一个起始点开始,按照一定的规则沿着边缘进行像素跟踪,直到回到起始点为止。
轮廓跟踪法可以得到精确的轮廓线,但对于复杂图像处理较为困难。
摘要 (I)Abstract (II)1 绪论 (1)2 设计内容与OpenCV简介 (2)2.1 设计任务内容 (2)2.2 OpenCV简介 (2)3 理论分析 (3)3.1 边缘检测 (3)3.1.1 图像的边缘 (3)3.1.2 边缘检测的基本步骤 (3)3.2 轮廓提取 (4)4 边缘检测的算法比较 (5)4.1 Reborts算子 (5)4.2 Sobel算子 (5)4.3 Prewitt 算子 (6)4.4 Kirsch 算子 (7)4.5 LOG算子 (7)4.6 Canny算子 (8)5 实验仿真 (10)5.1算法设计 (10)5.2 实验结果 (11)6 分析与总结 (12)参考文献 (13)附录 (14)边缘检测是图像处理和计算机视觉中的基本问题,它的目的是标识出数字图像中亮度变化明显的点。
图像经过边沿检测处理之后,不仅大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。
事实上,边缘存在于图像的不规则结构和不平稳现象中,也即存在于信号的突变点处,这些点给出了图像轮廓的位置。
这些轮廓常常是我们在图像边缘检测时,所需要的非常重要的一些特征条件,这就需要我们对一幅图像检测并提取出它的边缘。
可用于图像边缘检测和轮廓提取的方法有很多,其中包括有常见的Robert边缘算子、Prewitt 边缘算子、Sobel边缘算子等等。
本文首先将会从数字图像处理的角度,对几种边缘检测算法进行详细的分析,然后会并选择其中一种边缘检测算法进行实验。
考虑到以后进一步的学习,本文将会使用openCV对算法进行实现。
最后,本文将会把实验获得的实际效果,与理论分析的结果进行比对,并以此对本次实验进行总结。
关键字:边缘检测轮廓提取图像处理openCVAbstractEdge detection is the basic problem in image processing and computer vision, its purpose is to identify the digital image brightness changes in the obvious points.Image after edge detection processing, not only greatly reduces the amount of data, and eliminated can think irrelevant information, keep the structure of the image important attribute.Edge of image, in fact, exist in the image of the irregular structure and unstable phenomenon, which exists in the abrupt change point of the signal, the point the location of the image contour is presented.These contours are often in image edge detection, we need some important characteristics of the condition, this needs us to the edge of an image detection and extract it.There are so many method can be used in image edge detection and contour extraction, including common Robert edge operator, Prewitt edge operator, Sobel edge operator and so on.At first, this paper will, from the perspective of digital image processing and analysis of several kinds of edge detection algorithms in detail, and then select one of the edge detection algorithm for experiments.After considering the further study, this paper implemented the algorithm will use openCV.Finally, this article will obtain the actual effect of the experiment, and compares the results of theoretical analysis, and then to summarize this experiment.Keywords: Edge detection Contour extraction Image processing openCV1 绪论数字图像处理技术的迅猛发展,其应用前景得到了不可限量的扩展,如今各行各业都在积极发展与图像相关的技术。
其应用逐渐凸显其魅力,其应用如医学影像、航天航空、无人驾驶、自动导航、工业控制、导弹制导、文化艺术等。
边缘检测在图像处理和计算机视觉等领域骑着重要的作用,是图像分析、模式识别、目标检测与分割等的前期处理。
前期边缘检测的好坏,直接影响后期更高级处理的精度。
自从1986年John Canny提出了最优边缘检测算子的三条准则并推导出了一个近似实现。
但是在实际中,真正实现这一目标尚有较大的难度。
这是因为:(1)实际图像一般都含有噪声,并且噪声的分布信息业是未知的,同时噪声和边缘都属于高频信息,在进行滤波的同时,虽然能够在一定程度上抑制噪声,却也丢失了边缘信息。
(2)由于场景、光照条件的边缘等原因,同一场景在不同光照条件下得到的边缘可能也是不同的,设置的阈值也可能是不同的。
针对这些问题,如何进行改进,并得到较理想的边缘检测算子是有必要的。
另一方面,轮廓提取技术是图像分割、目标区域识别区域行状提取等图像分析处理领域十分重要的基础。
寻求非接触、精度高、具有综合分析能力的识别方法来代替人工目测,解决图像表面的模式识别和测量问题,是图像加工行业面临的一大难题,也是值得我们长期探讨的科研课题。
2 设计内容与OpenCV简介2.1 设计任务内容针对一幅图像,利用边缘检测算子(如Robert算子、Sobel算子、Prewitt算子、Laplace 算子、Kirsch算子和Marr算子)检测出图像的边缘,然后采取轮廓提取算法得到封闭的二值图像轮廓。
2.2 OpenCV简介OpenCV的全称是:Open Source Computer Vision Library,是一个基于开源发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。
它轻量级而且高效——由一系列 C 函数和少量C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
相对于matlab而言,OpenCV操作起来较为复杂,需要一定C++编程基础,对没有语言基础的初学者而言较为困难。
但是OpenCV有很多不容忽视的优点:(1)具有更强大的数字图像处理能力;(2)具有良好的可移植性;(3)由于是一个C++的类库,因此在实际中运用更加广泛。
考虑到上述因素,此次试验将选择OpenCV作为开发工具。
3 理论分析3.1 边缘检测3.1.1 图像的边缘在数字图像中,边缘是指图像局部变化最显著的部分,边缘主要存在于目标与目标,目标与背景之间,是图像局部特性的不连续性,如灰度的突变、纹理结构的图标、颜色的图标等。
尽管图像的边缘点产生的原因各不相同,但他们都是图形上灰度不连续或灰度几句辩护的点,图像边缘分为阶跃状、斜坡状和屋顶状。
从成因上看,一般图像边缘主要由四个方面的因素形成:(1)图像灰度在表面法向变化的不连续造成的边缘;(2)图像对像素在空间上不一致形成的边缘;(3)在光滑的表面上由于颜色的不一致形成的边缘;(4)物体的光影造成的边缘。
图像边缘提取的作用有:(1)改良图像质量;(2)分离对象;(3)理解和重构视觉场景;(4)识别特征。
3.1.2 边缘检测的基本步骤(1)滤波:边缘检测主要基于导数计算,会受到噪声的影响,可以通过设计滤波器来降低噪声,但滤波器在降低噪声的同时也会导致边缘精度的损失。
(2)增强:增强算法将邻域中灰度有显著变化的点突出显示。
一般通过计算梯度幅值来完成。
(3)检测:在有些图像中梯度幅值较大的并不是边缘点。
最简单的边缘检测是梯度幅值阈值判定。
(4)定位:精确确定边缘的位置。
3.2 轮廓提取图像的轮廓作为图像的一种基本特征,经常被应用到较高层次的图像应用中去。
它在图像识别,图像分割,图像增强以及图像压缩等的领域有广泛应用,也是图像处理的基础。
图像的轮廓往往携带着一幅图像的大部分信息。
而轮廓即在于图像的不规则结构和不稳定上,也存在于信号的突变点处,这些点给出了图像轮廓的位置,这些轮廓常常是我们在图像边缘检测时所需的非常重要的特征条件,因而这就需要我们对一幅图像检测并提取出它的轮廓。
经典的轮廓提取技术大都基于微分运算。
首先通过平滑来滤除图像中的噪声,然后进行一阶微分或二阶微分运算,求得梯度最大值或二阶导数的过零点,最后选取适当的阈值来提取边界。
本次课设所用的轮廓提取算法非常简单,就是掏空内部点:如果原图中有一点为黑,且它的8个相邻点都是黑色时(此时该点是内部点),则将该点删除。
要注意的是,我们处理的虽然是二值图,但实际上是256级灰度图,不过只用到了0和255两种颜色。
4 边缘检测的算法比较特征提取作为图像边缘检测的一个重要内容,发展了众多的方法。
这些方法经过实践的检验,成为了经典的内容。
经典的边缘检测算子包括:Roberts 算子、Prewitt 算子、Sobel 算子、Log 算子、Canny 算子等,这些经典的边缘提取算子在使用时都是使用预定义的边缘模型去匹配。
4.1 Reborts 算子Reboerts 算子是一种利用局部差分来寻找边缘的算子,Roberts 梯度算子所采用的是对角方向相邻两像素值之差,算子形式如下:)1,1(),(---=j i f j i f Gx)1,(),1(---=j i f j i f Gy22|),(|y x G G y x G +=Roberts 梯度算子对应的卷积模版为:用以上两个卷积算子与图像运算后,可求出图像的梯度幅值 G ( x,y),然后选择适当的阈值τ ,若 G ( x,y)>τ,则 (i ,j)为边缘点,否则,判断 (i ,j)为非边缘点。