Sobel边缘检测算法

转载请注明出处:  http://blog.csdn.net/tianhai110

索贝尔算子(Sobel operator)主要用作边缘检测,在技术上,它是一离散性差分算子,用来运算图像亮度函数的灰度之近似值。在图像的任何一点使用此算子,将会产生对应的灰度矢量或是其法矢量

Sobel卷积因子为:

该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。如果以A代表原始图像,Gx及Gy分别代表经横向及纵向边缘检测的图像灰度值,其公式如下:

具体计算如下:

Gx = (-1)*f(x-1, y-1) + 0*f(x,y-1) + 1*f(x+1,y-1)

+(-2)*f(x-1,y) + 0*f(x,y)+2*f(x+1,y)

+(-1)*f(x-1,y+1) + 0*f(x,y+1) + 1*f(x+1,y+1)

= [f(x+1,y-1)+2*f(x+1,y)+f(x+1,y+1)]-[f(x-1,y-1)+2*f(x-1,y)+f(x-1,y+1)]

Gy =1* f(x-1, y-1) + 2*f(x,y-1)+ 1*f(x+1,y-1)

+0*f(x-1,y) 0*f(x,y) + 0*f(x+1,y)

+(-1)*f(x-1,y+1) + (-2)*f(x,y+1) + (-1)*f(x+1, y+1)

= [f(x-1,y-1) + 2f(x,y-1) + f(x+1,y-1)]-[f(x-1, y+1) + 2*f(x,y+1)+f(x+1,y+1)]

其中f(a,b), 表示图像(a,b)点的灰度值;

图像的每一个像素的横向及纵向灰度值通过以下公式结合,来计算该点灰度的大小:

通常,为了提高效率 使用不开平方的近似值:

如果梯度G大于某一阀值 则认为该点(x,y)为边缘点。

然后可用以下公式计算梯度方向:

Sobel算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘。对噪声具有平滑作用,提供较为精确的边缘方向信息,边缘定位精度不够高。当对精度要求不是很高时,是一种较为常用的边缘检测方法。
  

附带知识:

普利维特算子(Prewitt operate)

除sobel边缘检测外 还有Prewitt算子, 它的卷积因子如下:

其他计算 和sobel差不多;

Prewitt算子利用像素点上下、左右邻点灰度差,在边缘处达到极值检测边缘。对噪声具有平滑作用,定位精度不够高。

