图像算法八 —— 多种边缘检测算法(Sobel算子、Isotropic Sobel算子、Roberts算子、Prewitt算子、Laplacian算子、Canny算子)介绍及比较
文章目录
- 多种边缘检测算法(Sobel算子、Isotropic Sobel算子、Roberts算子、Prewitt算子、Laplacian算子、Canny算子)介绍及比较
- 边缘检测算法简介
- 多种边缘检测算法对比表
- Sobel算子
- 简介
- 原理
- 优缺点
- lsotropic Sobel (各向同性 Sobel)算子
- Roberts算子
- 简介
- 原理
- 优缺点
- Prewitt算子
- 简介
- 原理
- 优缺点
- Laplacian算子
- 简介
- 原理
- 优缺点
- Canny算子
- 简介
- 算法步骤
- 优缺点
多种边缘检测算法(Sobel算子、Isotropic Sobel算子、Roberts算子、Prewitt算子、Laplacian算子、Canny算子)介绍及比较
边缘检测算法简介
通常来说,边缘是指图像中像素值有突变的地方,常用于图像的分割领域。
目前,在实际的图像分割中,往往只用到了一阶导数和二阶导数,虽然在原理上可以用到更高阶的导数,但是由于图像中噪声的影响,在纯粹的二阶导数中就会出现对噪声的敏感现象,三阶以上导数信息往往失去了应用价值。
- 一阶导数的边缘算子:常见的
Sobel算子
、Roberts算子
和Prewitt算子
- 二阶导数的边缘算子:根据二阶导数过零点,常见的有
Laplacian算子
,此类算子对噪声敏感 - 前两种都是通过微分算子来检测图像边缘,还有一种是
Canny算子
,其是在满足一定约束条件下,推导出来的边缘检测最优化算子。
同时,由于二阶导数对噪声比较敏感,因此通常在使用二阶导数前,需要前对图像进行平滑滤波
,消除部分噪声,再进行边缘检测
。不过利用二阶导数信息的算法是基于过零检测
的,因此得到的边缘点数比较少,有利于后序的处理和识别工作。
各种算子的存在,就是对这种导数分割原理进行实例化计算,是为了在计算过程中能够直接使用的一种计算单位。
多种边缘检测算法对比表
算子 | 优点 | 缺点 |
---|---|---|
SobelSobelSobel |
* SobelSobelSobel算子要比PrewittPrewittPrewitt算子更能准确检测图像边缘; * 边缘定义较准确,常用语噪声较多,灰度渐变的图像; * 对像素位置的影响进行了加权,相比之下比PrewittPrewittPrewitt算子、RobertsRobertsRoberts算子效果更好; * 以滤波算子形式来提取边缘,XXX、YYY方向各用一个模板,两个模板组合起来构成一个梯度算子; * XXX方向模板对垂直边缘影响最大,YYY方向模板对水平边缘影响最大 |
* 由于边缘是位置的标志,对灰度的变化不敏感 |
RobertsRobertsRoberts |
* 对垂直边缘的检测效果好于斜向边缘; * 对具有陡峭的低噪声的图像效果最好; * 定位精度高 |
* 对噪声敏感,无法抑制噪声的影响; * 提取边缘的结果边缘较粗,边缘定位不是很准确 |
PrewittPrewittPrewitt |
* PrewittPrewittPrewitt边缘检测结果在水平方向和垂直方向均比RobertsRobertsRoberts算子明显,适合用来识别噪声较多,灰度渐变的图像; * 由于其进行了像素平均,使得对噪声有抑制作用 |
* 像素平均相当于对图像进行低通滤波,所以PrewittPrewittPrewitt算子对边缘的定位不如RobertsRobertsRoberts算子 |
LaplacianLaplacianLaplacian | * 对图像阶跃性边缘点定位准确 |
* 对噪声比较敏感,只适用于无噪声图像; * 容易丢失边缘方向的信息,造成一些不连续的检测边缘 |
CannyCannyCanny |
* 对噪声不敏感,不容易受到噪声干扰; * 能够检测到真正的弱边缘; * 使用两种不同的阈值分别检测强边缘和弱边缘 * 当强边缘与弱边缘相连时,才将弱边缘包含在输出图形中 |
* 易使高频边缘被平滑掉,从而造成边缘丢失 |
Sobel算子
简介
Sobel算子
是典型的基于一阶导数的边缘检测算子,由于该算子引入了类似局部平均的运算,因此对噪声具有平滑作用,能够很好的消除噪声的影响。
Sobel算子
对像素的位置的影响做了加权,因此与Prewitt算子
,Roberts算子
相比效果更好。
原理
Sobel算子
包含两组3×33 \times 33×3的矩阵,分别为横向和纵向模板,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。
检测水平方向 沿横向模板:
Gx=[−101−202−101]G_x=\begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix}Gx=⎣⎡−1−2−1000121⎦⎤
检测垂直方向 沿纵向的模板
Gx=[121000−1−2−1]G_x=\begin{bmatrix} 1 & 2 & 1 \\ 0 & 0 & 0 \\ -1 & -2 & -1 \end{bmatrix}Gx=⎣⎡10−120−210−1⎦⎤
图像的每一个像素的横向及纵向梯度近似值,可用以下的公式结合,来计算梯度的大小。
G=Gx2+Gy22G=\sqrt[2]{G_x^2 + G_y^2}G=2Gx2+Gy2
然后可用以下公式,计算梯度方向
θ=arctan(GyGx)\theta = \arctan(\frac{G_y}{G_x} )θ=arctan(GxGy)
在以上例子中,如果以上角度θ=0\theta = 0θ=0,即代表该图像拥有纵向边缘,左方较右方暗。
优缺点
优点
由于该算子引入了类似局部平均的运算,因此对噪声具有平滑作用,能够很好的消除噪声的影响。
Sobel算子
对像素的位置的影响做了加权,因此与Prewitt算子
,Roberts算子
相比效果更好。
缺点:
由于Sobel算子
并没有将图像的主题与背景严格地区分开,换而言之就是Sobel算子并没有基于图像灰度进行处理,由于Sobel算子并没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。
lsotropic Sobel (各向同性 Sobel)算子
Sobel算子
另一个形式是 各向同性Sobel(lsotropic Sobel),也有两个
- 一个是检测沿水平边缘的
- 一个是检测沿垂直边缘的
构成:将Sobel算子矩阵中所有的222改成2\sqrt{2}2,就能得到各向同性Sobel
矩阵模板。
Roberts算子
简介
罗伯茨(Roberts)算子又被称为交叉微分算子,它是基于交叉差分的梯度算子,通过局部差分计算检测边缘线条。常用来处理具有陡峭的低噪声图像,当图像边缘接近于+45∘+45^{\circ}+45∘或−45∘-45^{\circ}−45∘时,该算法处理效果更理想。
缺点是对边缘的定位不太准确,提取的边缘线条较粗。
原理
Roberts算子的两个模板:
dx=[−1001]d_x=\begin{bmatrix} -1 & 0 \\ 0 & 1 \end{bmatrix}dx=[−1001]
dy=[0−110]d_y=\begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix}dy=[01−10]
优缺点
优点: 对具有陡峭的低噪声的图像处理效果较好
缺点: 利用 Roberts 算子
提取边缘的结果是边缘比较粗,因此边缘定位不是很准确
Prewitt算子
简介
Prewitt算子
是一种一阶微分算子的边缘检测,利用像素点上下、左右相邻的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用。
原理
其原理是在图像空间中利用两个方向模板与图像进行邻域卷积来完成,这两个方向模板一个检测水平边缘,一个检测垂直边缘。
dx=[10−110−110−1]d_x=\begin{bmatrix} 1 & 0 & -1\\ 1 & 0 & -1\\ 1 & 0 & -1 \end{bmatrix}dx=⎣⎡111000−1−1−1⎦⎤
dy=[−1−1−1000111]d_y=\begin{bmatrix} -1 & -1 & -1\\ 0 & 0 & 0\\ 1 & 1 & 1 \end{bmatrix}dy=⎣⎡−101−101−101⎦⎤
优缺点
优点:
由于其是加权平均算子,因此对噪声有抑制作用,对灰度渐变和噪声较多的图像处理效果较好
缺点:
像素平均相当于对图像进行滤波,因此Prewitt算子
对边缘的定位不如Roberts算子
Laplacian算子
简介
Laplacian算子
是一种各向同性算子,二阶微分算子,在只关心边缘位置,不考虑其周围的像素灰度差值时较为合适。
Laplacian算子
对孤立像素的响应要比对边缘或线的响应更强烈,因此只适用于无噪声图像。存在噪声情况下,使用Laplacian算子
检测边缘之前,要进行低通滤波。所以,通常的分割算法都是把Laplacian算子
和平滑算子
结合起来,生成一个新的模板。
原理
Laplacian算子
采用二阶差分的原理
一维二阶差分:
f′(x)=(f(x+1)−f(x))−(f(x)−f(x−1))=f(x−1)−2f(x)+f(x+1)f'(x) = (f(x + 1) - f(x)) - (f(x) - f(x - 1)) = f(x - 1) - 2f(x) + f(x + 1)f′(x)=(f(x+1)−f(x))−(f(x)−f(x−1))=f(x−1)−2f(x)+f(x+1)
二维二阶差分:
f′(x,y)=−4f(x,y)+f(x−1,y)+f(x+1,y)+f(x,y−1)+f(x,y+1)f'(x, y) = -4f(x, y) + f(x - 1, y) + f(x + 1, y) + f(x, y - 1) + f(x, y + 1)f′(x,y)=−4f(x,y)+f(x−1,y)+f(x+1,y)+f(x,y−1)+f(x,y+1)
离散laplacian算子模板:
[0101−41010]\begin{bmatrix} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0 \end{bmatrix}⎣⎡0101−41010⎦⎤
考虑两个斜对角的扩展模板
[1111−81111]\begin{bmatrix} 1 & 1 & 1 \\ 1 & -8 & 1 \\ 1 & 1 & 1 \end{bmatrix}⎣⎡1111−81111⎦⎤
优缺点
优点:
具有各方向同性的特点,能够对任意方向的边缘进行提取,具有无方向性的优点,因此使用Laplacian算子提取边缘不需要分别检测X方向的边缘和Y方向的边缘,只需要一次边缘检测即可
缺点:
由于其二阶导数边缘算子的本质,使得其对噪声较为敏感,使噪声能力成分得到加强,容易丢失部分边缘方向信息,造成一些不连续的检测边缘,同时抗噪声能力较差
Canny算子
简介
该算子功能比前面几种都要好,但是它实现起来较为麻烦,Canny算子
是一个具有滤波,增强,检测的多阶段的优化算子,在进行处理前,Canny算子
先利用高斯平滑滤波器来平滑图像以除去噪声,Canny分割算法
采用一阶偏导的有限差分来计算梯度幅值和方向,在处理过程中,Canny算子
还将经过一个非极大值抑制的过程,最后Canny算子
还采用两个阈值来连接边缘。
算法步骤
step1: 用高斯滤波器平滑图象;
step2: 用一阶偏导的有限差分来计算梯度的幅值和方向;
step3: 对梯度幅值进行非极大值抑制,仅保留局部梯度最大值
step4: 用双阈值算法检测和连接边缘
优缺点
优点:
最优化思想的边缘检测算子,同时采用高斯函数对图像进行平滑处理。该方法不容易受噪声干扰,能够检测到真正的弱边缘
缺点: 易使高频边缘被平滑掉,从而造成边缘丢失
图像算法八 —— 多种边缘检测算法(Sobel算子、Isotropic Sobel算子、Roberts算子、Prewitt算子、Laplacian算子、Canny算子)介绍及比较相关推荐
- 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)
图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny) 不同图像灰度不同,边界处一般会有明显边缘,利用此特征可以分割图像.需要说明的是: ...
- 边缘检测Sobel、laplacian、canny算子
1.图像边缘检测 图像边缘检测对于分析图像中的内容.实现图像中物体的分割.定位等具有重要的作用.边缘检测大大减少了源图像的数据量,剔除了与目标不相干的信息,保留了图像重要的结构属性.常用的图像边缘检测 ...
- 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny) 【转】
不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像.需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场景中的存在于物体之间的边界 ...
- matlab差分算子的灰度图像边缘检测,灰度图像的 Sobel 边缘检测算法的 HDL实现(一)...
1.1 边缘检测算法介绍 所谓边缘是指其周围像素灰度急剧变化的那些象素的集合,它是图像最基本的特征.边缘存在于目标.背景和区域之间,所以,它是图像分割所依赖的最重要的依据.由于边缘是位置的标志,对灰度 ...
- Halcon边缘检测Sobel、Laplace和Canny算子
提示:文章参考了网络上其他作者的文章,以及相关书籍,如有侵权,请联系作者. 文章目录 前言 一.像素级边缘提取 1.经典的边缘检测算子 2.边缘检测的一般流程 3.sobel_amp 算子 参考文献 ...
- 边缘检测算法-Canny算子
目录 主要目标: 主要步骤: 1. 使用高斯平滑 2. 使用Sobel算子. 3. 使用非极大值抑制算法. 4. 用滞后阈值连接边缘点. 主要目标 Canny算子的三个主要目标: 1. 减少噪声响应 ...
- 主流图像边缘检测算法
前言:最近在学习关于图像边缘检测技术,更新此博文仅为 了记录个人学习过程,也供有共同志趣的朋友参考! 本文内容包括:图像噪声添加与去除.几种滤波算法[高斯滤波,方框滤波,均值滤波,中值滤波,双边滤波, ...
- 图象处理中的边缘检测------canny算子
图象边缘检测中边界闭合性的分析与探讨 摘 要 在图象边缘检测中往往要求所检测到的边缘具有封闭特性,本文详细地分析了目前常用的两种算法:哈夫变换和Canny边缘检测算法,最后,探讨边缘算子应满足的准 ...
- 图像像素点赋值_医学图像处理教程(五)——医学图像边缘检测算法
今天将给大家分享医学图像常见两种图像边缘检测算法. 1.Sobel算子操作 Sobel算子的思想,邻域的像素对当前像素产生的影响不是等价的,所以距离不同的像素具有不同的权值,对算子结果产生的影响也不同 ...
- 边缘检测算法及各自优缺点
边缘检测算法及各自优缺点 边缘提取其实也是一种滤波,不同的算子有不同的提取效果.比较常用的方法有三种,Sobel算子,Laplacian算子,Canny算子. Sobel算子检测方法对灰度渐变和噪声较 ...
最新文章
- 从根因入手,更有效率,效果也更好
- 计算机组成原理的判断题,2《计算机组成原理A》判断题
- 26.	linix脚本启动java程序
- mysql获取时间_时间类型_时间格式化
- Linux 多线程(一)线程概念:线程概念、线程与进程、线程间的独有与共享、多线程与多进程、线程控制
- Java EE拦截器
- LeetCode 1598. 文件夹操作日志搜集器
- 第十五回(二):文会内战平分秋色 树下阔论使坏心焦【林大帅作品】
- 《构建之法》 读书笔记(6)
- Bailian4016 班级排名【稳定排序】
- MySql存储过程的操作
- 数据结构课程设计实验报告
- WPE封包外挂教程(上)
- 免费的视频格式转换器哪个最好用呢?
- teamviewer 服务器系统,远程支持服务器搭建teamviewer
- 拼多多的正品险是个假保险?
- javascript之键盘事件
- 万圣节到了,来讲鬼故事吧!(大家可以在回复中继续讲)
- [附源码]Python计算机毕业设计二手书交易软件设计与实现
- 阿里内网最新发布“M8”级Java面试笔记,助力金九银十