12.图像边缘检测

MATLAB图像处理算法专栏:直方图变化,平滑滤波,边缘检测,阈值分割处理。 MATLAB图像处理算法专栏: 直方图变化模块(均值化,规定化); 平滑滤波模块(椒盐噪声,高斯噪声,维纳滤波,中值滤波); 边缘检测模块(Sobel,Prewitt,Canny,Roberts算子); 阈值分割模块(灰度图像,二值图像,局部阈值分割,最大类间方差法)。 源程序直接在MATLAB里面运行出GUI界面,便于对比与保存! 阅读详情

更多MATLAB图像处理视频请点击  http://study.163.com/course/courseMain.htm?courseId=1003594013     

所谓边缘是指其周围像素灰度有变化的那些像素的集合。边缘广泛存在于物体与背景之间、物体与物体之间、基元与基元之间。物体的边缘是由灰度不连续所反映的。基于边缘的分割代表了一大类基于图像边缘信息的方法,常用于图像分割。

更多MATLAB图像处理视频请点击  http://study.163.com/course/courseMain.htm?courseId=1003594013


1.边缘检测的基本原理及常用边缘检测算子

边缘检测的实质是采用某种算法来提取出图像中对象与背景间的交界线。我们将边缘定义为图像中灰度发生急剧变化的区域边界。图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此我们可以用局部图像微分技术来获得边缘检测算子。经典的边缘检测方法是对原始图像中像素的某小邻域来构造边缘检测算子。以下是对几种经典的边缘检测算子进行理论分析,并对各自的性能特点做出了比较和评价。


人们以这些理论为依据,提出了许多算法,其中比较常用的边缘检测方法有差分边缘检测、Roberts 边缘检测算子、Sobel 边缘检测算子、Prewitt 边缘检测算子、Robinson 边缘检测算子、Laplace 边缘检测算子、Canny 算子和 LOG 算子等等。

(1)差分边缘检测方法

         利用像素灰度的一阶导数算子在灰度迅速变化处得到高值来进行奇异点的检测。它在某一点的值就代表该点的“边缘强度”,可以通过对这些值设置阈值来进一步得到边缘图像。然而,用差分检测边缘必须使差分的方向与边缘方向垂直,这就需要对图像的不同方向都进行差分运算,增加了实际运算的繁琐性。

 一般为垂直边缘、水平边缘、对角线边缘检测,如下所示:

 


差分边缘检测方法是最原始、最基本的方法。根据灰度迅速变化处一阶导数达到最大(阶跃边缘情况)原理,要求差分方向与边缘方向垂直,利用导数算子检测边缘。这种算子具有方向性,运算繁琐,目前很少采用。


(2)Roberts 边缘检测算子

     Roberts 边缘检测算子根据任意一对互相垂直方向上的差分可用来计算梯度的原理,采用对角线方向相邻两像素之差,即:

   

        适当选取门限 TH,并作如下判断:如果 R(i, j)>TH,则(i, j)为阶跃状边缘点,{R(i, j)}为边缘图像。
       Roberts 算子采用对角线方向相邻两像素之差近似梯度幅值检测边缘。检测水平和垂直边缘的效果好于斜向边缘,定位精度高,但对噪声敏感。

(3)Sobel 边缘检测算子

     数字图像{f (i, j)}的每个像素,考察它上下左右邻点灰度的加权差,与之接近的邻点的权大。据此,定义 Sobel 算子如下:

 

           适当选取门限 TH,并作如下判断:如果 R(i, j)>TH,则(i, j)为阶跃状边缘点,{R(i, j)}为边缘图像。
          Sobel 算子很容易在空间上实现,Sobel 边缘检测器不但产生较好的边缘检测效果,而且受噪声的影响也比较小。当使用大的邻域时,抗噪性能会更好,但这样会增加计算量,并且得出的边缘也会相应变粗。
           Sobel 算子利用像素点上下、左右邻点的灰度加权算法,根据在边缘点处达到极值这一现象进行边缘的检测。Sobel 算子对噪声具有平滑作用,提供较为精确的边缘方向信息,但它同时也会检测出许多伪边缘,边缘定位精度不够高。当对精度要求不是很高时,它是一种较为常用的边缘检测方法。


