简介

sobel算子是图像边缘检测的最重要的算子之一,在机器学习,数字媒体、计算机视觉等领域起着重要作用。本文主要介绍sobel算子的计算过程。python实现过程和python中相关函数的介绍。方便读者实际中使用。

原理

边缘是指在图像上像素灰度变化最显著的地方,边缘检测算子则利用图像边缘灰度的突变来检测边缘。Sobel算子包含两组3X3的滤波器,分别对水平和垂直方向上的边缘敏感。

让两个方向模板分别沿着X轴、Y轴与图像做卷积,方向是从上到下和从左到右。将模板的中心和图像上的某个像素重合,并将该像素周围的点与模板上的系数相乘,如(3)和(4)所示,其中G(x)和G(y)分别表示横向及纵向边缘检测的图像梯度值。

G(X) = (X3+ 2X6+ X9)-(X1+ 2X4+ X7)

G(Y) =   (X1 +2X2 +X3) - (X7 + 2X8 + X9)

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

G = √Gx2+Gy2

为了减少运算时间,提高运算效率,可以使用绝对值求和近似的方法代替开平方:

G = ¦Gx¦ + ¦Gy¦

最后选取合适的阈值,将像素点的灰度值与阈值进行比较,若大于阈值,则改点为图像的边缘点。由于Sobel算子对于像素的位置影响做了加权,可以降低边缘模糊程度,与Prewitt算子,Roberts相比效果更好。

python实现

sobel算子在python中的实现有两种途径:opencv和skimage。全部代码如下:

from skimage import data,filters,img_as_ubyte

import matplotlib.pyplot as plt

import cv2

# 图像读取

img = data.camera()

plt.imshow(img,plt.cm.gray)

'''**********skimage*************'''

# sobel边缘检测

edges = filters.sobel(img)

# 浮点型转成uint8型

edges = img_as_ubyte(edges)

# 显示图像

plt.figure()

plt.imshow(edges,plt.cm.gray)

# sobel 水平方向边缘检测

edgesh = filters.sobel_h(img)

edgesh = img_as_ubyte(edgesh)

plt.figure()

plt.imshow(edgesh,plt.cm.gray)

# sobel 竖直方向边缘检测

edgesv = filters.sobel_v(img)

edgesv = img_as_ubyte(edgesv)

plt.figure()

plt.imshow(edgesv,plt.cm.gray)

'''**********opencv*************'''

# sobel边缘检测

edges = cv2.Sobel(img,cv2.CV_16S,1,1)

# 浮点型转成uint8型

edges = cv2.convertScaleAbs(edges)

plt.figure()

plt.imshow(edges,plt.cm.gray)

# sobel 水平方向边缘检测

edges = cv2.Sobel(img,cv2.CV_16S,1,0)

edgesh = cv2.convertScaleAbs(edgesh)

plt.figure()

plt.imshow(edgesh,plt.cm.gray)

# sobel 竖直方向边缘检测

edges = cv2.Sobel(img,cv2.CV_16S,0,1)

edgesv = cv2.convertScaleAbs(edgesv)

plt.figure()

plt.imshow(edgesv,plt.cm.gray)

————————————————

原文链接:https://blog.csdn.net/weixin_41500849/article/details/80611263

