索贝尔算子(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算子采用对角线方向相邻两像素之差近似梯度幅值检测边缘。检测水平和垂直边缘的效果好于斜向边缘,定位精度高,对噪声敏感。

图像梯度特征的常用算子:Sobel、Prewitt、Roberts相关推荐

  1. 梯度与边缘检测常用算子:Roberts、Prewitt、Sobel、LOG,Canny、Lapacian算子

    原文:https://blog.csdn.net/swj110119/article/details/51777422 原文:https://blog.csdn.net/gdut2015go/arti ...

  2. 基于OpenCV的图像梯度与边缘检测!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:姚童,Datawhale优秀学习者,华北电力大学 严格的说,梯度计 ...

  3. opencv 梯度幅值_基于OpenCV的图像梯度与边缘检测!

    严格的说,梯度计算需要求导数.但是图像梯度的计算,是通过计算像素值的差得到梯度的近似值.图像梯度表示的是图像变化的速度,反映了图像的边缘信息. 边缘是像素值快速变化的地方.所以对于图像的边缘部分,其灰 ...

  4. OpenCV——图像梯度与边缘检测(python实现)

    OpenCV--图像梯度与边缘检测 6.1 简介 严格的说,梯度计算需要求导数.但是图像梯度的计算,是通过计算像素值的差得到梯度的近似值.图像梯度表示的是图像变化的速度,反映了图像的边缘信息. 边缘是 ...

  5. 图像边缘提取——梯度算子、Roberts算子、prewitt算子、Sobel算子、Kirsch算子、LOG算子的matlab实现

    #图像边缘提取-- ##梯度算子.Roberts算子.prewitt算子.Sobel算子.Kirsch算子.LOG算子的matlab实现 matlab代码 clear; f=rgb2gray(imre ...

  6. OpenCV--033_2: 图像梯度--Sobel算子

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

  7. python-opencv之图像梯度Sobel、Scharr、Laplacian算子边缘检测

    Sobel算子 是离散微分算子(discrete differentiation operator),用来计算图像灰度的近似梯度,梯度越大越有可能是边缘. Soble算子的功能集合了高斯平滑和微分求导 ...

  8. 【OpenCV】32 图像梯度–更多梯度算子(rober算子、prewitt算子)

    32 图像梯度–更多梯度算子(rober算子.prewitt算子) 代码 import cv2 as cv import numpy as npsrc = cv.imread("../ima ...

  9. Matlab图像边缘检测Roberts\Sobel\Prewitt\Canny算子

    确定图像中的物体边界的一种方法是先检测每个像素和其直接淋雨的状态已决定该像素是否确实处于一个物体的边界上.具有这种特性的像素被标记为边缘点.当图像中各个像素的灰度级用来反映各像素要求的程度时,这种图像 ...

最新文章

  1. Python访问街区10个点,并俩俩绘制一条线,得到5条线,求最短的距离和?
  2. linux控制命令使用限制,【L-shell】Linux 系统下 限制用户的活动目录,控制用户使用命令的权限。...
  3. jsp 定义java类_在JSP中定义一个类
  4. 润乾数据集调用postgresql存储过程
  5. sublime配置go环境_sublime Text3配置go编译环境
  6. 我应该做哪个行业的销售
  7. Struts2学习笔记(十八) 防止表单重复提交
  8. Vue模板,数据和指令
  9. linux安装gcc等程序包,Linux手动安装gcc-8.3.0
  10. Navicat Premium 12注册机破解方法
  11. 【光学】干涉衍射仿真含Matlab源码
  12. 用vs code 搭建stm32 开发环境(详细)
  13. Python pydub 截取音频
  14. 关于微信卡券47001的问题
  15. Windows10 彻底关闭系统更新(2022.12.26更新)
  16. 游戏开发入门 二、游戏中的设计模式
  17. w jius shui yix
  18. 数字IC笔面试(一)——联发科提前批笔试题记录
  19. c4d流体插件_c4d流体插件下载|C4D流体模拟插件(Jawset TurbulenceFD)下载v1.0 Rev1372 官方最新版_ IT猫扑网...
  20. 18.C语言统计英文文章个数和大写首字母

热门文章

  1. c#自定义事件以及与其他事件绑定
  2. PHP做大转盘抽奖的思路,jQuery实现幸运大转盘(php抽奖程序)抽奖程序
  3. 模型剪枝,“剪”掉了什么?
  4. created()和activated()的区别
  5. linux岗招聘_Linux运维工程师招聘岗位的面试题
  6. 31 天重构学习笔记26. 避免双重否定
  7. 【机器人定位引导中的机器视觉技术】
  8. ASM算法原理及实现过程
  9. E. By Elevator or Stairs?
  10. 强大的社工之-重庆黑客联盟