边缘提取不同算子方法的分析比较
常用边缘检测方法分析与比较
常用边缘检测方法分析与比较摘要:论文对几种常用的图像边缘检测算法进行了分析,实际上这几种方法都在我们的生活生产乃至国防中得到了广泛的应用。
论文在分析的基础上,进一步进行了比对说明,指出了它们各自的特点。
关键词:图像处理;计算机应用;边缘检测;图像边缘;拉普拉斯算子引言图像的边缘是图像的最基本特征,所谓边缘是指其周围像素灰度有阶跃变化或屋顶变化的那些像素的结合。
边缘广泛存在于物体与背景之间、物体与物体之间、基元与基元之间,它们是图像分割所依赖的重要特征,边缘提取是图形处理、特征抽取中的重要技术。
经典的边缘提取方法是考察图像的每个像素在某个邻域内灰度的变化,利用边缘邻近一阶或二阶方向导数变化规律,用简单的方法检测边缘,这种方法被称为边缘检测局部算子法。
1常用算法分析下面是几种常见的边缘检测算子,这里在分析的基础上进行比较研究。
(1)Robert算子它是一种利用局部差分算子寻找边缘的算子。
(2.3)其中f(x,y)是点(x,y)的像素值。
式中的平方根运算使该处理类似于人类视觉系统中发生的过程。
Robert算子是2×2算子,对具有陡峭的低噪声图像响应最好,其算子为:(2.4)Robert运算实际上是求旋转士45°两个方向上微分值的和。
(2)Prewitt边缘算子1970年左右,Prewitt提出此算子,下面的两个卷积核形成了Prewitt边缘算子。
(2.5)P1算子是垂直算子,检测水平边缘,P2是水平算子,检测垂直边缘。
如果我们用Prewitt算子检测图像M的话,我们可以先分别用水平算子和垂直算子进行卷积,得到的是两个矩阵,在不考虑边界的情况下也是和原图像同样大小的M1,M2,它们分别表示图像M中相同位置处的两个偏导数。
然后把M1,M 2对应位置的两个数平方后相加得到一个新的矩阵G,G表示M中各个像素的灰度的梯度值(一个逼近),然后就可以通过闭值处理得到图像边缘。
总的过程是:(2.6)(3) Sobel算子(2.7)S1是垂直算子,检测水平边缘,S2是水平算子,检测垂直边缘。
图像识别中的轮廓提取算法探索(七)
图像识别中的轮廓提取算法探索引言:图像识别技术如今已经广泛应用于各个领域,其关键之一就是图像中的轮廓提取算法。
轮廓提取的准确与否直接影响到图像识别的效果。
本文将探索图像识别中常用的轮廓提取算法,并对其原理和优缺点进行分析。
一、边缘检测算法边缘检测是图像处理中最基础的一步,是进行轮廓提取的前提。
常用的边缘检测算法有Sobel算子、Laplacian算子和Canny算子等。
1. Sobel算子Sobel算子是一种基于梯度的边缘检测算法,其原理是通过计算每个像素点的梯度值来判断其是否为边缘点。
然后根据梯度值的大小确定边缘的强度,进而提取轮廓。
Sobel算子的优点是计算简单,对噪声鲁棒性强。
但其缺点也较为明显,容易产生边缘断裂的情况,并且对角线边缘检测效果较差。
2. Laplacian算子Laplacian算子是一种基于二阶导数的边缘检测算法,其原理是通过计算图像中每个像素点的二阶导数来判断其是否为边缘点。
Laplacian算子的优点是能够检测出边缘的交叉点,能够更精准地定位边缘。
但其缺点是对噪声比较敏感,容易产生误检。
3. Canny算子Canny算子是一种综合考虑多种因素的边缘检测算法,其原理是通过梯度计算、非极大值抑制和阈值处理来提取目标轮廓。
Canny算子的优点是能够提取清晰且连续的边缘,对噪声抑制效果好。
但其缺点是计算量较大,算法较为复杂。
二、区域生长算法区域生长算法是一种基于种子点的轮廓提取方法,其原理是在图像中选择若干个种子点,然后通过像素点之间的相似性判断来逐渐生长成为一个完整的区域。
区域生长算法的优点是能够提取出连续且相似的轮廓,适用于要求较高的图像识别任务。
但其缺点是对种子点的选择比较敏感,容易受到图像质量和噪声的影响。
三、边缘跟踪算法边缘跟踪算法是一种基于边缘连接的轮廓提取方法,其原理是通过追踪边缘点的连接关系,形成完整的轮廓。
边缘跟踪算法的优点是能够提取出精细的轮廓,并且对噪声抑制效果好。
几种常用边缘检测算法的比较
几种常用边缘检测算法的比较边缘检测是在数字图像上寻找图像亮度变化的过程,它对于图像处理和计算机视觉任务非常重要。
常见的边缘检测算法有Sobel算子、Prewitt算子、Roberts算子和Canny边缘检测算法。
本文将对这几种算法进行比较。
1. Sobel算子:Sobel算子是一种常见的边缘检测算法,它通过计算图像像素点与其邻域像素点之间的差异来检测边缘。
Sobel算子具有简单、快速的优点,可以检测水平和垂直方向的边缘,但对于斜向边缘检测效果较差。
2. Prewitt算子:Prewitt算子也是一种常用的边缘检测算法,它类似于Sobel算子,通过计算图像像素点与其邻域像素点之间的差异来检测边缘。
Prewitt算子可以检测水平、垂直和斜向边缘,但对于斜向边缘的检测结果可能不够精确。
3. Roberts算子:Roberts算子是一种简单的边缘检测算法,它通过计算图像像素点与其对角线方向上的邻域像素点之间的差异来检测边缘。
Roberts算子计算简单,但对于噪声敏感,容易产生干扰边缘。
4. Canny边缘检测算法:Canny边缘检测算法是一种经典的边缘检测算法,它包含多个步骤:高斯滤波、计算梯度、非最大抑制和双阈值处理。
Canny算法具有良好的边缘定位能力,并且对于噪声和细节边缘具有较好的抑制效果。
但Canny算法计算复杂度较高,在处理大规模图像时可能较慢。
综上所述,不同的边缘检测算法具有各自的优缺点。
若要选择适合应用的算法,需要综合考虑图像特点、计算复杂度和应用需求等因素。
如果对图像边缘的方向要求不高,可以选择Sobel或Prewitt算子;如果对图像边缘的方向要求较高,可以选择Canny算法。
另外,为了获得更好的边缘检测结果,通常需要进行适当的预处理,如灰度化、滤波和阈值处理等。
最后,对于不同的应用场景,可能需要使用不同的算法或算法组合来满足特定需求。
图像边缘提取
图像边缘提取图像的边界信息⼀般通过灰度值突变来体现,所以图像边缘提取⼀般通过捕捉灰度突变的⽅法来实现,捕捉灰度突变可以通过求微分来实现导数越⼤说明变化越⼤,边缘信号越强1.Sobel算⼦也叫离散微分算⼦,⼀阶微分算⼦,求导算⼦,先做⾼斯平滑在做微分求导可以在各个⽅向上求图像的梯度如⽔平⽅向 Gx=[-1,0,1,-2,0,2,-1,0,1],垂直⽅向Gy=[-1,-2,-1,0,0,0,1,2,1]最终G=sqrt(Gx^2+Gy^2),或者G=|Gx|+|Gy|第⼆种的运算速度要快于第⼀种,所以⼀般采⽤第⼆种⽅法Sobel算⼦的改进版叫Scharr算⼦[-3,0,3,-10,0,10,-3,0,3]#include<iostream>#include<opencv2/opencv.hpp>using namespace std;using namespace cv;int main(int argc, char **argv){Mat src, dst;src = imread("b.png");if (src.empty()){cout << "load img failed" << endl;return -1;}imshow("input img", src);Mat gaussian,gray_src;GaussianBlur(src, gaussian, Size(3, 3), 0, 0);cvtColor(gaussian, gray_src, CV_BGR2GRAY);imshow("blur gray", gray_src);Mat xgrad, ygrad;Sobel(gray_src, xgrad, CV_16S, 1, 0, 3);Sobel(gray_src, ygrad, CV_16S, 0, 1, 3);convertScaleAbs(xgrad, xgrad);convertScaleAbs(ygrad, ygrad);imshow("x grade", xgrad);imshow("y grade", ygrad);addWeighted(xgrad, 0.5, ygrad, 0.5, 0, dst);imshow("output img", dst);/*dst = Mat(xgrad.size(), xgrad.type());int width = dst.cols;int height = dst.rows;for(int i=0;i<height;++i)for (int j = 0; j < width; ++j){int xg = xgrad.at<char>(i, j);int yg = ygrad.at<char>(i, j);int xy = xg + yg;dst.at<char>(i, j) = saturate_cast<uchar>(xy);}imshow("output img", dst);*/waitKey(0);return0;}plance算⼦求⼆阶导数,在⼆阶导数的时候,最⼤变化处的值为0,即边缘的⼆阶导数是0流程:⾼斯模糊去噪GaussianBlur()转为灰度值cvtColor()Laplance⼆阶导数计算Laplancian()取绝对值convertScaleAbs()显⽰结果#include<iostream>#include<opencv2/opencv.hpp>using namespace std;using namespace cv;int main(int argc, char **argv){Mat src, dst;src = imread("b.png");if (src.empty()){cout << "load img failed" << endl;return -1;}imshow("input img", src);Mat gaussian,gray_src;GaussianBlur(src, gaussian, Size(3, 3), 0, 0);cvtColor(gaussian, gray_src, CV_BGR2GRAY);imshow("blur gray", gray_src);Laplacian(gray_src, dst, CV_16S,3);convertScaleAbs(dst, dst);imshow("Laplacian", dst);threshold(dst, dst, 0, 255, THRESH_OTSU | THRESH_BINARY);imshow("output img", dst);/*dst = Mat(xgrad.size(), xgrad.type());int width = dst.cols;int height = dst.rows;for(int i=0;i<height;++i)for (int j = 0; j < width; ++j){int xg = xgrad.at<char>(i, j);int yg = ygrad.at<char>(i, j);int xy = xg + yg;dst.at<char>(i, j) = saturate_cast<uchar>(xy);}imshow("output img", dst);*/waitKey(0);return0;}3.Canny边缘检测步骤:⾼斯模糊 GaussianBlur灰度转换cvtColor计算梯度Sobel/Scharr⾮最⼤信号抑制⾼低阈值输出⼆值图像⾮最⼤信号抑制需要计算梯度⽅向T1为低阈值,T2为⾼阈值,凡是⾼于T2的都保留,凡是低于T1的都丢弃,从⾼于T2的像素出发,凡是⼤于T1且相互连接的都保留,最终得到⼀个输出⼆值图像推荐的⾼低阈值⽐为3:1或2:1Canny(src,dst,threshold_low,threshold_high,Sobel_size,Lwgradient)最后⼀个如果是true就⽤L2归⼀化(开根),如果不是就L1归⼀化(绝对值),⼀般⽤L1 #include<iostream>#include<opencv2/opencv.hpp>using namespace std;using namespace cv;Mat src, dst, gray_src, gaussian;int t1_value = 50;int max_value = 255;const char* OUTPUT_TITLE = "Canny Result";void Canny_Demo(int,void*);int main(int argc, char **argv){//Mat src, dst;src = imread("b.png");if (src.empty()){cout << "load img failed" << endl;return -1;}imshow("input img", src);//Mat gaussian,gray_src;//GaussianBlur(src, gaussian, Size(3, 3), 0, 0);namedWindow(OUTPUT_TITLE, CV_WINDOW_AUTOSIZE);cvtColor(src, gray_src, CV_BGR2GRAY);createTrackbar("Threshold Value :", OUTPUT_TITLE, &t1_value, max_value, Canny_Demo);Canny_Demo(0, 0);waitKey(0);return0;}void Canny_Demo(int, void*){Mat edge_output;blur(gray_src, gray_src, Size(3, 3), Point(-1, -1), BORDER_DEFAULT);Canny(gray_src, edge_output, t1_value, t1_value * 2, 3, false);//dst.create(src.size(), src.type());//src.copyTo(dst, edge_output);imshow(OUTPUT_TITLE, ~edge_output);}去掉注释会变成彩⾊图,注意修改imshow中的输出变量。
图像边缘检测中的微分算子法及其比较
与区域( 包括不同色彩 ) 之间。 边缘表明一个特征 区域的终结和另一特征区域的开始 。边缘所分开区 域的内部特征或属性是一致的, 而不同的区域内部 特征或属性是不同的。边缘检测正是利用物体和背 景在某种图像特征上的差异来实现检测 , 这些差异 包括灰度、 颜色或纹理特征, 边缘检测实际上就是检 测图像特征发生变化的位置。 边缘的类型很多, 常见的有以下三种: 第一种是 阶梯形边缘, 其灰度从低跳跃到高; 第二种是屋顶形 边缘, 其灰度从低逐渐到高然后慢慢减小 ; 第三种是 线性边缘, 其灰度呈脉冲跳跃变化。如图 1 所示。
0
引言
边缘检测是图像分析与识别的第一步, 边缘检 测在计算机视觉、 图像分析等应用中起着重要作用 , 图像的其他特征都是由边缘和区域这些基本特征推 导出来的, 边缘检测的效果会直接影响图像的分割 和识别性能。边缘检测法的种类很多, 如微分算子 [1 ] 法、 样板匹配法、 小波检测法、 神经网络法等等 , 每一类检测法又有不同的具体方法。 目前, 微分算 Sobel, Prewitt, Canny, Laplacian, 子法 中 有 Roberts, Log 以及二阶方向导数等算子检测法, 本文仅将讨 论微分算子法中的几个常用算子法 。
图像边缘检测中的微分算子法及其比较
龙 清
( 重庆广播电视集团 ( 总台) ,重庆 401147 )
摘
要: 边缘是图像最基本的特征, 边缘检测是图像分析与识别的重要环节。 基于微分算子的 边缘检测是目前较为常用的边缘检测方法 。通过对 Roberts,Sobel, Prewitt, Canny 和 Log 等几个
2 h( x, y) = [ y) ] * f( x, y) g( x, 2 y) = 其中, g( x,
pythonopencvSobel、Laplace、canny算子的边缘提取以及参数解析
pythonopencvSobel、Laplace、canny算⼦的边缘提取以及参数解析前提:各种算⼦不完全区分好坏,但根据我实际操作分析得到,有的算⼦之间效果⼤相径庭,但有的也很相似,也就是各有各的⽤法,这⾥按Sobel、Laplace、canny三种算⼦作⽐较,看其结果:⼀、 Sobel、Laplace、canny边缘提取()1. Sobel算⼦边缘提取注释:gray 灰度转换后的图像,前⾯省略了⼀部灰度转换的步骤,后⾯代码会补上1,表⽰x⽅向的差分阶数,1或0------------------------------>如果只写⼀个1,代表x⽅向提取---》1,01,表⽰y⽅向的差分阶数,1或0------------------------------->如果只写⼀个1,代表y⽅向提取---》0,1sobel = cv2.Sobel(gray, cv2.CV_8U, 1, 1)#sobel算⼦边缘检测PointInvert_sobel=255-sobel#反⾊ place算⼦边缘提取注释:这⾥要说的是通过对⽐sobel算⼦的结果,发现Laplace⽐sobel效果更好,可以说是加强版,效果如下所⽰laplace = placian(gray, cv2.CV_8U, ksize=3)#laplace算⼦边缘检测PointInvert_laplace=255-laplace 3.Canny算⼦边缘提取注释:上⼀节提到过:其效果多变,主要是看设置的阈值的范围,当我们改变阈值后,图像后渐渐过滤掉⼀些背景,当然,重在阈值的选取上,当阈值选⼤的时候,也是会将图像的特征完全损坏的。
canny=cv2.Canny(gray, 50, 150)#canny边缘检测PointInvert_canny=255-canny#canny图像反⾊函数中阈值1和阈值2两者的⼩者⽤于边缘连接,⽽⼤者⽤来控制强边缘的初始段,推荐的⾼低阈值⽐在2:1到3:1之间⼆、四种图像的代码演⽰三、源码。
图像处理中的边缘检测算法研究与性能评估
图像处理中的边缘检测算法研究与性能评估引言:在当今数字图像处理领域,边缘检测一直是一个重要且挑战性的问题。
边缘提取是图像处理中的一项基本操作,对于目标检测、图像分割和图像识别等任务都具有重要意义。
边缘检测的目标是找到图像中明显的灰度跃变区域,以准确地确定物体的边缘位置。
本文将介绍几种常见的图像处理中的边缘检测算法,并对其性能进行评估。
一、经典边缘检测算法1. Sobel算子Sobel算子是一种基于差分的边缘检测算子,它结合了图像梯度的信息。
Sobel算子使用一个3×3的模板对图像进行卷积操作,通过计算水平和垂直方向上的梯度来找到边缘位置。
Sobel算子虽然简单,但在边缘检测中表现良好。
2. Prewitt算子Prewitt算子是另一种基于差分的边缘检测算子,与Sobel 算子类似,它也使用一个3×3的模板对图像进行卷积操作。
该算子通过计算水平和垂直方向上的梯度来检测边缘。
Prewitt 算子在边缘检测中也有较好的性能。
3. Canny边缘检测Canny边缘检测是一种广泛应用的边缘检测算法。
与Sobel 和Prewitt算子相比,Canny算法不仅能够检测边缘,还能够进行边缘细化和抑制不必要的边缘响应。
它通过多阶段的边缘检测过程,包括高斯滤波、计算梯度幅值和方向、非极大值抑制和双阈值处理等步骤,来提取图像中的边缘。
二、边缘检测算法的性能评估1. 准确性评估准确性是评估边缘检测算法好坏的重要指标。
在进行准确性评估时,可以使用一些评价指标,如PR曲线、F值等。
PR 曲线是以检测到的边缘像素为横坐标,以正确的边缘像素为纵坐标绘制的曲线,用于评估算法的召回率和准确率。
F值则是召回率和准确率的综合评价指标,能够综合考虑算法的检测效果。
2. 实时性评估实时性是边缘检测算法是否适用于实际应用的重要因素。
在实时性评估时,可以考虑算法的运行时间,以及算法对硬件资源的要求。
边缘检测算法应尽量满足实时性的要求,并能够在不同硬件平台上高效运行。
图像处理中的边缘检测方法与性能评估
图像处理中的边缘检测方法与性能评估边缘检测是图像处理和计算机视觉领域中的一项重要任务。
它主要用于提取图像中物体和背景之间的边界信息,便于后续的图像分割、目标识别和物体测量等应用。
在图像处理领域,边缘被定义为亮度、颜色或纹理等属性上的不连续性。
为了实现准确且可靠的边缘检测,许多不同的方法和算法被提出并广泛应用。
在本文中,我们将介绍几种常见的边缘检测方法,并对它们的性能进行评估。
1. Roberts 算子Roberts 算子是一种基于差分的边缘检测算法,它通过对图像进行水平和垂直方向的差分运算来检测边缘。
这种算法简单且易于实现,但对噪声比较敏感。
2. Sobel 算子Sobel 算子是一种常用的基于梯度的边缘检测算法。
它通过在图像上进行卷积运算,计算像素点的梯度幅值和方向,从而检测边缘。
Sobel 算子可以有效地消除噪声,并在边缘方向上提供更好的响应。
3. Canny 边缘检测Canny 边缘检测是一种经典的边缘检测算法。
它包括多个步骤,包括高斯滤波、计算梯度幅值和方向、非极大值抑制和双阈值处理。
Canny 边缘检测算法具有较高的准确性和鲁棒性,广泛应用于实际图像处理中。
除了以上提到的方法外,还存在许多其他的边缘检测算法,如拉普拉斯算子、积分图像算法等。
这些算法各有优缺点,选择合适的算法需要根据具体应用情况和要求来确定。
对于边缘检测方法的性能评估,通常使用以下几个指标来衡量:1. 精确度精确度是评估边缘检测算法结果与真实边缘之间的差异的指标。
可以通过计算检测结果与真实边缘的重叠率或者平均绝对误差来评估。
2. 召回率召回率是评估边缘检测算法是否能够正确检测到真实边缘的指标。
可以通过计算检测结果中的边缘与真实边缘的重叠率或者正确检测到的边缘像素数量与真实边缘像素数量的比值来评估。
3. 噪声鲁棒性噪声鲁棒性是评估边缘检测算法对图像噪声的抗干扰能力的指标。
可以通过在含有不同噪声水平的图像上进行测试,并比较检测到的边缘结果与真实边缘的差异来评估。
图像边缘提取中三个算子的初步分析
• 95•图像边缘提取是图像识别中很重要的一步,提取边缘的效果可直接影响到目标识别的精度和准确度。
本文针对此问题,选择了三种有代表性的边缘提取算子,分别讨论了Sobel算子、Laplace算子和Canny算子,并分析各算子的特性和优缺点,初步证明了它们的边缘提取效果和适用场景。
引言:随着人工智能的飞速发展,计算机视觉方面的发展也越来越快,图像处理更是日趋成熟。
本文针对图像处理中的边缘提取,进行初步分析,为图像处理的深入研究奠定基础。
1.边缘提取Sobel 算子主要用于边缘提取,目的是计算图像灰度的近视梯度。
Sobel 算子是一种一阶微分算子,通过对上下、左右邻近点的灰度求加权差,来计算当前灰度值,因此对噪声有平滑效果,由于Sobel 算子没有把图像的主题和背景严格区分,所以边缘提取效果一般,对精度要求不高时,比较常用。
Laplace 算子是一种二阶算子,图像像素值发生最大变化的时候,它的二阶导数为零,Laplace 算子依此理论计算图像二阶导数,提取边缘。
Laplace 算子对孤立算子要比对边缘更加敏感,因此更适合于无噪声图像。
在边缘提取方面,通常和高斯模糊相结合来优化提取效果。
Canny 算子是一种多级边缘检测算法,首先利用高斯滤波器对图像进行平滑去噪,灰度转换并计算梯度,然后对非边缘像素进行抑制,最后通过高低阈值检测方法实现连接边缘。
Sobel 算子能检测出图像中比较细的边缘部分,且适用于不同的场合,有检测率高、定位精准和响应明确等特点。
缺点也特别明显,图像处理速度较慢。
图1 原图像图像边缘提取中三个算子的初步分析沈阳理工大学 史利莹• 96•2.结束语本文对Sobel 算子、Laplace 算子和Canny 算子在边缘提取上的表现进行了初步讨论,通过了解算法的工作原理,分析出算法的边缘提取思路。
三种算子可应用于不同的工作场景,比如对精度要求不高时,用Sobel 算子效率更高,对精度要求较高时,Canny 算子的效果更好。
三种不同边缘检测算子的分析和研究
三种不 同边缘检 测算子 的分析和研 究
李晓飞
( 武夷 学院 计算机 科 学与 工程 系, 建 武 夷山 3 4 0 ) 福 530
摘 要: 图像 处理 是 计 算 机 视 觉 的 重要 组 成 部 分 , 图像 边 缘 是 图像 非 常重 要 的 特征 之 一 。本 文 采 用 三 种 算子 , sbl 而 即 oe 算 子 、pae算 子 和 cn y算 子 来 检 测 图像 边 缘 , ll a c an 并且 根 据 实验 结 果 来 比较 sbll l e cn y三 个 算 子 的 区别 。 o e、pa 和 an a c 关 键 词 : 缘检 测 ; 边 图像 处理 ; b l s e 算子 ; p c o l l e算子 ;an aa cn y算 子
卷积。
已平滑 的 , 的梯 度可 以使 用 2 2一 阶 有 限 y ) x 差 分 近似式 来计 算 与 Y偏 导 数 的两个 阵 列 , Y ) 与 , : y )
_ (, ) G =【 ( + ) f xy +f x 1 +1一 (, +1 / , Y f x l 一 (, ) ( + , ) f xY ) 2 Y ]
A ( =厂x 1 1 五 1 / +,+) vx f , - 一, ) ( + + +) l 1 + y
一
拉普 拉 斯 的算 子 , 的值 为 0 如 果 ,) y ) ; y的变 化
fx 1 一 ) 2 ( y 1 fx l 一 ) (一 , 1 fx 一) (+, 1 Y 一 , 一 y
21 0 2年 7 月
安 阳工 学 院学 报
J u a o y n n t ue o c n l g or l f n An a g I si t f t Te h o o y
图像处理中的边缘提取算法综述
图像处理中的边缘提取算法综述图像处理是计算机视觉领域中的重要研究方向之一,而边缘提取是图像处理中的基本操作之一。
边缘提取算法的目标是从图像中提取出物体的轮廓边缘,从而为后续的图像分析、目标检测等任务提供基础。
本文将对常见的图像处理中的边缘提取算法进行综述,并分析各算法的特点和适用场景。
在图像处理中,边缘通常指的是亮度或颜色发生较大变化的地方。
边缘提取算法可以分为基于梯度的方法和基于模板匹配的方法两大类。
基于梯度的方法是常用的边缘提取算法之一。
梯度是指图像中亮度或颜色变化最快的方向。
常见的基于梯度的边缘提取算法包括Sobel算子、Prewitt算子和Canny算子等。
Sobel算子是一种基于离散差分的边缘提取算法。
它通过将原图像与两个差分算子进行卷积运算,分别求得图像在水平和垂直方向的梯度值,然后通过求模运算得到最终的梯度幅值图像。
Sobel算子的优点是计算简单,但容易受到噪声干扰,边缘检测结果不够准确。
Prewitt算子也是一种基于离散差分的边缘提取算法,其原理与Sobel算子类似。
Prewitt算子通过在水平和垂直方向分别扫描图像,求得图像在两个方向的梯度值,进而通过求模运算得到最终的边缘图像。
Prewitt算子与Sobel算子相比,对噪声干扰的鲁棒性更好,但边缘检测精度相对较低。
Canny算子是一种基于多阈值自适应的边缘提取算法。
Canny算法首先通过高斯滤波器对图像进行平滑处理,然后计算图像的梯度幅值和梯度方向,接着应用非极大值抑制和双阈值处理来提取边缘。
Canny 算子的优点是能够提取出较完整、连续的边缘,且对噪声干扰较为鲁棒,是目前应用最广泛的边缘提取算法之一。
除了基于梯度的方法,基于模板匹配的方法也常用于边缘提取。
基于模板匹配的方法通过设计一系列的模板,来寻找与模板匹配程度较高的像素点,从而确定边缘位置。
常见的基于模板匹配的边缘提取算法包括Roberts算子、Laplacian算子和LoG算子等。
图像处理中的边缘检测与图像增强技术
图像处理中的边缘检测与图像增强技术边缘检测是图像处理领域中的重要技术,它主要用于提取图像中的边缘信息,帮助我们分析和理解图像。
图像增强则是通过改变图像的亮度、对比度等参数,使得图像更加明亮和清晰。
本文将介绍边缘检测和图像增强的原理、常用算法和应用领域。
一、边缘检测技术边缘是图像中灰度变化比较大的区域,通常表示物体边界或者纹理的边界。
边缘检测的目标是在图像中找到这些边缘,并将其提取出来。
常见的边缘检测算法有Sobel算子、Prewitt算子、Roberts算子和Canny算子。
1. Sobel算子Sobel算子是一种最简单和最常用的边缘检测算法之一。
它通过在图像中进行卷积运算,通过计算像素点与其邻域像素点之间的差异来作为边缘的强度。
Sobel算子有水平和垂直两个方向的算子,通过计算两个方向上的差异来得到最终的边缘值。
2. Prewitt算子Prewitt算子也是一种常用的边缘检测算法,它与Sobel算子类似,也是通过计算像素点与其邻域像素点之间的差异来作为边缘的强度。
不同之处在于Prewitt算子使用了不同的卷积核,其结果可能会略有差异。
3. Roberts算子Roberts算子是一种简单的边缘检测算法,它使用了一个2x2的卷积核。
通过计算相邻像素点之间的差异,Roberts算子可以提取图像中的边缘信息。
然而,Roberts算子相对于其他算法来说,其结果可能会较为粗糙。
4. Canny算子Canny算子是一种边缘检测的经典算法,由于其较好的性能和效果,被广泛应用于边缘检测领域。
Canny算子主要包括以下几步:首先,对图像进行高斯滤波,以平滑图像;其次,计算图像的梯度和边缘方向;然后,通过非极大值抑制去除不是边缘的像素;最后,通过双阈值算法将边缘连接为一条连续的线。
二、图像增强技术图像增强是指通过改变图像的亮度、对比度等参数,使得图像更加明亮和清晰。
图像增强可以提高图像的质量,使得图像更适合用于后续的分析和处理。
2019年整理基于MATLAB边缘检测与提取的几种方法的比较精品资料
基于MATLAB边缘检测与提取的几种方法的比较数字图像边缘检测(Digital Image Processing)又称为计算机图像边缘检测,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。
由于图像边缘是图像最基本的特征之一,往往携带着一幅图像的大部分信息。
而边缘存在于图像的不规则结构和不平稳现象中,也即存在于信号的突变点处,这些点给出了图像轮廓的位置,这些轮廓常常是我们在图像边缘检测时所需要的非常重要的一些特征条件,这就需要我们对一幅图像检测并提取出它的边缘。
在通常情况下,我们可以将信号中的奇异点和突变点认为是图像中的边缘点,其附近灰度的变化情况可从它相邻像素灰度分布的梯度来反映。
根据这一特点,提出了多种边缘检测算子:如Robert算子、Sobel 算子、Prewitt 算子、Laplacian 算子,Canny算子等。
这些方法多是以待处理像素为中心的邻域作为进行灰度分析的基础,实现对图像边缘的提取并已经取得了较好的处理效果。
经典的边界提取技术大都基于微分运算。
首先通过平滑来滤除图像中的噪声,然后进行一阶微分或二阶微分运算,求得梯度最大值或二阶导数的过零点,最后选取适当的阈值来提取边界。
本文主要介绍几种经典的边缘提取算法,选取两种用MATLAB语言编程实现,对提取结果进行比较和分析。
图像边缘检测的基本步骤:(1)滤波。
边缘检测主要基于导数计算,但受噪声影响。
但滤波器在降低噪声的同时也导致边缘强度的损失。
(2)增强。
增强算法将邻域中灰度有显著变化的点突出显示。
一般通过计算梯度幅值完成。
(3)检测。
但在有些图像中梯度幅值较大的并不是边缘点。
最简单的边缘检测是梯度幅值阈值判定。
(4)定位。
精确确定边缘的位置。
几种边缘算子的比较以柚子的图片为例1、Roberts算子是一种利用局部差分算子寻找边缘的算子,Roberts算子边缘定位准,但是对噪声敏感。
适用于边缘明显而且噪声较少的图像分割,在应用中经常用Roberts算子来提取道路。
图像边缘检测实验报告
图像边缘检测实验报告图像边缘检测实验报告引言:图像边缘检测是计算机视觉领域中一项重要的任务,它在许多应用中都起到关键作用。
边缘是图像中不同区域之间的分界线,它们包含了图像中物体的轮廓和形状信息。
因此,准确地检测和提取图像边缘对于目标识别、图像分割和特征提取等任务至关重要。
实验目的:本实验旨在通过实践探索和理解常用的图像边缘检测算法,并对其性能进行评估。
我们将使用不同的算法对一组测试图像进行边缘检测,并比较它们的结果,以了解它们的优缺点和适用场景。
实验方法:1. 数据准备:我们从公开的图像数据库中选择了一组具有不同特征和复杂度的测试图像。
这些图像包括自然风景、人物肖像和建筑物等多种场景,以覆盖不同的应用场景。
2. 算法选择:我们选择了三种常用的图像边缘检测算法进行实验:Sobel算子、Canny算子和Laplacian算子。
这三种算法在实践中被广泛应用,并且具有不同的特点和适用范围。
3. 实验步骤:a) Sobel算子:我们首先将测试图像转换为灰度图像,然后使用Sobel算子对其进行边缘检测。
Sobel算子是一种基于梯度的算法,它通过计算图像中每个像素点的梯度值来检测边缘。
b) Canny算子:接下来,我们使用Canny算子对同一组测试图像进行边缘检测。
Canny算子是一种基于多阶段处理的算法,它首先使用高斯滤波器对图像进行平滑处理,然后计算梯度和非最大抑制,最后进行边缘连接和阈值处理。
c) Laplacian算子:最后,我们使用Laplacian算子对测试图像进行边缘检测。
Laplacian算子是一种基于二阶导数的算法,它通过计算图像中每个像素点的二阶导数值来检测边缘。
实验结果:通过对实验图像的边缘检测,我们得到了以下结果:1. Sobel算子产生了较为明显的边缘线,但在一些复杂场景下容易产生噪声,并且边缘线有时会断裂。
2. Canny算子在平滑处理后能够准确地检测到图像中的边缘,并且能够消除噪声和断裂的边缘线。
图像边缘提取方法综述
图像边缘提取方法综述摘要图像最基本的特征是边缘,边缘是图像性区域和另一个属性区域的交接处,是区域属性发生突变的地方,是图像中不确定性最大的地方,也是图像信息最集中的地方,图像的边缘包含着丰富的信息。
因此,图像边缘提取一直以来都是图像处理与分析领域的研究热点。
本文对传统的具有代表性的各种图像边缘提取方法进行了阐述、对比和分析了各自的优缺点,为了更清楚地看出各种算法的效果,给出了一些常用算法对同一副标准测试图像进行边缘提取的实验结果。
同时,本文对现代的一些边缘检测方法如小波分析、形态学等也作了简要的介绍,重点分析了以上各种算法在图像边缘提取中的发展状况和优缺点。
最后提出了在实践中要根据待解决的问题的特点和要求决定采取何种方法。
关键词:图像处理;边缘提取;小波变换1 图像边缘提取概述人获得的绝大部分信息来源于图像信息,而在图像信息中又以边界信息最为丰富,它传递和表达着物体的空间几何信息,可以判定物体的大小、形状、类型甚至地理位置。
边缘特征是图像最基本的特征。
边缘是图像性区域和另一个属性区域的交界处,是区域性属性发生突变的地方,是图像中不确定性最大的地方,也是图像信息最集中的地方,图像的边缘包含着丰富的信息。
当把边界从目标图像中提取出来后,目标物体的信息能够更直观地展现在人们面前,对于用计算机处理目标物更为有利。
因此,数字图像的边缘检测是图像分析处理领域十分重要的基础,在工程应用中占有十分重要的地位。
图像的边缘有方向和幅值两个特性,通常沿边缘的走向灰度变化平缓,垂直于边缘走向的像素灰度变化剧烈。
根据灰度变化的特点,常见的边缘可分为阶跃型、房顶型和凸缘型,如图1.1所示。
对于阶跃型边缘,二阶方向导数在边缘处呈零交叉,而后两种,二阶方向导数在边缘处取极值。
图1.1 边缘灰度变化的几种类型图像边缘检测的流图大致如图1.2所示:图1.2 边缘检测的流图(1)滤波。
边缘检测主要基于导数计算,但受噪声影响。
滤波器在降低噪声的同时也导致边缘强度的损失。
边缘提取不同算子方法的分析比较
目录摘要 (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数字图像处理简介数字图像处理又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程,以提高图像的实用性,达到人们所要求的预期结果。
几种图像边缘提取算法比较
4 结论
本文研究了几种常见的边缘提取算子并重 点研究了基于 F acet模型的边缘提取算法, 对它 们的边缘提取效果和抗噪性方面作了比较. 通过 对仿真和实际的 ICT 图像进行实验, 结果表明: F acet模 型 比 其 他 边 缘 提 取 算 子 的 边 缘 提 取 效 果 好, 而 且 在 抗 噪 性 方 面 也 优 于 其 他 算 子. 这一结果为实际的测量和边缘提取提供 了 借 鉴.
Matlab实现:图像边缘提取
Matlab实现:图像边缘提取1、边缘提取算法⽅法⼀:⼀阶微分算⼦Sobel算⼦Sobel算⼦检测⽅法对灰度渐变和噪声较多的图像处理效果较好,Sobel算⼦对边缘定位不是很准确,图像的边缘不⽌⼀个像素。
Roberts算⼦Roberts算⼦检测⽅法对具有陡峭的低噪声的图像处理效果较好,但是利⽤roberts算⼦提取边缘的结果是边缘⽐较粗,因此边缘的定位不是很准确。
Prewitt算⼦Prewitt算⼦检测⽅法对灰度渐变和噪声较多的图像处理效果较好。
但边缘较宽,⽽且间断点多。
Canny算⼦Canny算⼦是⽬前边缘检测最常⽤的算法,效果也是最理想的。
Canny⽅法不容易受噪声⼲扰,能够检测到真正的弱边缘。
优点在于,使⽤两种不同的阈值分别检测强边缘和弱边缘,并且当弱边缘和强边缘相连时,才将弱边缘包含在输出图像中。
⽅法⼆:⼆阶微分算⼦Laplacian算⼦Laplacian算⼦法对噪声⽐较敏感,所以很少⽤该算⼦检测边缘,⽽是⽤来判断边缘像素视为与图像的明区还是暗区。
2、实验结果分析⼀、边缘提取:Sobel算⼦检测⽅法对灰度渐变和噪声较多的图像处理效果较好,sobel算⼦对边缘定位不是很准确,图像的边缘不⽌⼀个像素;Roberts算⼦检测⽅法对具有陡峭的低噪声的图像处理效果较好,但是利⽤roberts算⼦提取边缘的结果是边缘⽐较粗,因此边缘的定位不是很准确;Prewitt算⼦检测⽅法对灰度渐变和噪声较多的图像处理效果较好。
但边缘较宽,⽽且间断点多;Laplacian算⼦法对噪声⽐较敏感,所以很少⽤该算⼦检测边缘,⽽是⽤来判断边缘像素视为与图像的明区还是暗区;Canny⽅法不容易受噪声⼲扰,能够检测到真正的弱边缘。
优点在于,使⽤两种不同的阈值分别检测强边缘和弱边缘,并且当弱边缘和强边缘相连时,才将弱边缘包含在输出图像中。
⼆、边缘复合增强Sobel、Robert、Prewitt算⼦的增强效果并不是很明显,尤其是Robert算⼦,因为它提取的边缘点过于稀疏和离散;Laplacian算⼦和canny算⼦的增强效果都⽐较理想,将边缘叠加上去后,整个⼿的轮廓和边缘都很清晰,直观上看,canny算⼦实现的效果⽐Laplacian算⼦好,最明显的地⽅就是⼿指尖的边缘。
[转]几种图像边缘检测算子的比较
[转]⼏种图像边缘检测算⼦的⽐较 不同图像灰度不同,边界处⼀般会有明显的边缘,利⽤此特征可以分割图像。
需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地⽅,⽽物体间的边界指的是现实场景中的存在于物体之间的边界。
有可能有边缘的地⽅并⾮边界,也有可能边界的地⽅并⽆边缘,因为现实世界中的物体是三维的,⽽图像只具有⼆维信息,从三维到⼆维的投影成像不可避免的会丢失⼀部分信息;另外,成像过程中的光照和噪声也是不可避免的重要因素。
正是因为这些原因,基于边缘的图像分割仍然是当前图像研究中的世界级难题,⽬前研究者正在试图在边缘提取中加⼊⾼层的语义信息。
在实际的图像分割中,往往只⽤到⼀阶和⼆阶导数,虽然,原理上,可以⽤更⾼阶的导数,但是,因为噪声的影响,在纯粹⼆阶的导数操作中就会出现对噪声的敏感现象,三阶以上的导数信息往往失去了应⽤价值。
⼆阶导数还可以说明灰度突变的类型。
在有些情况下,如灰度变化均匀的图像,只利⽤⼀阶导数可能找不到边界,此时⼆阶导数就能提供很有⽤的信息。
⼆阶导数对噪声也⽐较敏感,解决的⽅法是先对图像进⾏平滑滤波,消除部分噪声,再进⾏边缘检测。
不过,利⽤⼆阶导数信息的是基于过零检测的,因此得到的边缘点数⽐较少,有利于后继的处理和识别⼯作。
各种算⼦的存在就是对这种导数分割原理进⾏的实例化计算,是为了在计算过程中直接使⽤的⼀种计算单位。
1.Sobel算⼦其主要⽤于边缘检测,在技术上它是以离散型的差分算⼦,⽤来运算图像亮度函数的梯度的近似值, Sobel算⼦是典型的基于⼀阶导数的边缘检测算⼦,由于该算⼦中引⼊了类似局部平均的运算,因此对噪声具有平滑作⽤,能很好的消除噪声的影响。
Sobel算⼦对于象素的位置的影响做了加权,与Prewitt算⼦、Roberts算⼦相⽐因此效果更好。
Sobel算⼦包含两组3x3的矩阵,分别为横向及纵向模板,将之与图像作平⾯卷积,即可分别得出横向及纵向的亮度差分近似值。
边缘提取不同算法特点分析
1 边缘定位精度方面 Roberts算子和Log算子定位精度较高。Roberts算子简单直观,Log算子利用 二阶导数零交叉特性检测边缘。但Log算子只能获得边缘位置信息,不能得到边 缘方向信息。 2 边缘方向的敏感性 Sobel算子、Prewitt算子检测斜向阶跃边缘效果较好,Roberts算子检测水平 和垂直边缘效果较好。Log算子不具有边缘方向检测功能。Sobel算子能提供最精 确的边缘方向估计。 3 去噪能力 Roberts算子和Log算子虽然定位精度高,但受噪声影响大。 Sobel算子和Prewitt算子模板相对较大因而去噪能力较强,具有平滑作用, 能滤除一些噪声,去掉一部分伪边缘,但同时也平滑了真正的边缘,降低了其边 缘定位精度。 总体来讲,Canny算子边缘定位精确性和抗噪声能力效果较好,是一个折中 方案。
பைடு நூலகம்
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录摘要 (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数字图像处理简介数字图像处理又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程,以提高图像的实用性,达到人们所要求的预期结果。
从处理的目的来讲主要有:(1)提高图像的视感质量,以达到赏心悦目的效果;(2)提取图像中所包含的某些特征或特殊信息;(3)对图像数据进行变换、编码和压缩,以便用于图像的存储和传输。
数字图像处理技术是计算机技术、信息论和信号处理相结合的综合性学科。
数字图像处理的特点有如下几点:(1)处理信息量很大:数字图像处理的信息大多是二维信息,处理信息量很大,对计算机的计算速度、存储容量等要求较高。
(2)占用频带较宽:数字图像处理占用的频带较宽。
与语言信息相比,占用的频带要大几个数量级。
(3)各像素相关性大:数字图像中各个像素是不独立的,其相关性大。
在图像画面上,经常有很多像素有相同或接近的灰度。
就电视画面而言,同一行中相邻两个像素或相邻两行间的像素,其相关系数可达0.9以上,而相邻两帧之间的相关性比帧内相关性一般说还要大些。
(4)无法复现三维景物的全部几何信息:由于图像是三维景物的二维投影,一幅图象本身不具备复现三维景物的全部几何信息的能力,很显然三维景物背后部分信息在二维图像画面上是反映不出来的。
(5)受人的因素影响较大:数字图像处理后的图像一般是给人观察和评价的,因此受人的因素影响较大。
由于人的视觉系统很复杂,受环境条件、视觉性能、人的情绪爱好以及知识状况影响很大,作为图像质量的评价还有待进一步深入的研究。
另一方面,计算机视觉是模仿人的视觉,人的感知机理必然影响着计算机视觉的研究。
2边缘检测2.1边缘的含义边缘(edge)是指图像局部强度变化最显著的部分,边缘主要存在于目标与目标、目标与背景、区域与区域(包括不同色彩)之间,是图像分割、纹理特征和形状特征等图像分析的重要基础。
图像分析和理解的第一步常常是边缘检测(edge detection),由于边缘检测十分重要,因此成为机器视觉研究领域最活跃的课题之一。
边缘是图像的最重要的特征。
边缘是指周围像素灰度有阶跃变化或屋顶变化的那些像素的集合。
边缘检测主要是灰度变化的度量、检测和定位。
有很多种不同的边缘检测方法,同一种方法使用的滤波器也不尽相同。
图像边缘检测就是研究更好的边缘检测方法和检测算子。
2.2边缘检测的含义边缘检测的基本思想首先是利用边缘增强算子,突出图像中的局部边缘,然后定义象素的“边缘强度”,通过设置阈值的方法提取边缘点集。
由于噪声和模糊的存在,监测到的边界可能会变宽或在某点处发生间断。
因此,边界检测包括两个基本内容:(1)用边缘算子提取出反映灰度变化的边缘点集。
(2)在边缘点集合中剔除某些边界点或填补边界间断点,并将这些边缘连接成完整的线。
图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。
有许多方法用于边缘检测,它们的绝大部分可以划分为两类:基于查找一类和基于零穿越的一类。
基于查找的方法通过寻找图像一阶导数中的最大和最小值来检测边界,通常是将边界定位在梯度最大的方向。
基于零穿越的方法通过寻找图像二阶导数零穿越来寻找边界,通常是Laplacian过零点或者非线性差分表示的过零点。
2.3边缘检测的步骤(1)滤波:边缘检测算法主要是基于图像强度的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与噪声有关的边缘检测器的性能。
需要指出,大多数滤波器在降低噪声的同时也导致了边缘强度的损失,因此,增强边缘和降低噪声之间需要折中。
(2)增强:增强边缘的基础是确定图像各点邻域强度的变化值。
增强算法可以将邻域(或局部)强度值有显著变化的点突显出来。
边缘增强一般是通过计算梯度幅值来完成的。
(3)检测:在图像中有许多点的梯度幅值比较大,而这些点在特定的应用领域中并不都是边缘,所以应该用某种方法来确定哪些点是边缘点。
最简单的边缘检测判据是梯度幅值阈值判据。
(4)定位:如果某一应用场合要求确定边缘位置,则边缘的位置可在子像素分辨率上来估计,边缘的方位也可以被估计出来。
在边缘检测算法中,前三个步骤用得十分普遍。
这是因为大多数场合下,仅仅需要边缘检测器指出边缘出现在图像某一像素点的附近,而没有必要指出边缘的精确位置或方向。
边缘检测的实质是采用某种算法来提取出图像中对象与背景问的交界线。
我们将边缘定义为图像中灰度发生急剧变化的区域边界。
图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此我们可以用局部图像微分技术来获得边缘检测算子。
经典的边缘检测方法,是通过对原始图像中像素的某小邻域构造边缘检测算子来达到检测边缘这一目的的。
3常用的边缘检测算子3.1微分算子3.1.1 Sobel 算子Sobel 算子是一种梯度幅值,通常可以以数字化方式用下表所示的卷积核来实现。
图像中的每个都用这两个核做卷积,一个核对通常的垂直边缘响应最大而另一个对水平边缘响应最大。
两个卷积的最大值值作为该点的输出值,运算结果是一副边缘幅度的图像。
X ,Y 方向各用一个模板,两个模板组合起来构成1个梯度算子。
X 方向模板对垂直边缘影响最大,Y 方向模板对水平边缘影响最大。
模板如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---121000121⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---1012021013.1.2 robert 算子Roberts 算子是一种斜向偏差分的梯度计算方法, 梯度的大小代表边缘的强度, 梯度的方向与边缘走向垂直。
该算子定位精度高, 但容易丢失部分边缘。
因为没进行平滑处理, 不具有抑制噪声的能力。
用该算子处理边缘陡峭度高且噪声小的图像效果较佳。
Roberts 算子由下式给出:{}1222(,)g x y =+3.1.3 prewitt 算子prewitt 算子是加权平均算子,对噪声有抑制作用,但是像素平均相当于对图像进行地同滤波,所以prewitt 算子对边缘的定位不如robert 算子。
模板如下:3.2 Laplacian 算子拉普拉斯高斯算子是一种二阶导数算子,将在边缘处产生一个陡峭的零交叉。
前面介绍的几种梯度法具有方向性,不能对各种走向的边缘都具有相同的增强效果。
但是Laplacian 算子是各向同性的,能对任何走向的界线和线条进行锐化,无方向性。
这是拉普拉斯算子区别于其他算法的最大优点。
对一个连续函数f(x,y),它在位置(x,y)的拉普拉斯算子定义如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---111000111⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---101101101模板如下:3.3 Log 算法正如上面所提到的,利用图像强度二阶导数的零交叉点来求边缘点的算法对噪声十分敏感,所以,希望在边缘增强前滤除噪声。
为此,Marr 和Hildreth 将高斯滤波和拉普拉斯边缘检测结合在一起,形成Log (Laplacian of Gaussian, Log )算法,也称之为拉普拉斯高斯算法。
Log 算子的输出h(x,y)是通过卷积运算得到的:2(,)[(,)(,)]h x y g x y f x y =∇⨯3.4 Canny 边缘检测法Canny 边缘检测是一种比较新的边缘检测算子,具有很好的边缘监测性能,在图像处理中得到了越来越广泛的应用。
它依据图像边缘检测最优准则设计canny 边缘检测算法:(1)首先用2D 高斯滤波模板进行卷积以消除噪声(2)利用导数算子找到图像灰度地沿着两个方向的偏导数()Y X G G ,,并求出梯度的大小: 22y x G G G += (3)利用(2)的结果计算出梯度的方向 (4)一旦知道了边缘的方向,就可以把边缘的梯度方向大致分为四种:水平、竖直、45度方向、135度方向。
通过梯度的方向,就可以找到这个像素梯度方向的邻接像素。
(5)遍历图像,若某个像素的灰度值与其梯度方向上前后两个像素的灰度值相比不是最大的,那么这个像素值置为0,即不是边缘。
(6)使用累计直方图计算两个阈值,大于高阈值的一定是边缘,小于低阈值的一定不是边缘,介于之间的,看这个像素的邻接像素中有没有超过高阈值的边缘像素,如果有的话那么它就是边缘了,否则它就不是边缘。
⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡----010141010⎪⎪⎭⎫ ⎝⎛=x y G G Arc tan θ4程序设计在Matlab图像处理工具箱中,提供了edge函数利用以上算子来检测灰度图像的边缘。