(4)Prewitt 边缘检测算子

         Prewitt 边缘检测算子是一种边缘样板算子。这些算子样板由理想的边缘子图像构成。依次用边缘样板去检测图像,与被检测区域最为相似的样板给出最大值。用这个最大值作为算子的输出值 P(i, j),这样可将边缘像素检测出来。

     定义 Prewitt 边缘检测算子模板如下:

   

8个算子样板所对应的边缘方向如图 所示。适当选取门限 TH,并作如下判断:如果 P(i,j)>TH,则(i,j)为阶跃状边缘点,{P(i,j)}为边缘图像。



(5)Robinson 边缘检测算子

     Robinson 边缘检测算子也是一种边缘样板算子,其算法和 Prewitt 边缘检测算子相似,只是 8 个样板不同,如图所示。


(6)Laplace 边缘检测算子

     Laplace 边缘检测算子是一种二阶微分算子,对于数字图像{ f (i,j)},它在图像中的位置(i,j)的 Laplace 定义如下:

             Laplace 边缘检测算子是无方向性的算子,它比前面所述的多个方向导数算子的计算量要小,因为只用一个模板,且不必综合各模板的值。计算数字图像的 Laplace 值也是借助各种模板卷积实现的。实现 Laplace 运算的几种模板可见下图。在数字图像中,可用差分来近似微分运算,若选用图 7-4 中的第一个检测模板,则 f (i,j)的 Laplace 算子为:

几种常用的实现 Laplace 运算的检测模板如图所示。


         由于 Laplace 算子是一种二阶导数算子,对图像中的噪声相当敏感。另外它常产生双像素宽的边缘,且也不能提供边缘方向的信息。由于以上原因,Laplace 算子很少直接用于检测边缘,而主要用于已知边缘像素后确定该像素是在图像的暗区或明区一边。



2.各种边缘检测算子的 MATLAB 实现及效果比较

在 MATLAB 中可以由 edge 函数实现各算子对边缘的检测,以 Roberts 算子为例,其语法格式如下:

     BW=edge(I,’roberts’)
     BW=edge(I,‘roberts’,thresh)
     [BW,thresh]=edge(I,‘roberts’,⋯)
     BW=edge(I,‘roberts’)自动选择阈值用 Robert 算子进行边缘检测。
     BW=edge(I,‘roberts’,thresh)根据所指定的敏感阈值 thresh 用 Robert 算子进行边缘检测,它忽略了所有小于阈值的边缘。当 thresh 为空时,自动选择阈值

     [BW,thresh]=edge(I,‘roberts’,⋯)返回阈值。

     edge 函数对灰度图像 I 进行边缘检测,返回与 I 同样大的二值图像 BW,其中 1 表示边缘,0 表示非边缘。I 是 unit8 型、unit16 型,或者是 double 型,BW 是 unit8 型。

     其余 Sobel 算子、Prewitt 算子、LOG 算子、Canny 算子的实现仅需将‘roberts’用‘sobel’、‘prewitt’、‘log’、‘canny’代替即可。

例:具体实现这几个算子的一个例程

I=imread('cameraman.tif');
BW1 = edge(I,'sobel'); %应用 Sobel 算子进行滤波
BW2 = edge(I,'roberts'); %应用 Roberts 算子进行滤波
BW3 = edge(I,'prewitt'); %应用 Prewitt 算子进行滤波
BW4 = edge(I,'log'); %应用 LOG 算子进行滤波
BW5 = edge(I,'canny'); %应用 Canny 算子进行滤波
subplot(2,3,1),imshow(I),title('原图');
>> subplot(2,3,2),imshow(BW1),title('Sobel算子边缘检测');
>> subplot(2,3,3),imshow(BW2),title('Roberts算子');
>> subplot(2,3,4),imshow(BW3),title('Priwitt算子');
>> subplot(2,3,5),imshow(BW4),title('LOG算子');
>> subplot(2,3,6),imshow(BW5),title('Canny算子');


更多MATLAB图像处理视频请点击  http://study.163.com/course/courseMain.htm?courseId=1003594013


12-2018.01-数字信号处理《基于CCS和Linux平台的图像边缘检测算法开发及图像处理》 1、实验目的 图像信息量巨大,而边缘信息是图像的一种描述,是图像最基本的特征,所包含的也是图像中用于识别的有用信息。所谓边缘是指其周围像素灰度有阶跃变化或屋顶变化的那些像素的集合,边缘存在于目标、背景和区域之间,所以,它是图像分割所依赖的最重要的依据。由于边缘是位置的标志,对灰度的变化不敏感,,因此,边缘也是图像匹配的重要的特征。图像边缘为人们描述或识别目标以及解释图像提供了一个有价值的和重要的... 阅读详情

