基于Sobel算子的数字图像边缘检测
基于改进Sobel算子的多仪表图像边缘检测算法

第 1 9期
21 0 2年 7月
科
学
技
术
与
工
程
Vo. 2 No 1 J 1 0 2 11 .9 u .2 1
l 7 — 1 1 ( 0 2 1 —6 1 0 6 1 8 5 2 1 ) 94 9 —6
S inc c noo y a d Engn e i ce e Te h lg n i e rng
Sbl oe算子是一种梯度幅值 的边缘检测算子 , 首 先以 3 卷积模板对像素点的邻域进行平均或加 3 X
权运算 , 然后 再进 行 一 阶微 分 处 理 , 测 出边 缘 点 。 检
21 0 2年 3月 3 收 到 01 3
和传 统算 法在 仪表 边 缘 检测 的局 限性 , 出 了一 种 提
改进 算法 : 增 加 方 向 模 板 、 用 自适 应 阈值 以及 将 采
灰 度腐蚀 理 论 细化 边 缘 等 相关 方 法 结 合 在 一 起 对 待测 图像 进 行 边 缘 检 测 , 而 得 到检 测 精 度 高 , 从 抗 噪 能力强 、 构细 腻 且 准 确性 高 的边 缘 图像 。多组 结 实验 表 明本文 算法 的合 理性 与有 效 性 , 别 是对 含 特 有 高斯 噪声 以及对 边 缘 轮廓 细化 要 求 较 高 的 图像 ,
一
sh算子 、O c L G算子 、an 算 子等 。 C ny 在 仪表 图像 的 边 缘 检 测 中 , 典 Sbl 子 的 经 oe 算
检测效 果 优 于 其 它 算 子 J 但 它 能 检 测 的 方 向 有 ,
限 、 取 的仪表 边缘 较 粗 且 抗 噪 能力 较 低 。这 也 给 提 它 的使 用 带来 局 限性 , 了 提 高 它 的 实 用 性 , 些 为 一
数字图像的边缘检测

数字图像的边缘检测所谓边缘就是指图像局部亮度变化最显著的部分,它是检测图像局部变化显著变化的最基本的运算。
对于数字图像,图像灰度灰度值的显著变化可以用梯度来表示,以边缘检测Sobel算子为例来讲述数字图像处理中边缘检测的实现:对于数字图像,可以用一阶差分代替一阶微分;△xf(x,y)=f(x,y)-f(x-1,y);△yf(x,y)=f(x,y)-f(x,y-1)求梯度时对于平方和运算及开方运算,可以用两个分量的绝对值之和表示,即:G[f(x,y)]={[△xf(x,y)] +[△yf(x,y)] } |△xf(x,y)|+|△yf(x,y)|;Sobel梯度算子是先做成加权平均,再微分,然后求梯度,即:△xf(x,y)= f(x-1,y+1) + 2f(x,y+1) + f(x+1,y+1)- f(x-1,y-1) - 2f(x,y-1) - f(x+1,y-1);△yf(x,y)= f(x-1,y-1) + 2f(x-1,y) + f(x-1,y+1)- f(x+1,y-1) - 2f(x+1,y) - f(x+1,y+1);G[f(x,y)]=|△xf(x,y)|+|△yf(x,y)|;上述各式中的像素之间的关系见图我在视图类中定义了响应菜单命令的边缘检测Sobel算子实现灰度图像边缘检测的函数:对于边缘检测,大家只要知道有若干个检测模板(既边缘检测矩阵)可以直接实现检测功能就行了,现在将常用的检测实现公式列出如下:Roberts算子:G[i,i]=|f[i,j]-f[i+1,j+1]|+|f[i+1,j]-f[i,j+1]|;Sobe算子:G[i,i]=|f[i-1,j+1]+2f[i,j+1]+f[i+1,j+1]-f[i-1,j-1]-2f[i,j-1]-f[i+1,j-1]|+|f[i-1,j-1]+2f[i-1,j]+f[i-1,j+1]-f[i+1,j-1]-2f[i+1,j]-f[i+1,j+1]|;拉普拉斯算子:G[I,j]=|f[i+1,j]+f[i-1,j]+f(i,j+1)+f[i,j-1]-4f[i,j]|;其中G[i,j]表示处理后(i,j)点的灰度值,f[i,j]表示处理前该点的灰度值。
基于sobel和canny的边缘检测原理

