图像处理算法——边缘检测 图像的边缘检测算法
haoteby 2024-12-23 10:27 7 浏览
图像处理领域中涉及很多特征,角点特征,边缘特征,形状特征,纹理特征,颜色特征,直方图统计特征等等(还有很多^_^)。这些特征有些是比较底层的特征,如角点特征,边缘特征,颜色特征等,有些则是较为高层的特征,如形状特征,纹理特征,直方图统计特征。
这里我们主要谈论底层特征中的边缘特征,提取这些特征的手段叫作边缘特征提取或叫作边缘检测。边缘检测常用的算子中分为一阶检测算子和二阶检测算子,这里提及的算子有些类似数学中的微分的概念(要有一定的数学基础哦)。边缘检测的另外一种形式也被成为相位一致性,这个概念我到后面再谈及,有了这个概念之后帮助我们从图像频域分析边缘提取这一过程。
表1 图像处理边缘检测算子分类表格
基于边缘检测的分析不易受整体光照强度变化的影响,同时利用边缘信息容易凸显目标信息和达到简化处理的目的,因此很多图像理解方法都以边缘为基础。边缘检测强调的是图像对比度。对比度从直观上的理解就是差异的大小,若对于灰度图像来说就是灰度值(亮度值)的差别,若对于彩色图像则是颜色的差异了。这些差异可以增强图像中的边界特征,因为这些边界就是图像对比度较大的体现。
这就是我们感知目标边界的大体机制,因为目标的表现就是与它周围的亮度差别。
一、水平差分算子、垂直差分算子
亮度变化可以通过对相邻点进行差分处理来增强。对水平方向的相邻点进行差分处理可以检测垂直方向上的亮度变化,根据其作用通常被称为水平边缘检测算子(horizontal edge detector),这样就可以检测出垂直边缘Ex;对垂直方向的相邻点进行差分处理可以检测水平方向上的亮度变化,根据其作用通常被称为垂直边缘检测算子(vertical edge detector),这样就可以检测出水平边缘Ey。
Ex = |Px,y - Px+1,y|
Ey = |Px,y - Px,y+1|
将水平边缘检测算子和垂直边缘检测算子结合,就可以同时检测出垂直边缘和水平边缘,即:
Ex,y =|Px,y - Px+1,y + Px,y - Px,y+1|
由此可以得到
Ex,y =|2 x Px,y - Px+1,y - Px,y+1|
利用泰勒级数分析可以知道相邻两点的差值是一阶导数的估算值,误差
。
如果在相邻两个差分点之间插入一个像素来实现,相当于,相当于用两个相邻点的一阶差分作为新的水平差值Exx,其中
Exxx,y = Ex x+1,y + Ex x,y = |Px+1,y - Px,y + Px,y - Px-1,y| = |Px+1,y - Px-1,y |
利用泰勒级数分析可以知道一阶微分的估算值是由一个像素隔开的两个点的差值,误差
。
二、一阶边缘检测
(a) Roberts交叉算子
Roberts交叉算子实现的基础是一阶边缘检测,利用两个模板,计算对角线上而不是坐标轴上的两个像素的微分。这里命名这两个模板分别为M+,M-
(b) Prewitt边缘检测算子
边缘检测类似微分处理,它检测的变化的部分,必然对噪声和图像的亮度变化都有相应处理。因此,把均值处理加入到边缘检测过程中一定要非常谨慎。我们可以把垂直模板Mx扩展成三行,而水平模板My扩展成三列。这样就得到Prewitt边缘检测算子。
(c) Sobel边缘检测算子
如果把使两个Prewitt模板算子中心像素的权值去两倍的数值,便得到有名的Sobel边缘检测算子,它是由矢量方式确定边缘的两个掩码组成的。Sobel很受欢迎是因为它比Prewitt算子等同时期的其他边缘检测算子性能更好。
Sobel算子的通用形式综合了一条坐标轴上的最优平滑和另一条坐标轴上的最优差分。值得注意的是,大的边缘检测模板的好处是它减少噪声的平滑效果更好,然而边缘模糊却成为一个大难题。
(d) Canny边缘检测算子
Canny边缘检测算子可以说是当前最受欢迎的边缘检测方法。它由三个主要目标形成:
- 无附加响应的最优检测
- 检测边缘位置和实际边缘位置之间距离最小的正确定位
- 减少单边缘的多重响应而得到单响应
Canny指出高斯算子对图像平滑处理是最优的。Canny边缘检测一般处理的步骤可以粗略的分为以下四个步骤:
- 应用高斯平滑处理
- 应用Sobel算子
- 应用非极大值抑制(非极大值抑制实质上是找到边缘强度数据中的最高点)
- 滞后阈值处理来连接边缘点(阈值处理需要两个阈值,即上限阈值和下限阈值 )
三、二阶边缘检测
一阶边缘检测的前提是微分处理可以使变化增强。找图像变化率最大的地方不仅可以通过一阶变化率的极值寻找,同时也可以通过二阶变化的过零点来寻找。
(a) Laplacian算子
二阶微分可以利用两个相邻一阶微分的差值来近似。这也和数学中的概念相一致。
如果把水平二阶算子和处置二阶微分算子结合起来,可以得到一个全Laplacian模板算子。
(b) Marr-Hidreth算子
Marr-Hidreth也是利用高斯滤波。该算子的曲面图是墨西哥帽子的形状,所以有时也被成为“墨西哥帽子”算子,如下图所示。
实际上,如果把高斯平滑和Laplacian算子结合起来,可以得到一个LoG(Laplacian of Gaussian)算子,它就是Marr-Hidreth的基。
各算子的效果比较:
四、其他边缘检测
边缘检测作为视觉处理的初级阶段,方法有很多种,这里我们再提及两个设计最优的边缘检测方法,Spacelk方法和Petrou方法。有兴趣的朋友可以进一步了解。这里需要提及的是Spacek算子使定位信噪比和峰值分离比的乘积最大化。Spacek算子比Canny算子具有很高的性能。Petrou算子使用的模板比较大,以便保存最优性,因此Petrou算子可以处理比较大的计算复杂度,但在使用的时候,应当具体问题具体分析。
五、相位一致性
边缘检测算子的比较突出了它们的一些内在问题:不完整轮廓问题、阈值选择问题和噪声响应问题。因为光照强度在图像的不同区域是不一样的,选择单个阈值通常不能适用于图像中的所有区域。这些问题单靠简单初级的处理难以解决。需要优化方法或者使用较为高级的手段才能达到一定的效果。
相位一致性(Phase congruency)方法是一个特征检测算子,它由如下两个优点:
- 可以检测大范围的特征
- 对局部(和平滑)光照变化具有不变性
这两个优点其实就是一致性检测具有局部对比度不变性:即使阶梯边缘强度变小,其变化位置并不改变。
相关推荐
- 一日一技:用Python程序将十进制转换为二进制
-
用Python程序将十进制转换为二进制通过将数字连续除以2并以相反顺序打印其余部分,将十进制数转换为二进制。在下面的程序中,我们将学习使用递归函数将十进制数转换为二进制数,代码如下:...
- 十进制转化成二进制你会吗?#数学思维
-
六年级奥赛起跑线:抽屉原理揭秘。同学们好,我是你们的奥耀老师。今天一起来学习奥赛起跑线第三讲二进制计数法。例一:把十进制五十三化成二进制数是多少?首先十进制就是满十进一,二进制就是满二进一。二进制每个...
- 二进制、十进制、八进制和十六进制,它们之间是如何转换的?
-
在学习进制时总会遇到多种进制转换的时候,学会它们之间的转换方法也是必须的,这里分享一下几种进制之间转换的方法,也分享两个好用的转换工具,使用它们能够大幅度的提升你的办公和学习效率,感兴趣的小伙伴记得点...
- c语言-2进制转10进制_c语言 二进制转十进制
-
#include<stdio.h>intmain(){charch;inta=0;...
- 二进制、八进制、十进制和十六进制数制转换
-
一、数制1、什么是数制数制是计数进位的简称。也就是由低位向高位进位计数的方法。2、常用数制计算机中常用的数制有二进制、八进制、十进制和十六进制。...
- 二进制、十进制、八进制、十六进制间的相互转换函数
-
二进制、十进制、八进制、十六进制间的相互转换函数1、输入任意一个十进制的整数,将其分别转换为二进制、八进制、十六进制。2、程序代码如下:#include<iostream>usingna...
- 二进制、八进制、十进制和十六进制等常用数制及其相互转换
-
从大学开始系统的接触计算机专业,到现在已经过去十几年了,今天整理一下基础的进制转换,希望给还在上高中的表妹一个入门的引导,早日熟悉这个行业。一、二进制、八进制、十进制和十六进制是如何定义的?二进制是B...
- 二进制如何转换成十进制?_二进制如何转换成十进制例子图解
-
随着社会的发展,电器维修由继电器时代逐渐被PLC,变频器,触摸屏等工控时代所替代,特别是plc编程,其数据逻辑往往涉及到数制二进制,那么二进制到底是什么呢?它和十进制又有什么区别和联系呢?下面和朋友们...
- 二进制与十进制的相互转换_二进制和十进制之间转换
-
很多同学在刚开始接触计算机语言的时候,都会了解计算机的世界里面大多都是二进制来表达现实世界的任何事物的。当然现实世界的事务有很多很多,就拿最简单的数字,我们经常看到的数字大多都是十进制的形式,例如:我...
- 十进制如何转换为二进制,二进制如何转换为十进制
-
用十进制除以2,除的断的,商用0表示;除不断的,商用1表示余0时结束假如十进制用X表示,用十进制除以2,即x/2除以2后为整数的(除的断的),商用0表示;除以2除不断的,商用1表示除完后的商0或1...
- 十进制数如何转换为二进制数_十进制数如何转换为二进制数举例说明
-
我们经常听到十进制数和二进制数,电脑中也经常使用二进制数来进行计算,但是很多人却不清楚十进制数和二进制数是怎样进行转换的,下面就来看看,十进制数转换为二进制数的方法。正整数转二进制...
- 二进制转化为十进制,你会做吗?一起来试试吧
-
今天孩子问把二进制表示的110101改写成十进制数怎么做呀?,“二进制”简单来说就是“满二进一”,只用0和1共两个数字表示,同理我们平常接触到的“十进制”是“满十进一”,只用0-9共十个数字表示。如果...
- Mac终于能正常打游戏了!苹果正逐渐淘汰Rosetta转译
-
Mac玩家苦转译久矣!WWDC2025苹果正式宣判Rosetta死刑,原生游戏时代终于杀到。Metal4光追和AI插帧技术直接掀桌,连Steam都连夜扛着ARM架构投诚了。看到《赛博朋克2077》...
- 怎么把视频的声音提出来转为音频?音频提取,11款工具实测搞定
-
想把视频里的声音单独保存为音频文件(MP3/AAC/WAV/FLAC)用于配音、播客、听课或二次剪辑?本文挑出10款常用工具,给出实测可复现的操作步骤、优缺点和场景推荐。1)转换猫mp3转换器(操作门...
- 6个mp4格式转换器测评:转换速度与质量并存!
-
MP4视频格式具有兼容性强、视频画质高清、文件体积较小、支持多种编码等特点,适用于网络媒体传播。如果大家想要将非MP4格式的视频转换成MP4的视频格式的话,可以使用MP4格式转换器更换格式。本文分别从...