Sobel算子:[-1  0  1

-2  0  2

-1  0  1]

用此算子与原图像做卷积,可以检测出垂直方向的边缘。算子作用在图像的第二列,结果是:200,200,200;作用在第三列,结果是:

200,200,200;

边缘 – 是像素值发生跃迁的地方(变化率最大处,导数最大处),是图像的显著特征之一,在图像特征提取、对象检测、模式识别等方面都有重要的作用。

Sobel算子和Scharr算子

(1)Sobel算子:是离散微分算子(discrete differentiation operator),用来计算图像灰度的近似梯度,梯度越大越有可能是边缘。

Soble算子的功能集合了高斯平滑和微分求导,又被称为一阶微分算子,求导算子,在水平和垂直两个方向上求导,得到的是图像在X方法与Y方向梯度图像。

缺点:比较敏感,容易受影响,要通过高斯模糊(平滑)来降噪。

算子是通过权重不同来扩大差异。

梯度计算:(在两个方向求导,假设被作用图像为 I)

水平变化: 将 I 与一个奇数大小的内核 Gx进行卷积。比如,当内核大小为3时, Gx的计算结果为:

垂直变化: 将 I 与一个奇数大小的内核 Gy进行卷积。比如,当内核大小为3时, Gy的计算结果为:

在图像的每一点,结合以上两个结果求出近似梯度:

有时也用下面更简单公式代替,计算速度快:(最终图像梯度)。

(2)Scharr:当内核大小为3时, 以上Sobel内核可能产生比较明显的误差(毕竟,Sobel算子只是求取了导数的近似值)。 为解决这一问题,OpenCV提供了 Scharr 函数,但该函数仅作用于大小为3的内核。该函数的运算与Sobel函数一样快,但结果却更加精确,不怕干扰,其内核为:

(3)Sobel/Scharr提取边缘(求导)步骤:

1)高斯模糊平滑降噪:

GaussianBlur( src, dst, Size(3,3), 0, 0, BORDER_DEFAULT );

2)转灰度:

cvtColor( src, gray, COLOR_RGB2GRAY );

3)求X和Y方向的梯度(求导):

Sobel(gray_src, xgrad, CV_16S, 1, 0, 3);

Sobel(gray_src, ygrad, CV_16S, 0, 1, 3);

Scharr(gray_src, xgrad, CV_16S, 1, 0);

Scharr(gray_src, ygrad, CV_16S, 0, 1);

4)像素取绝对值:

convertScaleAbs(A, B); //计算图像A的像素绝对值,输出到图像B

5)相加X和Y,得到综合梯度,称为振幅图像:

addWeighted( A, 0.5,B, 0.5, 0, AB); //混合权重相加,效果较差

或者循环获取像素,每个点直接相加,效果更好。

来源:https://zhuanlan.zhihu.com/p/40491339

标签:Sobel,检测,图像,边缘,内核,算子,梯度,Scharr

来源: https://www.cnblogs.com/yibeimingyue/p/10878514.html