罗伯茨交叉边缘检测(Roberts Cross operator

卷积因子如下:

灰度公式为:

近似公式为:

具体计算如下:

G(x,y)=abs(f(x,y)-f(x+1,y+1))+abs(f(x,y+1)-f(x+1,y))

灰度方向 计算公式为:

Roberts算子采用对角线方向相邻两像素之差近似梯度幅值检测边缘。检测水平和垂直边缘的效果好于斜向边缘,定位精度高,对噪声敏感

其他边缘检测技术:

参考文章:

http://homepages.inf.ed.ac.uk/rbf/HIPR2/featops.htm

http://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm

转载于:https://www.cnblogs.com/songshu-liym/p/4458808.html

Sobel边缘检测算法相关推荐

  1. Sobel边缘检测算法verilog实现及仿真

    实验verilog语言对sobel边缘检测算法进行设计 实验modelsim仿真工具进行仿真,程序和仿真截图如下图所示: 1.程序截图: 2.仿真截图: module edge_judge ( clk ...

  2. matlab差分算子的灰度图像边缘检测,灰度图像的 Sobel 边缘检测算法的 HDL实现(一)...

    1.1 边缘检测算法介绍 所谓边缘是指其周围像素灰度急剧变化的那些象素的集合,它是图像最基本的特征.边缘存在于目标.背景和区域之间,所以,它是图像分割所依赖的最重要的依据.由于边缘是位置的标志,对灰度 ...

  3. Python:实现sobel边缘检测算法(附完整源码)

    Python:实现sobel边缘检测算法 # coding=gbk import cv2 img = cv2.imread("1.jpg", 0) x = cv2.Sobel(im ...

  4. 基于MATLAB的Sobel边缘检测算法实现

    图像边缘就是图像灰度值突变的地方,也就是图像在该部分的像素值变化速度非常之快,就比如在坐标轴上一条曲线有刚开始的平滑突然来个大转弯,在变化出的导数非常大. Sobel算子主要用作边缘检测,它是一离散型 ...

  5. Sobel边缘检测算法及OpenCV函数实现

    转自https://www.cnblogs.com/herenzhiming/articles/6526741.html  https://blog.csdn.net/qaz_wz/article/d ...

  6. 边缘检测算法及各自优缺点

    边缘检测算法及各自优缺点 边缘提取其实也是一种滤波,不同的算子有不同的提取效果.比较常用的方法有三种,Sobel算子,Laplacian算子,Canny算子. Sobel算子检测方法对灰度渐变和噪声较 ...

  7. 【算法随记一】Canny边缘检测算法实现和优化分析。

    以前的博文大部分都写的非常详细,有很多分析过程,不过写起来确实很累人,一般一篇好的文章要整理个三四天,但是,时间越来越紧张,后续的一些算法可能就以随记的方式,把实现过程的一些比较容易出错和有价值的细节 ...

  8. Matlab与FPGA图像处理系列——基于FPGA的实时边缘检测系统设计,sobel边缘检测流水线实现

    注:下载链接的资源是图片存 ROM 后读取进行 Sobel 检测显示在 VGA上,可供参考. 摘要:本文设计了一种基于 FPGA 的实时边缘检测系统,使用OV5640 摄像头模块获取实时的视频图像数据 ...

  9. 【图像处理】——Python图像分割边缘检测算法之一阶梯度算子(Roberts、Prewitt、Sobel、 Kirsch、Canny算子)

    目录 前言 一.边缘检测算法 1.一阶算子 2.二阶算子 二.一阶算子 原图像lena 1.Roberts算子 不同方向的算子模板 梯度的计算 系统代码: 自定义函数代码 结果 2.Prewitt 不 ...

  10. sobel,canny(可滑动调节阈值)边缘检测算法opencv-python实战

    1.前言 目的:为了总结下之前用过的经典边缘检测算法sobel和canny 2.算法opencv官方讲解 (1)sobel 算法讲解 (2)canny 算法讲解 2.opencv-python代码 * ...

最新文章

  1. 如果连接远程的mysql数据库连不上,可用下面的方法试下
  2. .Net中url传递中文的解决方案
  3. 统计学中【矩】的概念
  4. All-In-One Code Framework [一站式示例代码库] 【转】
  5. 【cocos2d-x】游戏构成要素③----游戏关卡的实现
  6. C++设计模式-单例模式理论与实例
  7. 检测噪声大小的c语言程序,单片机课程设计(论文)_基于AT89C51的噪音检测自适应系统设计.doc...
  8. Gurobi建模遇到的坑
  9. JSK-23223 数字反转【进制】
  10. java的输入输出流
  11. python代码图片头像_Python爬取堆糖网优美古风头像(附源码)
  12. Oracle中用sys用户登录
  13. can总线程序讲解_详解CAN总线
  14. MySQL Flashback拯救手抖党
  15. 啊哈算法之水管工游戏
  16. 语c语言用语大全,C语言常用语总结.doc
  17. 计算机地图制图相关论文,计算机地图制图原理、特点及发展趋势论文
  18. Java 大写转小写
  19. 科林明伦杯哈尔滨理工大学第九届程序设计竞赛
  20. WPF MVVM架构 程序退出右下角托盘图标简单解决方案

热门文章

  1. 惠普传真服务器位置,惠普传真机的使用方法
  2. 故障解决 | win10没声音及找不到Realtek高清音频管理器
  3. TortoiseSvn和Subclipse对应关系
  4. msm8937声卡挂载问题
  5. ROS配置ipv6方法
  6. 贪心算法解决哈夫曼编码问题
  7. 图解机器学习:分类模型性能评估指标
  8. MySQL基础(2)----DDL DML DQL语言完成数据库的增删改查操作 数据备份(导入导出sql包) 单表查询
  9. 拓扑排序算法 C语言实现
  10. JS处理支付宝H5支付