相关推荐

图像处理GPU加速实战:高斯模糊与边缘检测(Lesson 12)

摘要: 本教程深入探讨了GPU加速图像处理技术在RK3576平台上的实战应用,重点实现高斯模糊和Sobel边缘检测算法。通过OpenCL编程,展示了如何利用Mali GPU的硬件纹理单元和Image对象优化性能,实现1080p分辨率下实时处理(<20ms/帧)。关键技术包括:1)高斯模糊的3×3卷积实现;2)Sobel边缘检测的梯度计算;3)可分离卷积优化(降低复杂度至O(2NK));4)零拷贝和异步执行等性能优化技巧。实测表明,在RK3576平台上可实现5×5高斯模糊8ms/帧、Sobel边缘5ms

qq_43410673的博客 406

PCL点云边缘检测源码解析(过程记录)---AngleCriterion (附C++代码)

一、概述 在PCL中集成了一个非常经典的点云边缘检测算法,这个算法也在 PCL边缘检测 这篇博客中讲解了。那篇文章中只介绍了AC算法的思想步骤以及它的接口调用。那么它的内部具体是如何实现的呢,如果知道了它的具体实现,那么在某些情况下,就可以直接在它的源码基础上做一些小的改动,就能够更好地适应不同的需求了。这里只对AC边缘检测算法做个源码解析及修改后调用的过程记录,若以后需要解析其他PCL功能,也可以借鉴一下。 二、PCL边缘检测源码(AC)定位过程 首先,定位什么功能的源码,前提是已经知道了它调用的接口是

McQueen_LT的博客 8325

PCL实现有序点云3D边缘检测Edge Detection

有序点云的3D边缘检测和可视化

weixin_43047324的博客 1453

[转]点云边缘检测-逆时针排序-毛点去除

原文:https://blog.csdn.net/weixin_45231460/article/details/128890783。时提取出的点云有很多毛刺点,而且,输出的点云也不是按照顺时针或者逆时针排序。传入待处理的点云,一个vector存放处理后的点的xy坐标。进行逆时针排序,然后去除掉毛刺点。自己写了一个函数,在xy平面,对。

byliut的博客 514

PCL点云边界提取——源码解析

在PCL中集成了一个非常经典的点云边缘检测算法,这个算法也在PCL点云边界提取这篇博客中讲解了。该文章只介绍了AC算法的原理及接口调用。那么它的内部具体是如何实现的呢?如果知道了它的具体实现,那么在某些情况下,就可以直接在它的源码基础上做一些小的改动,就能够更好地适应不同的需求了。这里只对AC边缘检测算法做个源码解析及修改后调用的过程记录,若以后需要解析其他PCL功能,也可以借鉴一下。

Z's Palace 1171

12、图像匹配的低级图像处理:边缘检测与结构张量

本文深入探讨了图像匹配中的低级图像处理技术,重点介绍了边缘检测与结构张量的原理及应用。文章系统分析了基于梯度和二阶导数的边缘检测方法,包括Savitzky–Golay滤波器、高斯拉普拉斯(LoG)、高斯差分(DoG)和形态学边缘检测,并比较了各类方法的优缺点。同时,详细阐述了结构张量的数学定义、特征值分析及其在物体检测、纹理分析和图像匹配中的应用。结合代码示例与流程图,展示了从理论到实现的完整过程,最后展望了边缘检测与结构张量技术与深度学习融合、多模态信息集成及实时处理的发展趋势。

cake8的博客 44

【MATLAB图像融合】[12]canny边缘检测简易版

Canny简介 1、分别计算x,y两个方向的梯度值。 2、由梯度值可以计算出幅值和梯度方向。 3、幅值是梯度的强度,通过梯度方向可以抑制非极大幅值。 4、设置2个阈值。高于高阈值的幅值点,其像素值置为255,低于低阈值的幅值点,该点像素值赋0;而介于两值之间的幅值,检测其是否连通,若连通赋值255,反之赋值0。 5、输出边缘图像。 代码分享 function re=canny(x,min,max) [m,n]=size(x); GX=zeros(m,n); GY=zeros(m,n);