基于sobel和canny的边缘检测原理
Sobel的原理:
Sobel 算子是图像处理中的算子之一,主要用作边缘检测。
它是一种离散性差分算子,用来运算图像亮度函数的梯度之近似值。
在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量.
该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。
以I代表原始图像,Gx及Gy分别代表经横向及纵向边缘检测的图像,其公式如下:
由于Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数,简单有效,因此应用广泛。
但是Sobel算子并没有将图像的主体与背景严格地区分开来,换言之就是Sobel算子没有基于图像灰度进行处理,由于Sobel算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。
在观测一幅图像的时候,我们往往首先注意的是图像与背景不同的部分,正是这个部分将主体突出显示,基于该理论,我们给出了下面阈值化轮廓提取算法,该算法已在数学上证明当像素点满足正态分布时所求解是最优的。
Canny的原理:
1、图象边缘检测必须满足两个条件:其一必须有效地抑制噪声;其次必须尽量精确确
定边缘的位置。
2、根据对信噪比与定位乘积进行测度,得到最优化逼近算子。
这就是Canny边缘检测
算子。
3、类似于LoG边缘检测方法,属于先平滑后求导数的方法。
Canny边缘检测算法可以分为四个步骤:
1)用高斯滤波器平滑图象;
2)用一阶偏导的有限差分来计算梯度的幅值和方向;3)对梯度幅值进行非极大值抑制
4)用双阈值算法检测和连接边缘。
sobel边缘检测算法参数

Sobel边缘检测算法是一种离散微分算子,主要用于边缘检测。
该算法结合了高斯平滑和微分操作,因此具有强大的抗噪声能力。
在具体应用中,Sobel算子包括两组3*3的矩阵,左边的用于检测垂直边缘,右边的用于检测水平边缘。
在使用Sobel算子进行边缘检测时,可以设置不同的参数来控制算法的灵敏度。
主要的参数包括:
1. 图像深度(ddepth):指输入图像的深度。
2. 求导阶数(dx, dy):0表示这个方向上没有求导,取值为0、1。
3. Sobel算子的大小(ksize):即卷积核的大小,必须为奇数如1、3、5、7,默认为3。
如果ksize = -1,则使用3*3的Scharr算子。
4. 缩放导数的比例常数(scale):默认情况为没有伸缩系数。
5. 图像边界的模式(borderType):默认cv2.BORDER_DEFAULT。
sobel算子边缘检测原理

sobel算子边缘检测原理Sobel算子是一种常用于边缘检测的算子。
它采用了离散微分算子的方法,通过计算像素点与其周围像素点的灰度差异来检测边缘。
边缘是图像中明显的灰度变化的地方,是图像中物体间的分界线。
边缘检测的目的就是找到图像中的这些边缘。
Sobel算子是基于图像的灰度梯度的计算来实现边缘检测的。
在图像中,像素点处的灰度值代表了其周围像素的强度值。
梯度是指一个函数在其中一点的变化率。
在图像处理中,梯度可以指的是图像灰度值的变化率。
Sobel算子通过计算像素点的灰度梯度来检测边缘。
Sobel算子的原理是通过对图像进行两次卷积操作来计算梯度。
一次卷积操作用于在水平方向上计算梯度,另一次卷积操作用于在垂直方向上计算梯度。
对于一个图像中的像素点A,它的灰度梯度可以通过以下公式计算得到:G = abs(Gx) + abs(Gy)其中,G是像素点A的灰度梯度,Gx是像素点A在水平方向上的梯度,Gy是像素点A在垂直方向上的梯度。
Sobel算子采用了以下两个3×3模板来进行卷积操作:水平方向上的Sobel算子模板:[-101-202-101]垂直方向上的Sobel算子模板:[-1-2-1000121]在进行卷积操作时,将模板分别与图像中的像素点进行对应位置上的乘法运算,并将结果相加得到像素点的梯度值。
这样就可以得到整个图像的灰度梯度图像。
通过计算像素点的灰度梯度,我们可以找到图像中的边缘。
边缘通常具有较大的梯度值,因为边缘上存在明显的灰度变化。
因此,我们可以通过设定一个阈值来筛选出图像中的边缘。
Sobel算子在实际应用中有一些优点。
首先,它是一种简单而高效的边缘检测方法。
其次,Sobel算子可以用来检测水平和垂直方向上的边缘,因此可以检测到更多的边缘信息。
此外,Sobel算子还可以通过调整模板的尺寸来适应不同大小图像的边缘检测需求。
然而,Sobel算子也存在一些缺点。
首先,Sobel算子对噪声比较敏感,可能会在噪声处产生较大的边缘响应。
基于Sober算子的图像边缘检测

