搜档网
当前位置:搜档网 › Canny边缘检测与轮廓提取

Canny边缘检测与轮廓提取

Canny边缘检测与轮廓提取
Canny边缘检测与轮廓提取

摘要...................................................................................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对算法进行实现。最后,本文将会把实验获得的实际效果,与理论分析的结果进行比对,并以此对本次实验进行总结。

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

Abstract

Edge 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 openCV

1 绪论

数字图像处理技术的迅猛发展,其应用前景得到了不可限量的扩展,如今各行各业都在积极发展与图像相关的技术。其应用逐渐凸显其魅力,其应用如医学影像、航天航空、无人驾驶、自动导航、工业控制、导弹制导、文化艺术等。边缘检测在图像处理和计算机视觉等领域骑着重要的作用,是图像分析、模式识别、目标检测与分割等的前期处理。前期边缘检测的好坏,直接影响后期更高级处理的精度。

自从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 Gy

2

2|),(|y x G G y x G +=

Roberts 梯度算子对应的卷积模版为:

用以上两个卷积算子与图像运算后,可求出图像的梯度幅值 G ( x,y),然后选择适当的阈值τ ,若 G ( x,y)>τ,则 (i ,j)为边缘点,否则,判断 (i ,j)为非边缘点。由此得到一个二值图像 { g (i,j)},即边缘图像。Roberts 算子采用的是用对角线方向上相邻两像素的差近似梯度幅值来检测边缘,它的定位精度高,对于水平和垂直方向的边缘,检测效果较好,而对于有一定倾角的斜边缘,检测效果则不理想,存在着许多的漏检。另外,在含噪声的情况下,Roberts 算子不能有效的抑制噪声,容易产生一些伪边缘。因此,该算子适合于对低噪声且具有陡峭边缘的图像提取边缘。

4.2 Sobel 算子

Sobel 算子在边缘检测算子扩大了其模版,在边缘检测的同时尽量削弱了噪声。其模版大小为3×3,其将方向差分运算与局部加权平均相结合来提取边缘。在求取图像梯度之前,先进行加权平均,然后进行未分,加强了对噪声的一致。Sobel 算子所对应的卷积模版为:

??

????-=1001Gx ??????-=0110Gy ??

??

?

?????---=101202`101Gx ????

?

?????--=121000

121

Gy

图像中的每个像素点和以上水平和垂直两个卷积算子做卷积运算后,再计算得到梯度幅值 G ( x,y),然后选取适当的阈值τ ,若 G ( x,y)>τ,则 (i ,j)为边缘点,否则,判断 (i ,j)为非边缘点。由此得到一个二值图像 { g (i,j)},即边缘图像。Sobel 算子在空间上比较容易实现,不但产生较好的边缘检测效果,同时,由于其引入了局部平均,使其受噪声的影响也较小。若使用较大的邻域,抗噪性会更好,但也增加了计算量,并且得到的边缘比较粗。在对精度要求不是很高的场合下,Sobel 算子是一种较为常用的边缘检测算法。

4.3 Prewitt 算子

同 Sobel 算子相似,Prewitt 算子也是一种将方向的差分运算和局部平均相结合的方法,也是取水平和垂直两个卷积核来分别对图像中各个像素点做卷积运算,所不同的是,Sobel 算子是先做加权平均然后再微分,Prewitt 算子是先平均后求微分,其对应的卷积模版为:

(2.3.8)

图像中的每个像素点和以上水平和垂直两个卷积算子做卷积运算后,再计算得到梯度幅值 G ( x,y),然后选取适当的阈值τ ,若 G ( x,y)>τ,则 (i,j)为边缘点,否则,判断 (i,j)为非边缘点。由此得到一个二值图像 { g (i,j)},即边缘图像。在此基础上,有人提出了改进的Prewitt 算子,将其扩展到八个方向,依次用这些边缘模板去检测图像,与被检测区域最为相似的样板给出最大值。用这个最大值作为算子的输出值 P[ i ,j],这样就可将边缘像素检测出来。

Prewitt 算子通过对图像上的每个像素点的八方向邻域的灰度加权差之和来进行检测边缘,对噪声有一定抑制作用,抗噪性较好,但由于采用了局部灰度平均,因此容易检测出伪边缘,并且边缘定位精度较低。

??

??

?

?????---=101101`101Gx ?

?

???

?????---=111000111Gy

4.4 Kirsch 算子

Kirsch 算子是一种 3×3 的非线性方向算子。其基本思想是希望改进取平均值的过程,从而尽量使边缘两侧的像素各自与自己同类的像素取平均值,然后再求平均值之差,来减小由于取平均值所造成的边缘细节丢失。通常采用八方向 Kirsch 模板的方法进行检测,取其中最大的值作为边缘强度,而将与之对应的方向作为边缘方向。常用的八方向 Kirsch 模板如下所示:

实际的应用中,通常都是利用简单的卷积核来计算方向差分的,不同的算子对应着不同的卷积核。它们在图像的像素点上所产生的两个方向的偏导数用均方值或者绝对值求和的形式来近似代替梯度幅值,然后选取一个合适的阈值,用所得到的梯度幅值和所设定的阈值进行比较来判断边缘点。若大于所取的阈值,则判断为边缘点;否则,判断为非边缘点。很显然,在提取边缘的过程中,阈值的选取特别重要,尤其在含噪图像中,阈值的选择要折衷考虑噪声造成的伪边缘和有效边缘的丢失。

4.5 LOG 算子

LOG 算子基本思想是:先在一定的范围内做平滑滤波,然后再利用差分算子来检测在相应尺度上的边缘。滤波器的选择要考虑以下两个因素:其一是滤波器在空间上要求平稳,即要求空间位置误差 Δ x 要小;其二是平滑滤波器本身要求是带通滤波器,并且在有限的带通内是平稳的,即要求频域误差 Δω 要小。根据信号处理中的测不准原理, Δx 和 Δ ω是相互矛盾的,而达到测不准下限的滤波器就是高斯滤波器。Marr 和 Hildreth 提出的这种差分算子是各向同性的拉普拉斯二阶差分算子。该边缘检测器的基本特征是:

(1) 所用的平滑滤波器是高斯滤波器

(2) 增强步骤采用的是二阶导数(即二维拉普拉斯函数)

????

?

?????-----335305335????

?

?????-----355305333????

??????-----555303333????

??????-----553503`333?

?

?

???????-----533503533?????

?????-----333503`553??????????-----333305355

??????????-----333303555

(3) 边缘检测的判据是二阶导数过零点并且对应一阶导数的极大值

该方法的特点是先用高斯滤波器与图像进行卷积,既平滑了图像又降低了噪声,使孤立的噪声点和较小的结构组织被滤除。然而由于对图像的平滑会导致边缘的延展,因此只考虑那些具有局部梯度极大值的点作为边缘点,这可以用二阶导数的零交叉来实现。拉普拉斯函数可用作二维二阶导数的近似,因为它是一种标量算子。为了避免检测出非显著的边缘,所以应该选择一阶导数大于某一阈值的零交叉点来作为边缘点。实际应用中,常用的LOG算子的模版为:

这说明,高斯平滑运算不但可以滤除噪声,还会导致图像中的边缘和其它尖锐不连续部分模糊,而模糊程度取决于空间尺度因子σ的大小。σ越大,高斯滤波对噪声的滤除效果越好,但同时也会丢失重要的边缘信息,影响到边缘检测器的性能。如果σ较小,又可能导致平滑作用不完全而留有较多的噪声。因此在实际应用中,要根据情况选择适当的σ。

4.6 Canny算子

1986年,Canny从边缘检测算子应该满足的三个准则出发,推导出了最优边缘检测算子Canny算子,该算子是目前理论上相对最完善的一种边缘检测算法。Canny提出的评价边缘检测性能优劣的三个准则分别是:

(1)好的信噪比准则。即将非边缘点判为边缘点的概率要低,将边缘点判为非边缘点的概率要低;

(2)好的定位性能准则。即检测出的边缘点要尽可能在实际边缘的中心;

(3)单边缘响应准则。即单一边缘具有唯一响应,单一边缘产生的多个响应的概率要低,并且对虚假边缘的响应应得到最大抑制。

利用Canny算子检测边缘的算法如下:

(1)用式所示的高斯函数h(r)对图像进行平滑滤波,去除图像中的噪声。

(2)在每一点计算出局部梯度和边缘方向,可以利用Sobel算子、Roberts算子等来计算。

边缘点定义为梯度方向上其强度局部最大的点。

(3)对梯度进行“非极大值抑制”。

(4)双阐值化和边缘连接。

5.1算法设计

通过以上各种边缘检测算法之间的比较可知,Canny算子使用两个阈值检测强信号和弱信号边缘,如果它们被连接到边缘,那么输出只包含弱边缘。因此,此方法更适合用于检测真实得弱边缘,本次实验决定采用Canny算子,算法具体步骤如下:

(1)求图像与高斯平滑滤波器卷积:

(2)使用一阶有限差分计算偏导数的两个阵列P与Q:

(3)幅值和方位角:

(4)非极大值抑制(NMS ):细化幅值图像中的屋脊带,即只保留幅值局部变化最大的点。将梯度角的变化范围减小到圆周的四个扇区之一,方向角和幅值分别为:

非极大值抑制通过抑制梯度线上所有非屋脊峰值的幅值来细化M[i,j],中的梯度幅值屋脊.这一算法首先将梯度角θ[i,j]的变化范围减小到圆周的四个扇区之一,如图5-1所示:

图5-1 圆周四个扇脚

通过算法的设计,得到的图像如图5-2、图5-3和图5-4所示。其中图5-2为原图,图5-3为边缘检测后得到的图像,图5-4为对图5-3进行轮廓提取所得的图像。

图5-2 原图像图5-3 边缘检测

图5-4 轮廓提取

6 分析与总结

由实验结果可知,Canny算子采用高斯函数对图像作平滑处理,因此具有较强的抑制噪声能力,同样该算子也会将一些高频边缘平滑掉,造成边缘丢失。Canny算子也存在不足之处,一是为了得到较好的边缘检测结果,它通常需要使用较大的滤波尺度,这样容易丢失一些细节;二是Canny算子的双阈值要人为的选取,不能够自适应。

通过此次课设让我对OpenCV有了一定的理解,尽管许多内部函数还不知道,程序设计也只是一知半解,但对以后的学习有了较好的指引。

不仅在知识学习上有较多的收获,在学习态度和方法上也起到了端正和提高作用,为了寻求知识的那份执著。这次课程设计给我们提供了一个应用自己所学知识的机会,从到图书馆查找资料到对程序的设计和仿真,都对我们所学的知识进行了检验。让我明白了设计系统程序的一些基本思想。

总体来说,这次课程设计让我受益匪浅。在摸索该如何设计程序使之实现所需功能的过程中,虽然很困难,但也很有趣,培养了我的设计思维,锻炼了操作能力。在让我体会到了设计的艰辛的同时,更让我体会到成功的喜悦和快乐。

参考文献

[1] Canny. A Computational Approach to Edge Detection, IEEE Trans. on Pattern Analysis and Machine Intelligence, 8(6), pp. 679-698 (1986).

[2] 刘泉编.通信电子线路.武汉理工出版社.2007年

[3] 樊昌信等编.通信原理.国防工业出版社.2007年

[4] 数字信号处理.科学出版社.2007年

[5] 于仕琪等编.OpenCV教程(基础篇).2006年

附录

关键代码如下:

void Canny( InputArray _src, OutputArray _dst,

double low_thresh, double high_thresh,

int aperture_size, bool L2gradient )

{

Mat src = _src.getMat();

CV_Assert( src.depth() == CV_8U );

_dst.create(src.size(), CV_8U);

Mat dst = _dst.getMat();

if (!L2gradient && (aperture_size & CV_CANNY_L2_GRADIENT) == CV_CANNY_L2_GRADIENT) {

//backward compatibility

}

if ((aperture_size & 1) == 0 || (aperture_size != -1 && (aperture_size < 3 || aperture_size > 7))) CV_Error(CV_StsBadFlag, "");

const int cn = src.channels();

cv::Mat dx(src.rows, src.cols, CV_16SC(cn));

cv::Mat dy(src.rows, src.cols, CV_16SC(cn));

cv::Sobel(src, dx, CV_16S, 1, 0, aperture_size, 1, 0, cv::BORDER_REPLICATE);

cv::Sobel(src, dy, CV_16S, 0, 1, aperture_size, 1, 0, cv::BORDER_REPLICATE);

if (low_thresh > high_thresh)

std::swap(low_thresh, high_thresh);

if (L2gradient)

{

low_thresh = std::min(32767.0, low_thresh);

high_thresh = std::min(32767.0, high_thresh);

if (low_thresh > 0) low_thresh *= low_thresh;

if (high_thresh > 0) high_thresh *= high_thresh;

}

int low = cvFloor(low_thresh);

int high = cvFloor(high_thresh);

int* mag_buf[3];

mag_buf[0] = (int*)(uchar*)buffer;

mag_buf[1] = mag_buf[0] + mapstep*cn;

mag_buf[2] = mag_buf[1] + mapstep*cn;

memset(mag_buf[0], 0, /* cn* */mapstep*sizeof(int));

uchar* map = (uchar*)(mag_buf[2] + mapstep*cn);

memset(map, 1, mapstep);

memset(map + mapstep*(src.rows + 1), 1, mapstep);

int maxsize = std::max(1 << 10, src.cols * src.rows / 10);

std::vector stack(maxsize);

uchar **stack_top = &stack[0];

uchar **stack_bottom = &stack[0];

#define CANNY_PUSH(d) *(d) = uchar(2), *stack_top++ = (d)

#define CANNY_POP(d) (d) = *--stack_top

// calculate magnitude and angle of gradient, perform non-maxima supression. // fill the map with one of the following values:

// 0 - the pixel might belong to an edge

// 1 - the pixel can not belong to an edge

// 2 - the pixel does belong to an edge

for (int i = 0; i <= src.rows; i++)

{

int* _norm = mag_buf[(i > 0) + 1] + 1;

if (i < src.rows)

{

short* _dx = dx.ptr(i);

short* _dy = dy.ptr(i);

if (!L2gradient)

{

for (int j = 0; j < src.cols*cn; j++)

_norm[j] = std::abs(int(_dx[j])) + std::abs(int(_dy[j]));

}

else

{

for (int j = 0; j < src.cols*cn; j++)

_norm[j] = int(_dx[j])*_dx[j] + int(_dy[j])*_dy[j];

}

if (cn > 1)

{

for(int j = 0, jn = 0; j < src.cols; ++j, jn += cn)

{

int maxIdx = jn;

for(int k = 1; k < cn; ++k)

if(_norm[jn + k] > _norm[maxIdx]) maxIdx = jn + k;

_norm[j] = _norm[maxIdx];

_dx[j] = _dx[maxIdx];

_dy[j] = _dy[maxIdx];

}

}

_norm[-1] = _norm[src.cols] = 0;

}

else

memset(_norm-1, 0, /* cn* */mapstep*sizeof(int));

// at the very beginning we do not have a complete ring

// buffer of 3 magnitude rows for non-maxima suppression if (i == 0)

continue;

uchar* _map = map + mapstep*i + 1;

_map[-1] = _map[src.cols] = 1;

int* _mag = mag_buf[1] + 1; // take the central row ptrdiff_t magstep1 = mag_buf[2] - mag_buf[1];

ptrdiff_t magstep2 = mag_buf[0] - mag_buf[1];

const short* _x = dx.ptr(i-1);

const short* _y = dy.ptr(i-1);

if ((stack_top - stack_bottom) + src.cols > maxsize)

{

int sz = (int)(stack_top - stack_bottom);

maxsize = maxsize * 3/2;

stack.resize(maxsize);

stack_bottom = &stack[0];

stack_top = stack_bottom + sz;

}

int prev_flag = 0;

for (int j = 0; j < src.cols; j++)

最新Canny边缘检测与轮廓提取汇总

C a n n y边缘检测与轮 廓提取

摘要................................................................................................................................................... Abstract.......................................................................................................................................... I 1 绪论 0 2 设计内容与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算子 (5) 4.3 Prewitt 算子 (5) 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对算法进行实现。最后,本文将会把实验获得的实际效果,与理论分析的结果进行比对,并以此对本次实验进行总结。 关键字:边缘检测轮廓提取图像处理openCV

边缘提取不同算子方法的分析比较

目录 摘要....................................................................... I 1简介. (1) 1.1MATLAB 简介 (1) 1.2数字图像处理简介 (1) 2边缘检测 (3) 2.1边缘的含义 (3) 2.2边缘检测的含义 (3) 2.3边缘检测的步骤 (3) 3常用的边缘检测算子 (5) 3.1微分算子 (5) 3.1.1 Sobel算子 (5) 3.1.2 robert算子 (6) 3.1.3 prewitt算子 (6) 3.2 Laplacian算子 (6) 3.3 Log算法 (7) 3.4 Canny边缘检测法 (7) 4程序设计 (8) 5运行结果 (10) 6边缘检测结果比较 (12) 7心得体会 (13) 参考文献 (14)

摘要 边缘检测是利用边缘增强算子,突出图像中的局部边缘,然后定义象素的“边缘强度”,通过设置阈值的方法提取边缘点集。本设计利用MATLAB软件分析几种应用于数字图像处理中的边缘检测算子,根据它们在实践中的应用结果进行研究,主要包括:Robert 边缘算子、Prewitt 边缘算子、Sobel 边缘算子、LoG边缘算子以及Laplacian 算子等对图像边缘检测,根据实验处理结果对几种算子进行比较。 关键词:Matlab边缘检测算子

1简介 1.1MATLAB简介 Matlab是国际上最流行的科学与工程计算的软件工具,它起源于矩阵运算,已经发展成一种高度集成的计算机语言。有人称它为“第四代”计算机语言,它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化界面设计、便捷的与其它程序和语言接口的功能。随着Matlab语言功能越来越强大,不断适应新的要求并提出新的解决方法,可以预见,在科学运算,自动控制与科学绘图领域,Matlab语言将长期保持其独一无二的地位。 Matlab 的特点如下: (1) 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来; (2) 具有完备的图形处理功能,实现计算结果和编程的可视化; (3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握; (4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具. Matlab的优势如下: (1)友好的工作平台和编程环境 (2)简单易用的程序语言 (3)强大的科学计算机数据处理能力 (4)出色的图形处理功能 (5)应用广泛的模块集合工具箱 (6)实用的程序接口和发布平台 (7)应用软件开发(包括用户界面) 1.2数字图像处理简介 数字图像处理又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程,以提高图像的实用性,达到人们所要求的预期结果。从处理的目的来讲主要有:

边缘检测

CSDN亲密携手阿里云重磅推出云邮箱服务HTML5群组诚募管理员,“活跃之星”活动火热进行中Canny边缘检测算法原理及其VC实现详解(一) 2011-10-20 21:39560人阅读评论(0)收藏举报图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。图象的边缘部分集中了图象的大部分信息,图象边缘的确定与提取对于整个图象场景的识别与理解是非常重要的,同时也是图象分割所依赖的重要特征,边缘检测主要是图象的灰度变化的度量、检测和定位,自从1959提出边缘检测以来,经过五十多年的发展,已有许多中不同的边缘检测方法。根据作者的理解和实践,本文对边缘检测的原理进行了描述,在此基础上着重对Canny检测算法的实现进行详述。 本文所述内容均由编程验证而来,在实现过程中,有任何错误或者不足之处大家共同讨论(本文不讲述枯燥的理论证明和数学推导,仅仅从算法的实现以及改进上进行原理性和工程化的描述)。 1、边缘检测原理及步骤 在之前的博文中,作者从一维函数的跃变检测开始,循序渐进的对二维图像边缘检测的基本原理进行了通俗化的描述。结论是:实现图像的边缘检测,就是要用离散化梯度逼近函数根据二维灰度矩阵梯度向量来寻找图像灰度矩阵的灰度跃变位置,然后在图像中将这些位置的点连起来

就构成了所谓的图像边缘(图像边缘在这里是一个统称,包括了二维图像上的边缘、角点、纹理等基元图)。 在实际情况中理想的灰度阶跃及其线条边缘图像是很少见到的,同时大多数的传感器件具有低频滤波特性,这样会使得阶跃边缘变为斜坡性边缘,看起来其中的强度变化不是瞬间的,而是跨越了一定的距离。这就使得在边缘检测中首先要进行的工作是滤波。 1)滤波:边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能。常见的滤波方法主要有高斯滤波,即采用离散化的高斯函数产生一组归一化的高斯核(具体见“高斯滤波原理及其编程离散化实现方法”一文),然后基于高斯核函数对图像灰度矩阵的每一点进行加权求和(具体程序实现见下文)。 2)增强:增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将图像灰度点邻域强度值有显著变化的点凸显出来。在具体编程实现时,可通过计算梯度幅值来确定。 3)检测:经过增强的图像,往往邻域中有很多点的梯度值比较大,而在特定的应用中,这些点并不是我们要找的边缘点,所以应该采用某种方法来对这些点进行取舍。实际工程中,常用的方法是通过阈值化方法来检测。 2、Canny边缘检测算法原理

几种常用边缘检测算法的比较

几种常用边缘检测算法的比较摘要:边缘是图像最基本的特征,边缘检测是图像分析与识别的重要环节。基于微分算子的边缘检测是目前较为常用的边缘检测方法。通过对Roberts,Sobel,Prewitt,Canny 和Log 及一种改进Sobel等几个微分算子的算法分析以及MATLAB 仿真实验对比,结果表明,Roberts,Sobel 和Prewitt 算子的算法简单,但检测精度不高,Canny 和Log 算子的算法复杂,但检测精度较高,基于Sobel的改进方法具有较好的可调性,可针对不同的图像得到较好的效果,但是边缘较粗糙。在应用中应根据实际情况选择不同的算子。 0 引言 边缘检测是图像分析与识别的第一步,边缘检测在计算机视觉、图像分析等应用中起着重要作用,图像的其他特征都是由边缘和区域这些基本特征推导出来的,边缘检测的效果会直接影响图像的分割和识别性能。边缘检测法的种类很多,如微分算子法、样板匹配法、小波检测法、神经网络法等等,每一类检测法又有不同的具体方法。目前,微分算子法中有Roberts,Sobel,Prewitt,Canny,Laplacian,Log 以及二阶方向导数等算子检测法,本文仅将讨论微分算子法中的几个常用算子法及一个改进Sobel算法。 1 边缘检测

在图像中,边缘是图像局部强度变化最明显的地方,它主要存在于目标与目标、目标与背景、区域与区域( 包括不同色彩) 之间。边缘表明一个特征区域的终结和另一特征区域的开始。边缘所分开区域的内部特征或属性是一致的,而不同的区域内部特征或属性是不同的。边缘检测正是利用物体和背景在某种图像特征上的差异来实现检测,这些差异包括灰度、颜色或纹理特征,边缘检测实际上就是检测图像特征发生变化的位置。边缘的类型很多,常见的有以下三种: 第一种是阶梯形边缘,其灰度从低跳跃到高; 第二种是屋顶形边缘,其灰度从低逐渐到高然后慢慢减小; 第三种是线性边缘,其灰度呈脉冲跳跃变化。如图1 所示。 (a) 阶梯形边缘(b) 屋顶形边缘 (b) 线性边缘 图像中的边缘是由许多边缘元组成,边缘元可以看作是一个短的直线段,每一个边缘元都由一个位置和一个角度确定。边缘元对应着图像上灰度曲面N 阶导数的不连续性。如果灰度曲面在一个点的N 阶导数是一个Delta 函数,那么就

基于Hough变换的道路边界提取方法

基于Hough变换的道路边界提取方法 摘要:本文利用 matlab7.0软件开发平台工具,采用hough变换等技术手段在图片上进行线性构造信息提取,为今后的研究部署工作提供参考。但hough变换存在一定的局限性,如对影像分割依赖性大、受非道路因素影响大等。本文首先利用道路种子点处的光谱信息进行道路区域的生长, 提取光谱信息一致的道路区域, 得到一个包含道路信息的二值影像,然后对此二值影像进行滤波,在提取出的道路条状区域的基础上, 根据道路具有的形状特点, 利用形态学进行细化和一定次数的形态修剪处理, 得到单像素宽 的道路中心线信息。最后对图像进行基于hough变换的线性特征提取,文章对高分辨率航空遥感影像进行了实验验证了该方法的有效性[1-3]。 关键词:线性特征提取,hough变换,matlab a road edge detection algorithm based on the hough transform qiu zhiweili yan (henan university of urban construction, pingdingshan 467036, china) aqiuzhiwei-2008@https://www.sodocs.net/doc/9e11818283.html,, bliyan0502@https://www.sodocs.net/doc/9e11818283.html, abstract: by using the road seed point spectrum information in this paper firstly, the relevant road information can be extracted from the spectral information consistent with the road area, road information including two value image can be

边缘提取

图像边缘提取的经典算法及展望 摘要:该文对现有图像边缘提取的经典边缘检测算子方法进行了介绍,对比、分析了各自的优缺点,为了更清楚地看出各种算法的效果,给出了一些常用算法对同一幅标准测试图像的原图像进行边缘提取的实验结果。最后,对图像边缘提取技术所面临的问题和发展方向阐述了自己的观点。 关键词:图像处理,边缘提取,边缘检测算子 中图分类号:TP 314.7 文献标识码:A The Algorithm for I m age Edge Detection and Prospect Abstract:The representative algorithms in these days for image edge detection have been presented in this paper.After contrasting and analyzing the advantages and the disadvantages of every algorithm.In order to have a much clearer look at the effect of every algorithm,we give the results of the experiments in which the common algorithms are used to detect image edge of the same standard testing image.At last,we bring forward our viewpoint about the problems the image edge detection technology is facing and where is its developmental direction . Key words:Image manipulation ;Edge recognition ;Edge recognition arithmetic operators 1 选题背景与研究意义 图像是人们从客观世界获取信息的重要来源,也是人类视觉延伸的重要手段。随着计算机和各个相关研究领域的迅速发展,科学计算的可视化、多媒体技术等研究与应用的兴起,数字图像处理从一个专门领域的学科,发展成为了一种新型的科学研究和人机界面的工具。通过对人类视觉系统的研究表明,图像中的边界特别重要,往往仅凭一些粗略的轮廓线就能够识别出一个物体,而轮廓线就是图像的边缘。图像的边缘是图像区域属性(像素灰度)发生明显变化的地方,也是图像信息最集中的地方,包含了图像的大部分特征信息,这些信息足图像识别中抽取特征的蕈要属性,能勾画出目标物体,是人类判别物体的重要依据。因此,图像的边缘是图像的最基本特征,被应用到较高层次的特征描述、图像识别、图像分割、图像增强以及图像压缩等图像处理和分析技术中,同时边缘提取也作为图像分析与模式识别的主要特征提取手段,应用于计算机视觉、模式识别等研究领域中IlJ。图像的边缘广泛存在于物体与背景之问、物体与物体之间,边缘检测的实质是采用某种算法提取出图像中对象与背景之间的交界线。通过边缘检测,提取出边缘才能将目标和背景区分开来,简化图像分析,突出图像的重要特征,降低后继图像分析处理的数据量,使图像理解及识别更加容易和深刻。因此,边缘提取算法是图像处理问题中经典技术之一,其优劣直接影响整个计算机视觉系统性能的好坏,它的解决对于我们进行高层次的图像特征描述、识别和理解等有着重大的影响。在数字图像处理的研究过程中,图像的边缘提取一直以来都是图像处理与分析领域的研究热点,也一直是机器视觉研究领域中最活跃的课题之一,在工程应用中占有十分重要的地位。因此,研究图像边缘提取方法具有重要的理论意义和现实意义。具有重要的意义。 2 研究现状及发展趋势 图像边缘提取的方法多种多样,但由于其本所具有的难度和深度,研究没有很大的突破性进展,至目前还没有提出一种方法或是理论,能完美地解决边缘提取问题,这也促使研究人员对此问题不断深入研究。 同时,由于目前的边缘提取评价方法都存在很大的局限性,所以对图像边缘提取评价系统的研究得到越来越多的关注。目前,用得较多的还是通过人眼进行主观判断,评价边缘提取方法的优劣。 总之,边缘提取算法主要存在两个问题:一是没有一种可以普遍使用的图像边缘提取算法;二是没有一个较好的通用的边缘提取的评价标准。因此,这两个问题也将成为今后研究解决的重点和研究趋

图像轮廓线提取

数学实验报告 实验二图像轮廓线提取技术 学院 专业 姓名 学号 成绩单序号 提交日期

一、实验目的 1.了解对matlab的图像处理功能,掌握基本的图像处理方式; 2.掌握imread,imshow,imwrite,subplot,title等的基本使用方法。 3.掌握图像轮廓线提取的简单方法并上机实现。 4.了解matlab自带的边界检测算子的使用,提高对复杂图像处理的能力。 二、实验要求 1.任意选取一幅灰度图像和一幅彩色图像,对算法中若干关键语句中进行调整,得出不同的实验结果,对这些结果进行分析,并与MATLAB自带的边缘检测做对比。 2.提出其它的轮廓线提取方法,与简单阈值法进行比较分析。 三、实验过程 1.任意选取一幅灰度图像和一幅彩色图像,对算法中若干关键语句中进行调整,得出不同的实验结果,对这些结果进行分析。 ⑴灰度图的轮廓线提取,M文件代码: function gray(pix,n) %灰度图的轮廓线提取 A=imread(pix); %读取指定的灰度图%生成与图像对应的矩阵 [a,b]=size(A); %a,b分别等于矩阵A的行数和列数 B=double(A); %将矩阵A变为双精度矩阵 D=40*sin(1/255*B); %将矩阵B进行非线性变换 T=A; %新建与A同等大小矩阵 for p=2:a-1 %处理图片边框内的像素点 for q=2:b-1 if (D(p,q)-D(p,q+1))>n|(D(p,q)-D(p,q-1))>n|(D(p,q)-D(p+1,q))>n|(D(p,q)-D(p-1,q))>n|( D(p,q)-D(p-1,q+1))>n|(D(p,q)-D(p+1,q-1))>n|(D(p,q)-D(p-1,q-1))>n|(D(p,q)-D(p+1,q +1))>n T(p,q)=0; %置边界点为黑色%新建轮廓线矩阵 else T(p,q)=255; %置非边界点为白色 end; end; end; subplot(2,1,1); %将窗口分割为两行一列,下图显示于第一行 image(A); %显示原图像 title('灰度图原图'); %图释 axis image; %保持图片显示比例 subplot(2,1,2); %下图显示于第二行 image(T); %显示提取轮廓线后的图片

canny sobel算子

基于sobel 、canny 的边缘检测实现 一.实验原理 Sobel 的原理: 索贝尔算子(Sobel operator )是图像处理中的算子之一,主要用作边缘检测。在技术上,它是一离散性差分算子,用来运算图像亮度函数的梯度之近似值。在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量. 该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。如果以A 代表原始图像,Gx 及Gy 分别代表经横向及纵向边缘检测的图像,其公式如下: 101202*101x G A -+?? ?=-+ ? ?-+?? 121000*121y G A +++?? ?= ? ?---?? 图像的每一个像素的横向及纵向梯度近似值可用以下的公式结合,来计算梯度的大小。 在以上例子中,如果以上的角度Θ等于零,即代表图像该处拥有纵向边缘,左方较右方暗。 在边沿检测中,常用的一种模板是Sobel 算子。Sobel 算子有两个,一个是检测水平边沿的 ;另一个是检测垂直平边沿的 。与 和 相比,Sobel 算子对于象素的位置的影响做了加权,因此效果更好。 Sobel 算子另一种形式是各向同性Sobel(Isotropic Sobel)算子,也有两个,一个是检测水平边沿的 ,另一个是检测垂直平边沿的 。各向同性Sobel 算子和普通Sobel 算子相比,它的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。由于建筑物图像的特殊性,我们可以发现,处理该类型图像轮廓时,并不需要对梯度方向进行运算,所以程序并没有给出各向同性Sobel 算子的处理方法。 由于Sobel 算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数, 简单有效,因此应用广泛。美中不足的是,Sobel 算子并没有将图像的主体与背景严格地区分开来,换言之就是Sobel 算子没有基于图像灰度进行处理,由于Sobel 算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。 在观测一幅图像的时候,我们往往首先注意的是图像与背景不同的部分,正是这个部分将主体突出显示,基于该理论,我们给出了下面阈值化轮廓提取算法,该算法已在数学上证明当像素点满足正态分布时所求解是最优的。 Canny 的原理:

实验七 图像边沿检测及轮廓提取

实验七图像边沿检测及轮廓提取 1.图像的边沿检测 一、实验目的 1、掌握边沿检测的原理。 2、学习在DSP上实现边沿检测的方法。 二、实验仪器 1、硬件平台:C6000数字图像处理实验箱(型号ZY13DSP23BB)、摄像头、USB连接线。 2、软件平台:Windows98/2000/XP操作系统、Code Composer Studio 2.0 For C6000、ImageRECV 2.0 for ZY13DSP23BB。 三、实验原理 对于给出的一个模板和一幅图像 。 不难发现原图中左边暗,右边亮,中间存在着一条明显的边界。进行模板操作后的结果如下: 。 可以看出,第3、4列比其他列的灰度值高很多,人眼观察时,就能发现一条很明显的亮边,其它区域都很暗,这样就起到了边沿检测的作用。为何会如此呢?仔细看看那个模板就明白了,它的意思是将右邻点的灰度值减左邻点的灰度值作为该点的灰度值。在灰度相近的区域内,这么做的结果使得该点的灰度值接近于0;而在边界附近,灰度值有明显的跳变,这么做的结果使得该点的灰度值很大,这样就出现了上面的结果。 这种模板就是一种边沿检测器,它在数学上的涵义是一种基于梯度的滤波器,又称边沿算子。梯度是有方向的,和边沿的方向总是正交(垂直)的。例如,对于上面那幅图像的转置

图像,边沿是水平方向的,我们可以用梯度是垂直方向的模板检测它的边沿。再例如, 一个梯度为45度方向模板,可以检测出135度方向的边沿。 在边沿检测中,常用的一种模板是Sobel 算子。Sobel 算子有两个,一个是检测水平边沿的;另一个是检测垂直边沿的。与和 相比,Sobel算子对于象素的位置的影响做了加权,因此效果更好。 如下图,图19-1是对图1-2进行Sobel算子处理后的结果图,可以看出Sobel算子确实把图像中的边沿提取了出来。 图19-1 Sobel算子处理后结果 四、实验步骤 1、将光盘上的“examples\EdgeCheck”目录复制到计算机硬盘,去掉目录中所有文件的只读属性; 2、通过USB连接线,将C6000数字图像处理实验箱与PC的USB口相连接,如果PC 提示找到新硬件,则表示连接成功; 3、启动Code Composer Studio 2.0 For C6000; 4、启动ImageRECV 2.0 for ZY13DSP23BB; 5、打开“Project”菜单,选择“Open…”菜单项,找到并打开硬盘上目录“examples\EdgeCheck”,选择EdgeCheck.pjt工程文件; 6、打开“Project”菜单,选择“Rebuild all…”菜单项,编译程序,生成EdgeCheck.out文件; 7、打开“File”菜单,选择“Load program…”菜单项,选择“examples\ EdgeCheck \Debug\EdgeCheck.out”,程序将加载到DSP上; 8、运行:快捷键“F5”或选择“Debug”菜单中的“Run”项;

灰度图像边缘提取方法综述

内蒙古科技大学 本科毕业论文 题目:灰度图像边缘提取方法综述学生姓名: 学院:物理科学与技术学院 专业:应用物理学 学号:0809810054 班级:08级 指导教师: 二〇一二年 4 月

摘要 本文先介绍了一般边缘检测的步骤和灰度图像形态学的主要操作。着重讨论基于细胞神经网络的一般灰度图像的边缘提取和图像分割。先陈述了几种传统算法,并比较了各算法的优劣。通过例举介绍CNN 基本知识,详细描述了用CNN 提取图像边缘的过程,给出算法流程,阐述算法实现中的关键步骤。对二值图像和灰度图像,分别采用基于CNN 的算法和传统算子(prewitt、sobel、canny)进行边缘提取,给出提取效果图,定性比较两类算法在性能上的优劣。来直接的了解灰度图像边缘提取的方法。 关键字:灰度图像,边缘提取,分割,CNN算法,传统算子

Abstract This paper first introduces the general steps of gray image edge detection and morphology of the main operation. Focuses on the cellular neural network based general gray image edge extracting and image segmentation. Through the examples of introduction of basic knowledge of CNN, a detailed description of the CNN image edge extraction process, the algorithm process, the key step in the algorithm implementation. On two value image and the gray scale image, which are based on CNN algorithm and the traditional operator ( Prewitt, Sobel, canny ) edge extraction, given the extraction effect chart, qualitative comparison of two algorithms in performance on the quality of. To direct understanding of gray image edge extraction method. Keywords: image, edge detection, segmentation, CNN algorithm, the traditional operator

canny边缘检测分析毕业论文

Canny边缘检测分析毕业论文 目录 引言 (1) 第一章图像分割与边缘检测 (2) 1.1图像分割简介 (2) 1.2图像分割定义 (2) 1.3图像分割基本原理 (3) 第二章基于边界的分割——边缘检测 (6) 2.1边缘的类型 (6) 2.2边缘的类型 (6) 2.3边缘的判定 (7) 第三章常见边缘检测算法的研究与分析 (9) 3.1边缘检测过程概述 (9) 3.2典型一阶边缘检测算子 (9) 3.2.1梯度算子 (10) 3.2.2 Roberts边缘算子 (10) 3.2.3 Sobel算子 (11) 3.2.4 Prewitt算子 (13) 3.3 典型二阶边缘检测算子 (14) WORD版本.

3.3.1 Laplacian算子 (14) 3.3.2 LOG算子 (16) 3.4 各边缘检测算子的仿真结果分析 (18) 第四章 Canny边缘检测算子 (20) 4.1 Canny边缘检测基本原理: (20) 4.2 Canny边缘算子评价指标: (20) 4.2.1 Canny提出检测三准则【5】 (20) 4.2.2边缘检测滤波器对性能指标的影响【10】 (22) 4.2.3 尺度对性能指标的影响【10】 (23) 4.3 Canny边缘检测流程 (24) 4.4 Canny边缘检测仿真结果及分析 (28) 第五章 Canny算子改进 (29) 5.1对传统Canny算法局限性分析 (29) 5.2滤波改进 (30) 5.3阈值改进——自适应的阈值 (31) 5.3.1最大熵原算法过程 (31) 5.3.2最大熵算法的改进 (32) 5.4改进的Canny算法的仿真实验 (33) 第六章本实验结果及展望 (36) 6.1 本算法的实验结果 (36) WORD版本.

halcon边缘提取缺陷检测的思路

一、边缘提取 1、设置ROI兴趣区域 2、快速二值化,并连接相邻区域。这样做的目的是进一步减少目标区域,通过二值化将目标区域大概轮廓提取出来 3、提取最接近目标区域的轮廓.常用函数有boundary,gen_contour_region_xld 4、根据自己的需求提取需要的初步轮廓 5、将初步提取的初步轮廓进行膨胀操作 6、将膨胀后的区域和原图进行减操作(在这步之前有可能需要对原图进行高斯滤波)。这样就能得到只有边缘的真实图像 7、用canny或其他算子(根据需要)提取亚像素轮廓,一般使用edges_sub_pix函数 8、处理和计算 得到真实的边缘XLD后你可能需要进一步处理得到你想要的线、弧等。 你可能用到的函数segment_contours_xld(分割)union_collinear_contours_xld(联合相邻或相同角度直线)select_contours_xld(提取想要的轮廓)union_cocircular_contours_xld(联合相同圆)等等 得到轮廓后如果你不知道怎么处理后得到你想要的东西(线、弧、圆、角、矩形)你都可以将轮廓转化为点,然后用点集合来拟合任何你想要的东西。 二、BLOB分析检测(前面一篇有详细讲解,本骗只讲思路) 1、应用ROI,可以使Blob分析加速。 2、匹配ROI区域或图像,详将GUIDEIIB以形状为基础的匹配。 3、校正图像<经常用来去除镜头畸变或把图像转换到参考点视角,如双目视觉时的图像校正> 4、图像前处理 5、引用分割参数 6、分割图像 7、区域处理 8、特征提取 9、把提取的结果转换到世界坐标中 10、结果可视化。 三、赃物检测 1、得到两个不同高斯标准差的高斯积卷 2、对原始图像进行傅里叶变换'to_fre' 3、用之前的积卷对图像做积卷滤波 4、傅里叶反变换‘from_fre’

图像边缘提取方法及展望

1引言 图像最基本的特征是边缘,边缘是图像性区域和另一个属性区域的交接处,是区域属性发生突变的地方,是图像中不确定性最大的地方,也是图像信息最集中的地方,图像的边缘包含着丰富的信息。因此,图像的边缘提取在计算机视觉系统的初级处理中具有关键作用,但目前仍是“瓶颈”问题。 边缘检测技术对于数字图像是非常重要的,提取出边缘才能将目标和背景区分开来。现有的图像边缘提取方法可以分为三大类:一类是基于某种固定的局部运算方法,如:微分法,拟合法等,它们属于经典的边缘提取方法;第二类则是以能量最小化为准则的全局提取方法,其特征是运用严格的数学方法对此问题进行分析,给出一维值代价函数作为最优提取依据,从全局最优的观点提取边缘,如松驰法,神经网络分析法等;第三类是以小波变换、数学形态学、分形理论等近年来发展起来的高新技术为代表的图像边缘提取方法,尤其是基于多尺度特性的小波变换提取图像边缘的方法是目前研究较多的课题。该文将较为详细地对各种图像边缘提取算法的原理进行阐述,对几种最常用的图像边缘提取算法给出实验结果,并进行结果对比与分析。 2经典的图像边缘提取方法 2.1微分算子法 边缘的检测可借助空域微分算子通过卷积完成,导数算子具有突出灰度变化的作用,对图像运用导数算子,灰度变化较大的点处算得的值较高,因此可将这些导数值作为相应点的边界强度,通过设置门限的方法,提取边界点集。 一阶导数 !f !x 与 !f !y 是最简单的导数算子,一个连续函数f(x,y)在位置(x,y)处方向导数的最大值是I G I=( !f !x )2+(!f !y )2 [I12,称为梯度模,相应地,取得最大值的方向为"=tan-1 !f !y !f !x T I I L T I I J 。 利用梯度模算子来检测边缘是一种很好的方法,它不仅具有位移不变性,还具有各向同性。在实际中,对于一幅数字图像采用了梯度模的近似形式,如常用的罗伯特交叉算子(Roberts Cross)和索贝尔算子(SobeI)的表达式分别为: Roberts算子表达式为: \G\=maX(I f(i,J)-f(i+1,J+1)I,I f(i+1,J)-f(i,J+1)I) SobeI算子表达式为: 121 000 -1-2- T I I L T I I J 1 10-1 20-2 10- T I I L T I I J 1 x方向卷积核y方向卷积核 图像边缘提取方法及展望 季虎孙即祥邵晓芳毛玲 (国防科技大学电子科学与工程学院,长沙410073) E-maiI:Iove63901@https://www.sodocs.net/doc/9e11818283.html, 摘要该文对现有代表性的各种图像边缘提取方法进行了介绍,对比、分析了各自的优缺点,重点对以小波变换为代表的现代信号处理技术提取图像边缘的方法进行了分析和阐述,为了更清楚地看出各种算法的效果,给出了一些常用算法对同一幅标准测试图像Lena进行边缘提取的实验结果。最后,对图像边缘提取技术所面临的问题和发展方向阐述了自己的观点。 关键词边缘提取小波变换多尺度分析图像边缘检测 文章编号1002-8331-(2004)14-0070-04文献标识码a中图分类号TP391 The Algorithm for Image Edge Detection and Prospect Ji Hu Sun Jixiang Shao Xiaofang Mao Ling (SchooI of EIectronic and Engineering,NationaI University of Defense TechnoIogy,Changsha410073)Abstract:The representative aIgorithms in these days for image edge detection have been presented in this paper.after contrasting and anaIyzing the advantages and the disadvantages of every aIgorithm,we pIace an emphasis on anaIyzing and iIIuminating waveIet transform,which is one of the modern signaI processing technigues for image edge detection.in order to have a much cIearer Iook at the effect of every aIgorithm,we give the resuIts of the eXperiments in which the common aIgorithms are used to detect image edge of the same standard testing image Lena.at Iast,we bring forward our viewpoint about the probIems the image edge detection technoIogy is facing and where is its deveIopmentaI direction. Keywords:edge detection,waveIet transform,muItiscaIe anaIysis,image edge detection 作者简介:季虎(1972-),男,工程师,博士研究生,主要研究方向为计算机视觉、图像处理、模式识别。孙即祥(1946-),男,教授,博士生导师,现已出版专著三部,并正在撰写另外一部专著,已发表论文十数篇。主要感兴趣的研究方向为计算机视觉、图像处理、模式识别等。 70 2004.14计算机工程与应用

Canny检测

实验二 opencv实现canny边缘检测 一、实验目的 1、了解如何在VC++6.0上安装与配置opencv 2、了解canny边缘检测的原理与opencv的实现 二、实验引言 边缘是一幅图像最重要的特征之一,图像边缘部分集中了图像的大部分信息。因此,边缘的确定对于图像场景的识别与理解非常重要;同时在图像分割中也有重要应用。可以利用边缘对图像进行区域分析。边缘在图像体现为局部区域亮度的显著变化,可见这种变化是为灰度面的阶跃。有很多种方法可以用来对图像边缘进行检测。本实验中采用Canny边缘检测。 三、实验原理 检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度值的像素点,其大部分的工作集中在寻找能够用于实际图像的梯度数字逼近。 图像梯度逼近必须满足要求: 1、逼近必须能够抑制噪声效应 2、必须尽量精确的确定边缘的位置 Canny检测的基本过程 平滑与计算 Canny边缘检测器就是高斯函数的一阶导数,是对信噪比与定位之间最优化的逼近算子。高斯平滑和梯度逼近结合的算子不是旋转对称的。高斯平滑和梯度逼近结合的算子不是旋转对称的。 在边缘方向是对称的,在垂直边缘方向是反对称的(梯度方向)。该算子在对最急剧变化方向上的边缘很敏感,沿边缘方向不敏感。 非极大值抑制

前面的计算得到梯度的幅度图像阵列为M[i,j],此值的值越大,其对应的图像梯度值也越大。但还不能精确的确定边缘。为了确定边缘,必须细化幅度值图像中的屋脊带(ridge ),即只保留幅度值局部变化最大的点。此过程称为非极大值抑制(non-maxima suppression,NMS ),其结果会产生细化的边缘。非极大值抑制通过抑制梯度线上所有的非屋脊峰值的幅度值来细化[,]M i j 中的梯度幅值屋脊。算法使用一个3×3邻域作用在幅值阵列[,]M i j 的所有点上;每一个点上,邻域的中心像素[,]M i j 与沿着梯度线的两个元素进行比较,其中梯度线是由邻域的中心点处的扇区值ζ[i,j ]给出。如果在邻域中心点处的幅值[,]M i j 不比梯度线方向上的两个相邻点幅值大,则[,]M i j 赋值为零,否则维持原值;此过程可以把M[i,j]宽屋脊带细化成只有一个像素点宽,即保留屋脊的高度值。 非极大值抑制公式为: [,]([,],[,])N i j N M S M i j i j z = [,]N i j 中的非零值对应着图像强度阶跃变化处对比度,其坐标对应着图像梯度值经过非极大值抑制后细化得到的边缘。 虽然在边缘检测前经过了图像的高斯平滑,但是经过NMS 后仍然会包含许多噪声和细纹理引起的假边缘段。所以要经过阈值化处理。 阈值化 去除假边缘的方法是对[,]N i j 使用阈值处理,将低于某一阈值的所有值赋值零,得到图像边缘阵列[,]I i j 。 单阈值τ太低造成的假阳性以及阴影会使边缘对比度减弱; 单阈值t 太高造成的假阴性会使部分轮廓丢失; 常用双阈值1t 和212t t =对非极大值抑制图像[,]N i j 处理得到两个边 缘图像1[,]T i j 和2[,]T i j 。2[,]T i j 用高阈值得到,所以含有较少的假边缘,但其中有轮廓 的间断。双阈值要在2[,]T i j 中把边缘连接成轮廓,当到达轮廓端点时,就在1[,]T i j 的8邻 点位置寻找可以连接到轮廓上的边缘。综述整个算法的主要步骤是:不断的在1[,]T i j 中收 集边缘,直到2[,]T i j 中的所有间隙连接起来位置。 从而得出Canny 算法的具体实现步骤: Step1:用高斯滤波器平滑图像,去除图像噪声。一般选择方差为1.4的高斯函数模板和图像进行卷积运算。 Step2:用一阶偏导的有限差分来计算梯度的幅值和方向。使用 的梯度算子计算x 和y 方向的偏导数 和 ,方向角 ,梯度幅值 。 Step3:对梯度幅值应用非极大值抑制。幅值M 越大,其对应的图像梯度值也越大,但这

基于数字图像处理技术的边缘特征提取 翻译

Edge Feature Extraction Based on Digital Image Processing Techniques Abstract Edge detection is a basic and important subject in computer vision and image processing. In this paper we discuss several digital image processing techniques applied in edge feature extraction. Firstly, wavelet transform is used to remove noises from the image collected. Secondly, some edge detection operators such as Differential edge detection, Log edge detection, Canny edge detection and Binary morphology are analyzed. And then according to the simulation results, the advantages and disadvantages of these edge detection operators are compared. It is shown that the Binary morphology operator can obtain better edge feature. Finally, in order to gain clear and integral image profile, the method of bordering closed is given. After experimentation, edge detection method proposed in this paper is feasible. Index:Terms-Edge detection, digital image processing, operator, wavelet analvsis I. INTRODUCTION The edge is a set of those pixels whose grey have step change and rooftop change, and it exists between object and background, object and object, region and region, and between clement and clement. Edge always indwells in two neighboring areas having different grey level. It is the result of grey level being discontinuous. Edge detection is a kind of method of image segmentation based on range non-continuity. Image edge detection is one of the basal contents in the image processing and analysis, and also is a kind of issues which are unable to be resolved completely so far. When image is acquired, the factors such as the projection, mix, aberrance and noise are produced. These factors bring on image feature's blur and distortion, consequently it is very difficult to extract image feature. Moreover, due to such factors it is also difficult to detect edge. The method of image edge and outline characteristic's detection and extraction has been research hot in the domain of image processing and analysis technique. Edge feature extraction has been applied in many areas widely. This paper mainly discusses about advantages and disadvantages of several edge detection operators applied in the cable insulation parameter measurement. In order to gain more legible image outline, firstly the acquired image is filtered and denoised. In the process of denoising, wavelet transformation is used. And then different operators are applied to detect edge including Differential operator, Log operator, Canny operator and Binary morphology operator. Finally the edge pixels of image are connected using the method of bordering closed. Then a clear and complete image outline will be obtained.

相关主题