suda5395的博客 807

12、X射线图像处理:边缘检测与分割技术解析

本文深入解析了X射线图像处理中的边缘检测与分割技术。涵盖了梯度估计、拉普拉斯-高斯(LoG)和Canny边缘检测器的原理与实现,并对比了不同方法的优缺点。在图像分割部分,介绍了全局与自适应阈值处理、区域生长以及最大稳定极值区域(MSER)等关键技术。结合Matlab和Python代码示例,提供了实际应用指导,并通过流程图和表格形式总结了技术选择策略,帮助读者根据图像质量与应用场景选择合适的方法,为X射线图像分析提供系统性技术支持。

pz89012345的博客 62

机器视觉学习-day12-图像梯度处理及图像边缘检测

初学小小白,个人笔记使用,仅供参考

XZSSWJS的博客 611

12、图像特征提取与处理:边缘检测与曲率计算

本文深入探讨了计算机视觉中的图像特征提取技术,重点分析了边缘检测与曲率计算的方法。比较了Canny、Sobel、Prewitt等多种边缘检测算子的优缺点,并详细介绍了四种曲率计算方法:基于边缘方向差异、近似连续曲线、强度变化测量以及自相关方法。每种方法均给出了原理、实现步骤和代码示例,并对比了其可靠性与适用场景。文章最后指出,在实际应用中应根据图像特点和任务需求选择合适方法,或结合多种方法提升精度,为后续图像分析提供有力支持。

gg901的博客 66

12、灰度图像边缘检测与无线传感器网络可靠传输技术解析

本文解析了灰度图像边缘检测和无线传感器网络可靠传输技术。在灰度图像边缘检测中,重点介绍基于网格平滑的方法,通过几何特性与参数调整实现边缘检测,并探讨了其优势与应用拓展。在无线传感器网络部分,提出基于能量的领导者节点邻居节点重传算法,以解决PEGASIS协议中领导者节点能耗高、传输不可靠的问题,从而提升网络传输的可靠性与效率。文章还分析了这两项技术的优化效果、面临的挑战以及未来发展方向。

blue的专栏 90

边缘融合图像matlab,【MATLAB图像融合】[12]canny边缘检测简易版

【MATLAB图像融合】[12]canny边缘检测简易版【MATLAB图像融合】[12]canny边缘检测简易版1、分别计算x,y两个方向的梯度值。2、由梯度值可以计算出幅值和梯度方向。3、幅值是梯度的强度,通过梯度方向可以抑制非极大幅值。4、设置2个阈值。高于高阈值的幅值点,其像素值置为255,低于低阈值的幅值点,该点像素值赋0;而介于两值之间的幅值,检测其是否连通,若连通赋值255,反之赋值0...

weixin_39850599的博客 329

从零拆解快手Web端__NS_hxfalcon:JS逆向签名参数定位与复现

在JS逆向与前端反爬攻防中,签名参数总是绕不开的核心环节。无论是接口加密还是请求签名,其本质都是通过在客户端收集环境信息、时间戳与业务参数,经特定算法计算后生成用于服务端校验的动态令牌。理解这类参数的生成原理,不仅能提升逆向分析效率,也能帮助前端开发者更好地设计自身接口防护方案。在实际工程中,面对经Webpack打包且高度混淆的代码,直接全局搜索参数名往往难以奏效,需要结合请求抓包、调用栈跟踪、环境适配等方法逐步定位。此类签名参数广泛存在于现代Web应用的GraphQL或REST接口中,是接口数据安全的重要

weixin_29474431的博客 338

(ง •_•)ง[Python3 OpenCV4]12.平滑图像边缘检测

Canny边缘检测 原图: import cv2 import numpy as np img = cv2.imread('sudu.png', 0) edges = cv2.Canny(img, 30, 70) # canny边缘检测 cv2.imshow('canny', np.hstack((img, edges))) cv2.waitKey(0) Canny边缘检测步骤 ...

小鱼酱的博客 370

EC20模块实战:5步搞定MQTT连接阿里云IoT(附常见错误排查)

本文详细介绍了使用EC20 4G模块通过AT指令连接阿里云IoT平台的完整实战流程。文章以智能农业项目为背景,从硬件接线、网络注册、PDP激活,到MQTT连接配置、一型一密动态注册及数据收发,提供了清晰的5步操作指南,并重点附上了常见错误排查方法,帮助开发者快速实现稳定可靠的物联网设备上云。