1 引言图像边缘是一种重要的视觉信息,图像边缘检测是图像处理、图像分析、模式识别、计算机视觉以及人类视觉的基本步骤。
其结果的正确性和可靠性将直接影响到机器视觉系统对客观世界的理解。
实现边缘检测有很多不同的方法,也一直是图像处理中的研究热点,人们期望找到一种抗噪强、定位准、不漏检、不误检的检测算法。
经典的算法中主要用梯度算子,最简单的梯度算子是Roberts算子,比较常用的有Prewitt算子和Sober算子,其中Sober算子效果较好,但是经典Sober算子也存在不足,其边缘具有很强的方向性,只对垂直与水平方向敏感,其他方向不敏感,这就使得那些边缘检测不到j。
对后续的图像处理有很的影响。
本文在此基础提出了一种新的算法,该算子该算法提高了传统Sober检测算子的性能,具有良好的检测精度。
对数字图像{f(x,y)}的每个像素,考察它上下左右邻点灰度的加权差,与之接近的邻点的权大。
据此,定义Sober算子如下:其卷积算子:适当取门限TH,作如下判断:s(i,j)>TH,(i,j)为阶跃状边缘点,{s(i,j)}为边缘图像。
Sober算子很容易在空问上实现,Sober边缘检测器不但产生较好的边缘检测效果,而且受噪声影响也比较小。
当使用大的邻域时,抗噪性能会更好,但这样会增加计算量,并且得出的边缘也会相应变粗。
Sober算子利用像素点上下、左右邻点的灰度加权算法,根据在边缘点处达到极值这一现象进行边缘的检测。
Sober算子对噪声具有平滑作用,提供较为精确的边缘方向信息,是一种较为常用的边缘检测方法。
2 算法设计针对经典Sober算子对边缘具有很强的方向性特点,提出了一种在Sober算子上改进的算法,其主要思想是先对图像进行全局阈值的分割处理,因为分割后的图像是二值图像,此时进行边缘提取,这就可以使各个方向的边缘都可以检测到。
但也可能会丢失原本可直接用Sober算子检测到的边缘。
因此,用处理后所得的图像与用Sober算子直接对原始图像进行边缘检测的图像相加,这一步就得尤为重要。
基于Sobel算子的数字图像边缘检测与FPGA实现

a d i t g a e n aFP n n e r t d i GA h p o i n p r a c i f l x S a t n3 XC3 5 5 X i S 0- PQ2 . e sm u a e e u ti d c t st a h r s n e GA 08Th i l t d r s l n i a e h t e p e e t d FP t c i h p XC3 5 - P S 0 5 Q2 8 c n r n a 3 M Hzs e d F n ly t e e p rm e t 0 a u t1 4 p e . i a l , h x e i n sd n o t n ma e o 0 4 X 1 2 i e s Th wa o e t e a i g f 1 2 0 4 p x l. e
级 . 大 大 增 加 了设 计 过 程 和 最 后 工 程 的 灵 活 性 。 这
S b l . 检 测 算 子 结 合 了边 缘 检 测 和 平滑 算 子 . 其 在 o e: 缘  ̄ 使 嘈杂 的环 境 下 有 良 好 的 检 测 能 力 。因此 本 文 选 择 S b l o e算子 应
一二 、 Biblioteka e边 缘 检 测 原 理 sbl
图 像 边 缘 是 图 像 的 基 本 特 征 之 一 , 包 含 对 人 类 视 觉 它
直 是 一 个 难 题 。虽 然 DSP 备 指 令 流 水 线 特 性 和 很 高 的 具
t he Edge D e ec i i t lI a nd is r alza i t ton ofD gia m ge a t e i ton by FPG A ec t hni que bas d e on be SO lope a o r tr
图像处理中的边缘检测算法研究与性能评估