sobel边缘检测java_Sobel边缘检测相关推荐

  1. 基于sobel算法的边缘检测设计与实现

    基于sobel算法的边缘检测设计与实现 边缘是图像的基本特征.边缘检测针对的是灰度图像,目的是标识数字图像中灰度变化明显的点. 边缘检测的方法大致可以分为两类:基于查找的一类,通过寻找图像一阶导数中最 ...

  2. Sobel算子的边缘检测实现

    1. Sobel算子的边缘检测实现 1.1. 边缘检测概念 所谓边缘是指其周围像素灰度急剧变化的那些象素的集合,它是图像最基本的特征.边缘存在于目标.背景和区域之间,所以,它是图像分割所依赖的最重要的 ...

  3. matlab实现sobel边缘检测图像,基于Sobel算子图像边缘检测的MATLAB实现

    <基于Sobel算子图像边缘检测的MATLAB实现>由会员分享,可在线阅读,更多相关<基于Sobel算子图像边缘检测的MATLAB实现(3页珍藏版)>请在人人文库网上搜索. 1 ...

  4. 在CIELab颜色空间下使用八方向Sobel算子实现边缘检测

    参考河北师范大学硕士学位论文--基于八方向Sobel算子的边缘检测算法研究. 由于自己实现滤波器运算,计算速度很慢,以后有能力再进行改进. 算子定义如下: 算法思路: 1.将RGB图像转化为CIELa ...

  5. sobel算子原理_「学术论文」基于Sobel算法图像边缘检测的FPGA实现

    摘要: 针对嵌入式软件无法满足数字图像实时处理速度问题,提出用硬件加速器的思想,通过FPGA实现Sobel边缘检测算法.通过乒乓操作.并行处理数据和流水线设计,大大提高算法的处理速度.采用模块的硬件设 ...

  6. Opencv python基础入门(4)---sobel算子及边缘检测

    本文主要介绍sobel算子及边缘检测: 代码如下: #sobel,ddepth如果设置为-1的话,水平处理只能取出左边界,右边界为负值丢失了,所以需要先用64F扩展然后用convertScaleAbs ...

  7. sobel算子_边缘检测算法4.-教你动手实现kirsch和robinson算子

    还有很多 边缘检测算子,在OpenCV中没有实现代码. 所以,我们得掌握看懂算法,然后扩展 算法得能力. 比如,我已知的一些 边缘检测核心: Kirsch 8方向算子 Robinson 8方向算子 这 ...

  8. 屏幕后期处理之:Sobel算子实现边缘检测

    版权声明 本文为"优梦创客"原创文章,您可以自由转载,但必须加入完整的版权声明 更多学习资源请加QQ:1517069595获取(企业级性能优化/热更新/Shader特效/服务器/商 ...

  9. sobel算子_OpenCV图像处理专栏十八 | 手动构造Sobel算子完成边缘检测

    1. 前言 众所周知,在传统的图像边缘检测算法中,最常用的一种算法是利用Sobel算子完成的.Sobel算子一共有 个,一个是检测水平边缘的算子,另一个是检测垂直边缘的算子. 2. Sobel算子优缺 ...

  10. sobel算子实现边缘检测及其c++实现及与matlab效果对比

    这里增加了对边缘像素的补齐.sobel梯度分割抗噪性好,但是无法做到自动阈值,是其一大遗憾,matlab却解决的很好. //默认对8位位图进行处理 void Sobel(unsigned char * ...

最新文章

  1. 扩增子统计绘图1箱线图:Alpha多样性
  2. 提高显卡性能软件_华硕RTX30系显卡亮相
  3. CSS-3 Animation 的使用
  4. 解决phoenix中创建的表名及字段默认是大写的问题
  5. 安卓listview下拉刷新_安卓QQ内测教学,保证不让你走弯路
  6. inline用法详解
  7. 楼主考南师计算机学硕,【图片】2019南师大新传学硕考研经验贴【南京师范大学研究生吧】_百度贴吧...
  8. 熬夜给这个C语言游戏项目找了几个bug
  9. 区块链 以太坊 Solidity状态变量、局部变量与memory 、storage
  10. LNMP下Redis介绍以及安装(Linux)
  11. Google登录提示错误码12501
  12. aliplayer阿里云播放器直播及录播前端代码
  13. AD15如何更新原理图库
  14. 2019年web前端工程师工资有多高
  15. SSM整合-内涵基本SSM开发基本结构框架
  16. Performance Test Framework (PTF)是压力测试框架(轩)
  17. 宝付正式执行“适当降低小微企业支付手续费”工作部署任务
  18. 【Python】Python学到什么程度可以面试工作?------持续更新 ...
  19. 在github上下载的.md文件怎么打开
  20. 计算机excel怎么添加实线边框,Excel中自动添加边框线条的方法!学会效率翻倍!你确定不学?...

热门文章

  1. YUV420->RGB888格式转换的CPP实现
  2. 收货地址列表html,收货地址.html
  3. wifi数据包解析_WiFi通讯协议详解
  4. redis下载安装教程
  5. 二级c语言题库手机软件,C语言二级考试题库手机下载-C语言二级考试题库APK下载 - Iefans...
  6. Xilinx平台SRIO介绍(五)示例工程Example Design介绍
  7. 大数据之clickhouse各类引擎
  8. PHP和js做分页功能,php+js实现分页
  9. 学习参考《深度实践Spark机器学习》PDF+吴茂贵
  10. 最大流最小割经典例题_图像分割之最小割与最大流算法