weixin_29209801的博客 196

从逻辑门到RISC-V指令:ALU设计实战与Verilog实现

本文详细介绍了从逻辑门到RISC-V指令集的ALU设计实战与Verilog实现方法。通过构建1位ALU并扩展至64位,深入解析了RISC-V指令集的算术逻辑单元实现技巧,包括加法器设计、零标志检测和溢出检测等关键功能。文章还分享了Verilog代码优化、流水线设计和常见问题调试的实用经验,为开发者提供了一套完整的ALU设计解决方案。

weixin_29214335的博客 189

java图像处理线性边缘检测_《Java图像处理:基于OpenCV与JVM》 ——1.12 使用轮廓进行边缘检测...

1.12 使用轮廓进行边缘检测问题定义在Canny操作的结果中,希望找到一组可绘制的轮廓,并把它们绘制在矩阵中。解决方法OpenCV中有两个函数常与Canny函数一同使用:findContours和drawContours。findContours读入一个矩阵,并在这个矩阵中查找边缘,或者说定义形状的边界。因为原图像可能包含许多颜色和亮度的噪声,你通常需要一个经过预处理的图片,即一个由Canny处...

weixin_42295892的博客 510

深入MoveIt与OMPL集成开发:从源码编译到自定义规划算法实战

本文详细介绍了如何从源码编译集成MoveIt与OMPL,并实现自定义规划算法的完整流程。通过清理环境、获取源码、解决编译依赖与错误,最终指导开发者创建并集成名为MyRRT的自定义规划算法,从而实现对机器人运动规划栈的深度定制与优化。

h0i1j2k3l的博客 468

Python 图像处理 OpenCV (12): Roberts 算子、 Prewitt 算子、 Sobel 算子和 Laplacian 算子边缘检测技术

前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python 图像处理 OpenCV (3):图像属性、图像感兴趣 ROI 区域及通道处理」 「Python 图像处理 OpenCV (4):图像算数运算以及修改颜色空间」 「Python 图像处理 OpenCV (5):图像的几何变换」 「Python 图像处理 OpenCV (6):图像的阈值处理」 「Python .

极客挖掘机 7210

Innovus快捷键大全:从入门到精通的效率提升指南

本文是Innovus快捷键从入门到精通的效率提升指南,旨在帮助芯片后端设计工程师通过掌握核心快捷键,将重复性鼠标操作转化为高效的肌肉记忆,从而显著提升版图设计、编辑和分析的工作流速度。文章系统讲解了视图导航、对象选择编辑、流程管理等关键快捷键组合,并提供了个性化配置与实战策略,助力工程师突破效率瓶颈,实现人机合一的流畅设计体验。

silver的专栏 797

基于TIA博途的一阶滞后滤波+中位值滤波+堆栈平均值滤波算法SCL语言程序(封装FB库)

基于TIA博途的一阶滞后滤波+中位值滤波+堆栈平均值滤波算法SCL语言程序(封装FB库)

Robot_PLC_HMI_Automation 2181

Win8Metro(C#)数字图像处理--2.12Sobel边缘检测

[函数名称] 图像Sobel边缘检测函数SobelEdgeProcess(WriteableBitmap src) [函数代码]         ///         /// Sobel edge detection.         ///         /// Source image.         ///         pu

Trent1985的专栏 1735

台区同期线损智能诊断与闭环治理体系及工程化实践

高损台区:同期线损率>预设阈值(通常为8%,可根据区域、台区类型调整);负损台区:同期线损率<0,即供电量小于售电量,多由档案、计量、拓扑错误导致;波动损台区:月度线损率波动幅度>预设阈值(通常为5%),且无合理原因;持续异常台区:连续2个及以上周期线损率不达标,且未完成有效整改。台区同期线损智能诊断与闭环治理体系,以电力大数据为基础、智能诊断模型为核心、标准化流程为保障,彻底解决了传统线损治理“异常发现慢、定位难、整改乱、无闭环”的痛点,实现了线损治理从“人工经验驱动”向“数据智能驱动”的根本性转型。

getusushu的博客 205
上一篇: 11 彩色增强
下一篇: 13图像的复原
技术提高效率
博客等级 码龄10年 1664粉丝 119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术提高效率

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值