图像处理中的边缘检测算法研究与性能评估引言:在当今数字图像处理领域,边缘检测一直是一个重要且挑战性的问题。
边缘提取是图像处理中的一项基本操作,对于目标检测、图像分割和图像识别等任务都具有重要意义。
边缘检测的目标是找到图像中明显的灰度跃变区域,以准确地确定物体的边缘位置。
本文将介绍几种常见的图像处理中的边缘检测算法,并对其性能进行评估。
一、经典边缘检测算法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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于S o b e l算子的数字图像边缘检测
集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)
信号处理综合
设计报告
综合设计名称:基于Sobel算子的数字图像边缘检测学员:学号:
培养类型:技术类年级: 2013级专业:电子工程所属学院:
指导教员:职称:教授实验室: 305-507 实验日期:-2016.9.2
一、综合设计目的
(1)掌握数字信号处理的基本概念、基本理论和基本方法;
(2)了解边缘检测的算法和用途,学习利用 Sobel 算子进行边缘检测的程序设计方法;
(3)完成图像边缘处理系统的设计和实现,分析处理性能;
(4)学会TMS320VC5509A DSP的程序设计方法。
二、综合设计要求
(1)在Matlab上独立编程实现通过Sobel算子的边缘检测;
(2)读懂DSP-CCS平台例程,自选图像修改例程实现边缘检测,对比Matlab仿真和DSP-CCS平台处理的结果。
(3)完成实验思考题
三、详细设计过程
1.设计原理分析;
Sobel边缘检测算子:
图像中的每个点都用这连个核做卷积,一个核对通常的垂直边缘相应最大,另一个对水平边缘相应最大。
两个卷积的最大值作为该点的输出位(下文我们统称为梯度)。
Prewitt边缘检测算子:
以上两个卷积核形成了Prewitt算子。
使用方法和Sobel算子一致,区别是系数不同。
2.设计方案和过程。
总体方案:
(1)选择图像灰度处理
这是程序运行的预处理,需要注意的Matlab仿真时,图像选取限制较小,在DSP-CCS平台处理时,注意图像选择要满足例程的空间要
求,一般选择80*80尺寸图像。
(2)卷积计算得出梯度
把图像与Sobel算子的两个模板分别进行卷积,取卷积后较大值为
该点的梯度。
上图显示了在只考虑水平边缘或垂直边缘的情况下的检测效果与实际效果的对比。
(3)二值处理计算阈值
把计算出的梯度归一化,然后带入Matlab中的graythresh函数,采用最大类间方差法获得阈值。
(4)高于阈值设为1,低于阈值设为0。
把二值图像显示出来即为边缘检测的最终结果。
3.改进与创新
(1)八方向Sobel算子
在原有中两个模板的基础上,又增加六个方向的模板,即45°,135°,180°,225°,270°,315°。
这样可以更加有效地检测图像多个方向边缘,使边缘信息更加完整。
(2)抗噪性能分析
通过在原图像中加入不同信噪比的高斯白噪声,观察边缘检测图像的变化,分析差别。
四、调试过程与结果分析
1.传统Sobel算子边缘检测效果展示
注:上图中graythresh算子得出的阈值为0.2784
2.阈值不同时的结果对比。
通过手动调整阈值,我们可以发现,减小阈值,图像中线条增多,增大阈值,线条减少,实际情况中,课根据需要选择合适阈值。
3.Sobel算子与Prewitt算子对比
对于大部分图像,Sobel算子与Prewitt算子得出的结果差别不大。
4.八方向Sobel算子性能分析
实际效果,八方向Sobel算子边缘检测效果提升不明显,但是带来了巨大的内存和空间消耗。
此图显示了八方向Sobel算子的空间占用,实际计算时,需要的时间也比传统Sobel算子要长,考虑到其边缘检测效果提升不明显,后续我们没有采用这种方法。
5.抗噪性能分析
通过给图像加高斯白噪声来测试程序的抗躁性能。
加入信噪比为0.05的高斯白噪声:
几乎不受影响,但是也出现了一些杂点。
加入信噪比为0.5的高斯白噪声:
已经损失了一些信息,左侧后视镜已经看不见了。
加入信噪比为0.9的高斯白噪声:
可以发现右图已经基本上没有信息了,手动调整阈值:
将阈值调整为0.01后,原本的车在地面的阴影,后座都被误判为边界,但是车牌等重要信息被检测出来。
6.DSP-CCS平台实现
仿真时使用的奥迪车图片尺寸较大,无法移植,在CCS平台上,我们使用北大校徽和力帆车标做测试。
北大校徽仿真结果:
CCS平台处理结果:
力帆车标仿真结果:
CCS平台处理结果:
通过两个例子,可以发现CCS平台处理的图像在转弯处,容易出现边缘缺失,可能是由于图片像素太低,精度不足造成的。
五、设计总结和体会
(1)本次实验,以Sobel算子为基础,对数字图像的边缘检测问题进行了一番探究。
实验表明,Sobel算子产生的边缘效果较好,在实际处理中,可根据具体情况采用不同的阈值。
改进的八方向Sobel算子边缘信息更全,但是产生了大量空间和时间消耗,一般不采用。
另外,Sobel算子对噪声具有一定的平滑作用。
(2)选题,分析,仿真,实现,是一般项目进行的主要步骤,好的仿真可以大大缩短实际操作所需要的时间,但是仿真过程中要考虑实际平台的计算能力和存储空间。
(3)本次实验,本组进度进行较快,但是后来看了其他同学的情况后,发现对方做的效果比我们好很多,才激励我们继续研究,找出抗噪性能
的分析这一创新点。
启示我们,做研究过程中不要实现一点成绩就沾沾自喜,要保持谦虚,脚踏实地。
六、思考题解答
在CCS平台上,将Sobel算子改为Prewitt算子。
答:Sobel算子核心代码如下:
其中
m_nWork1=x7+x8+x8-x2-x2-x3;
m_nWork2=x3+x6+x6-x4-x4-x7;
if ( m_nWork1<m_nWork2 )
m_nWork1=m_nWork2;
m_nWork2=m_nWork1+x9-x1;
是卷积求梯度的核心代码,根据Prewitt的卷积阵,将此处改为以下代码即可。
m_nWork1=x7+x8-x2-x3;
m_nWork2=x3+x6-x4-x7;
if ( m_nWork1<m_nWork2 )
m_nWork1=m_nWork2;
m_nWork2=m_nWork1+x9-x1;
全部代码见附程序Sobel.c和Prewitt.c
七、参考资料
[1] 陈宇云. 灰度图像的边缘检测研究[D]. 电子科技大学硕士学位论文.2009
[2] 卢洋,张旭秀.图像边缘检测算法的对比分析与研究[J]. 太原科技. 2009,(3):17-18
[3] 韩磊 .MATLAB 在数字图象处理中的应用[J]. 电脑知识与技术. 2008,1(1):29-31
附录
1.transfer_1.m 将彩色图转化为灰度图的小程序,在迁移到CCS平台处
理时用到,Matlab平台仿真的程序中内嵌了这几行代码。
2.Sobel_1.m 传统Sobel算子代码+手动阈值调整功能
3.Sobel_2.m 八方向Sobel
4.Sobel_3.m 将水平和垂直算子单独考虑与都考虑时的对比
5.Prewitt_1.m 传统Prewitt
6.Sobel_prewitt.m Sobel和Prewitt的对比+考虑高斯白噪声后的情
况。