边缘检测

简介:

边缘检测算法有如下四个步骤:

滤波:边缘检测算法主要是基于图像强度的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与噪声有关的边缘检测器的性能.需要指出,大多数滤波器在降低噪声的同时也导致了边缘强度的损失,因此,增强边缘和降低噪声之间需要折衷.

增强:增强边缘的基础是确定图像各点邻域强度的变化值.增强算法可以将邻域(或局部)强度值有显著变化的点突显出来.边缘增强一般是通过计算梯度幅值来完成的.

检测:在图像中有许多点的梯度幅值比较大,而这些点在特定的应用领域中并不都是边缘,所以应该用某种方法来确定哪些点是边缘点.最简单的边缘检测判据是梯度幅值阈值判据.

定位:如果某一应用场合要求确定边缘位置,则边缘的位置可在子像素分辨率上来估计,边缘的方位也可以被估计出来.

在边缘检测算法中,前三个步骤用得十分普遍。这是因为大多数场合下,仅仅需要边缘检测器指出边缘出现在图像某一像素点的附近,而没有必要指出边缘的精确位置或方向.边缘检测误差通常是指边缘误分类误差,即把假边缘判别成边缘而保留,而把真边缘判别成假边缘而去掉.边缘估计误差是用概率统计模型来描述边缘的位置和方向误差的.我们将边缘检测误差和边缘估计误差区分开,是因为它们的计算方法完全不同,其误差模型也完全不同.

最近的二十年里发展了许多边缘检测器,这里仅讨论常用的几种边缘检测器.

6.2.1 Roberts算子

Roberts交叉算子为梯度幅值计算提供了一种简单的近似方法:

 (6.9)

用卷积模板,上式变成:

 (6.10)

其中由下面的模板计算:

 (6.11)

同前面的梯度算子一样,差分值将在内插点处计算.Roberts算子是该点连续梯度的近似值,而不是所预期的点处的近似值.Roberts边缘检测器的试验结果见图6.3.

6.2.2 Sobel算子

正如前面所讲,采用邻域可以避免在像素之间内插点上计算梯度.考虑一下图6.2中所示的点周围点的排列.Sobel算子也是一种梯度幅值,

 (6.12)

其中的偏导数用下式计算:

 (6.13)

 

其中常数

和其他的梯度算子一样,和可用卷积模板来实现:

  (6.14)

请注意这一算子把重点放在接近于模板中心的像素点.图6.3和图6.4表明了这一算子的作用.Sobel算子是边缘检测器中最常用的算子之一.

 

图6.2 用于说明Sobel算子和Prewitt算子的邻域像素点标记

6.2.3 Prewitt算子

 Prewitt算子与Sobel算子的方程完全一样,只是常量c=1.所以

  (6.15)

  请注意,与Sobel算子不同,这一算子没有把重点放在接近模板中心的像素点.这种边缘检测器的性能也示意在图6.3和图6.4中.

6.2.4 各种算法比较

现在来比较一下上面讨论过的边缘检测器.我们将按照本节开头所提出的滤波、增强和检测这三个步骤,来比较各种方法.第四步定位将不讨论.首先给出在忽略滤波步骤情况下Roberts、Sobel和Prewitt边缘检测方法实验结果,如图6.3所示.对滤波后的图象进行边缘检测的结果见图6.4,其中滤波器为前一章介绍的高斯滤波器,梯度幅值的计算见方程6.3.比较图6.3和图6.4可以发现,由于噪声影响,一些假边缘也被检测出来了.

图6.2用于边缘检测的测试图像

(a)原始图像 (b)7x7高斯滤波的图像

 

图6.3 各种边缘检测器对未经滤波的图像(a)进行边缘检测的比较.

(c) Roberts交叉算子.(d)Sobel算子.(e) Prewitt算子.

 

 

 

图6.4 各种边缘检测器对滤波后的图像(图6.3 (b))进行边缘检测的结果.

(a) Roberts交叉算子.(b)Sobel算子.(c) Prewitt算子

本文转自feisky博客园博客,原文链接:http://www.cnblogs.com/feisky/archive/2009/10/29/1591844.html,如需转载请自行联系原作者


相关文章
|
8月前
|
Kubernetes 监控 数据安全/隐私保护
rancher部署
Rancher 是一个 Kubernetes 管理工具,让你能在任何地方和任何提供商上部署和运行集群。 Rancher 可以创建来自 Kubernetes 托管服务提供商的集群,创建节点并安装 Kubernetes,或者导入在任何地方运行的现有 Kubernetes 集群。
238 0
|
6月前
|
数据安全/隐私保护 Docker 容器
分分钟搞定阿里云私有Docke镜像仓库的搭建
分分钟搞定阿里云私有Docke镜像仓库的搭建
1890 0
|
Ubuntu
Ubuntu Server 20.04 LTS下载及安装教程
Ubuntu Server 20.04 LTS下载及安装教程
2624 0
Ubuntu Server 20.04 LTS下载及安装教程
|
Java Maven Android开发
Android 阿里云镜像整理
Android 阿里云镜像整理
4330 0
|
6月前
|
Web App开发 移动开发 前端开发
如何解决不同浏览器的样式兼容性问题?
如何解决不同浏览器的样式兼容性问题?
111 0
|
6月前
|
缓存 小程序 NoSQL
【Uniapp】小程序携带Token请求接口+无感知登录方案
【Uniapp】小程序携带Token请求接口+无感知登录方案
110 0
|
存储 负载均衡 关系型数据库
基于Flink的高吞吐精确一致性入湖实现
AnalyticDB助力企业降本增效,构建企业级数据分析平台
基于Flink的高吞吐精确一致性入湖实现
|
9月前
特征选择:回归,二分类,多分类特征选择有这么多差异需要注意
特征选择:回归,二分类,多分类特征选择有这么多差异需要注意
98 0
|
9月前
|
机器学习/深度学习 数据可视化 算法
机器学习系列6 使用Scikit-learn构建回归模型:简单线性回归、多项式回归与多元线性回归
在本文中,我们以美国南瓜数据为例,讲解了三种线性回归的原理与使用方法,探寻数据之间的相关性,并构建了6种线性回归模型。将准确率从一开始的0.04提升到0.96.
216 0
|
11月前
|
算法 API 计算机视觉
OpenCV_08 边缘检测:Sobel检测算子+Laplacian算子+Canny边缘检测
边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。
232 0