边缘检测

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Prewitt算子优缺点
Prewitt算子对灰度渐变 和噪声较多的图像处理效 果较好,但不能完全排除 检测结果中出现虚假边缘
3.Sobel边缘检测算子
将Prewitt边缘检测算子模板的中心系数增加一个权值2,不但 可以突出中心像素点,而且可以得到平滑的效果,这就成为索 贝尔算子,则根据下图中给出两个模板对像素点进行卷积:
水平方向
垂直方向
则得到Z1点处的一阶偏导数Gx=Z5-Z1;Gy=Z4-Z2,然后 取这两个卷积结果中的最大值作为像素点Z1处的梯度值。 适当选取阈值T,梯度值大于阈值,为边缘点,将每个像素 点逐一运算,可得到输入图像的梯度图像作为输出,从而 完成边缘的检测。
• Matlab中使用Roberts边缘检测算子对给定图像进 行边缘检测 • >>clear all; • I=imread('circuit.tif'); • BW1=edge(I,'roberts'); • subplot(121);imshow(I); • xlabel('(a)原始图像'); • subplot(122);imshow(BW1); • xlabel('(b)Roberts边缘检测')
感谢欣赏!
1 0 -1 2 0 -2 1 0 -1 1 2 1 0 0 0 -1 -2 -1
水平方向
垂直方向
得到的一阶偏导数 Gx=(Z1+2Z2+Z3)(Z7+2Z8+Z9) Gy=(Z1+2Z4+Z7)(Z3+2Z6+Z9) 取两个方向 的卷积最大值作为像素点的 梯度值输出。
Matlab中使用Sobel边缘检测算子对给定图像进行 边缘检测
原始图像中 的3x3子区 域
3x3卷积 模板
R=W1Z1+W2Z2+.....+W9Z9=∑WiZi
1:Robert边缘检测算 子 原理及方法:罗伯特算子采用对角线方向相邻像素之差近似梯
度幅度检测边缘,假设输入图像为f(x,y),对像素点Zi分别 利用如下模板进行卷积。 0 0 —1 —1
0 1 1 0
Sobel算子优缺点
Sobel有明显的两个优点:一时高频的像素点少,低频 的像素点多,使像素的灰度平均值下降,且由于噪声一 般为高频信号,所以它具有抑制噪声的能力;二是检测 到的边缘比较宽,至少具有两个像素的边缘宽度,从而 使其得到了广泛应用。但是不能完全排除检测结果中出 现虚假边缘。
一阶导数的局部最大值对应二阶导数的零交点,基 于梯度算子的边缘检测是一阶导数,后序会继续研 究相关二阶导数零交点的内容。
同Robert算子一样用局部差分的方法来寻找边缘,根据 Prewitt边缘检测算子的模板进行卷积运算,
1 0 -1 1 0 -1 1 0 -1 1 1 0 0 -1 -1
得到的一阶偏导数Gx 和Gy:
Gx=(Z1+Z2+Z3)(Z7+Z8+Z9) Gy=(Z1+Z4+Z5)(Z3+Z6+Z9)
1
0
-1
原理:基于梯度算子的边缘检测大多数是
基于方向导数求卷积的方法 • 设定好卷积模板后,将模 板在图像中移动,并将图 Z1 Z 2 Z3 像中的每个像素点与此模 板进行卷积,得到每个像 Z4 Z 5 Z 6 素点的响应R,用R来表征 每个像素点的邻域灰度值 Z7 Z8 Z9 变化率,即灰度梯度值, 从而可将灰度图像经过与 模板卷积后转化为梯度图 像。模板系数Wi( W1 W2 W3 i=1,2....9)相加的总和必 须为零,以确保在灰度级 W4 W5 W6 不变的区域中模板的响应 为零。Z表示像素的灰度 W7 W8 W9 值。
梯度算子:梯度属于一阶微分算子,对应一阶导数。若图像 含有较小的噪声并且图像边缘的灰度值过渡较为明显,梯度 算子可以得到较好的边缘检测结果。 其中Roberts算子,Sobel算子,prewitt算子
使用2范数梯度要对图像中的每个像素点进行平方及开方运算,计算复杂度 高,在实际应用中,通常取绝对值或最大值来近似代替该运算以实现简化, 与平方及开方运算相比,取绝对值或最大值进行的边缘检测的准确度和边缘 的精度差异都很小
Roberts算子优缺点
Roberts算子利用局部查分算子寻找边缘,边缘定 位精度高,但容易丢失一部分边缘,同时由于图像 没有经过平滑处理,因此不具备抑制噪声能力。该 算子对具有陡峭边缘且含有噪声少的图像处理效果 较好。 该检测算子模板没有中心点,所以它在实际中很少 使用。
2.Perwitt普瑞维特算子
>>clear all; image=imread('circuit.tif'); image0=edge(image,'sobel'); image1=edge(image,'sobel',0.06); image2=edge(image,'sobel',0.04); image3=edge(image,'sobel',0.02); subplot(231);imshow(image); xlabel('(a)原始图像'); image0=edge(image,'sobel'); subplot(232);image(image0); xlabel('(b)默认门限'); subplot(233);image(image1); xlabel('(c)门限1'); subplot(234);image(image2); xlabel('(d)门限2'); subplot(235);image(image3);
水平方向
垂直方向
对图像中每个作为像素点都用这两个模 板进行卷积,同样取两个方向的卷积最 大该像素点的梯度值
Matlab中使用Prewitt边缘检测算子对给定图像进行 边缘检测
>>clear all; I=imread('rice.png'); subplot(221);imshow(I); xlabel('(a)原始图像') BW3=edge(I,'prewitt'); subplot(2,2,2);imshow(BW3); xlabel('(b)自动阈值的prewitt算子边缘检测'); [BW3,thresh3]=edge(I,'prewitt'); %返回当前prewitt算子边缘检测的阈值 BW3=edge(I,'prewitt',0.05,'horizontal'); subplot(2,2,3);imshow(BW3); xlabel('(c)阈值为0.05水平方向prewitt算子'); BW3=edge(I,'prewitt',0.05,'vertical'); subplot(2,2,4);imshow(BW3); xlabel('(d)阈值为0.05垂直方向prewitt算子');
欢迎进入 基于梯度算子的边 缘检测.....
初步了解基于梯度算子的边缘检测 梯度算子的各类算子: Roberts算子 Prewitt算子 Sobel算子
基于梯度算子的边缘ห้องสมุดไป่ตู้测
边缘:图像的基本特征,具有灰度值不连续的性质,即不同灰度 值的相邻区域之间。 边缘点:对应于一阶微分幅度的最大值点以及二阶微分的零 点。 梯度:一个曲面沿着给定方向的倾斜程度,在单变量函数中 ,梯度只是导数,在线性函数中,是线的斜率——有方向的 向量。
相关文档
最新文档