java求sobel算子代码_sobel算子原理与实现相关推荐

  1. java求sobel算子代码_sobel算子原理及opencv源码实现

    sobel算子原理及opencv源码实现 简要描述 sobel算子主要用于获得数字图像的一阶梯度,常见的应用和物理意义是边缘检测. 原理 算子使用两个33的矩阵(图1)算子使用两个33的矩阵(图1)去 ...

  2. java求sobel算子代码_边缘检测sobel算子

    #1,个人理解 网上查了很多资料,都说sobel算子是用来检测边缘的,分别给了两个方向上的卷积核,然后说明做法,就说这就是sobel算子.对于我个人来说,还有很多不明白的地方,所以理清下思路. #2, ...

  3. opencv——Sobel算子与Scharr算子

    目录 算子 边缘提取与梯度 边缘提取 Sobel算子 原理 API 代码展示 结果 优化代码 结果 Scharr算子 代码 结果 算子 狭义的算子实际上是指从一个函数空间到另一个函数空间(或它自身)的 ...

  4. 利用Canny边缘检测算子进行边缘检测的原理及OpenCV代码实现

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 Canny算子是John Canny在1986年 ...

  5. 数字图像处理第三章边缘检测(Sobel算子、Laplace算子)

    边缘 边缘(edge)是指图像局部强度变化最显著的部分.主要存在于目标与目标.目标与背景.区域与区域(包括不同色彩)之间,是图像分割.纹理特征和形状特征等图像分析的重要基础. 边缘检测概念 1.边缘检 ...

  6. 边缘检测之Sobel算子和Canny算子

    文章目录 一.Sobel 算子 1.1.什么是 Sobel 算子 1.2.原理 1.3.过程中的问题 1.4.OpenCV 实操 二.Canny 算子 2.1.原理 2.2.OpenCV 实操 三.对 ...

  7. 图像梯度——Sobel算子和Laplacian算子

    一.Sobel算子 1.定义 Sobel算子是一种离散的微分算子,结合了高斯平滑和微分求导运算,利用局部拆分寻找边缘,计算所得的是一个梯度的近似值. Sobel算子=|左-右|/|下-上| Schar ...

  8. 图像处理学习2,边缘检测1(sobel算子,kirsch算子)

    图像边缘的种类 图像中的边缘是像素灰度值发生加速变化而不连续的结果,边缘检测是常见的图像基元检测的基础,也是所有基于边界的图像分割方法的第一步. 图片来源:章毓晋.计算机视觉教程[M].北京:人民邮电 ...

  9. 提取lbp特征java代码_LBP特征提取原理及代码实现

    老规矩,先上背景,算是表示对LBP算法提出者的一种尊敬(其实,是为了装...kkk,大家都懂ha). 一.LBP背景: LBP(Local Binary Pattern,局部二值模式)是一种用来描述图 ...

最新文章

  1. 自然语言模型算法太杂乱?国产统一 AI 开源框架来了
  2. Selenium2Lib库之输入常用关键字实战
  3. 稍等片刻 正在提取文件_电脑文件误删除并且清空了回收站,怎么恢复文件?教你一招!...
  4. ReactJS入门之ReactJS简介
  5. 云原生时代 给予.NET的机会
  6. 深度学习工作笔记003---数据预处理:独热编码(One-Hot Encoding)
  7. 使用python开发网页游戏_四大游戏编程网站,边玩游戏,边学Python,拒绝枯燥快乐编程...
  8. 【设计模式】java设计模式总述及观察者模式
  9. 子界类型(Subrange types)
  10. 图片怎么批量修改尺寸
  11. TP-LINK-TL-WR703N刷Breed用Openwrt固件挂MP288打印机服务共享手机打印服务
  12. resnet152训练_ResNet改进版来了!可训练网络超过3000层!相同深度精度更高
  13. was not declared in this scop
  14. MATLAB串联RLC响应
  15. Android入门知识全套笔记
  16. 华为首款Harmonyos摄像头,海雀科技首款HarmonyOS智能摄像头Pro亮相华为智慧屏新品发布会...
  17. 简单的朋友圈界面-Android(一)
  18. RE-实验吧分道扬镳/Just Click
  19. 比尔盖茨开通微信公众号斩获10万+,但微博可能更适合他
  20. 机器学习之恶意流量检测的特征工程

热门文章

  1. 如何用python做俄罗斯方块_你的童年有俄罗斯方块吗?教你用 Python 实现俄罗斯方块!...
  2. mysql explain索引_mysql 索引+explain
  3. as安装过程中gradle_电磁阀在安装过程中需注意的一些细节
  4. python 二分查找函数_Python基础14_递归函数,二分查找
  5. 计算机地址如何表达,计算机中的地址是表示
  6. rabbitmq windows 连接 linux,在Centos7中,从主机 Windows 上无法远程访问 Linux 上rabbitmq的解决方法...
  7. idea中ssm集成freemark_基于SSM框架的迷你天猫商城
  8. java 最简单一个家庭支付收入项目(实用于刚入门的小伙伴)
  9. 中的live_张杰两首歌曲连唱彰显LIVE实力 青春演说温暖人心
  10. html 二维表_焦虑症自测量表SAS焦虑症自测表