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算子采用对角线方向相邻两像素之差近似梯度幅值检测边缘。检测水平和垂直边缘的效果好于斜向边缘,定位精度高,对噪声敏感
其他边缘检测技术:
Sobel边缘检测算法原理相关推荐
- Canny边缘检测算法原理及其VC实现详解(一)
原文地址:http://blog.csdn.net/likezhaobin/article/details/6892176 图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是 ...
- 图像处理:Canny边缘检测算法原理(一)
图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值.图象的边缘部分集中了图象的大部分信息,图象边 ...
- Sobel边缘检测算法verilog实现及仿真
实验verilog语言对sobel边缘检测算法进行设计 实验modelsim仿真工具进行仿真,程序和仿真截图如下图所示: 1.程序截图: 2.仿真截图: module edge_judge ( clk ...
- matlab差分算子的灰度图像边缘检测,灰度图像的 Sobel 边缘检测算法的 HDL实现(一)...
1.1 边缘检测算法介绍 所谓边缘是指其周围像素灰度急剧变化的那些象素的集合,它是图像最基本的特征.边缘存在于目标.背景和区域之间,所以,它是图像分割所依赖的最重要的依据.由于边缘是位置的标志,对灰度 ...
- Python:实现sobel边缘检测算法(附完整源码)
Python:实现sobel边缘检测算法 # coding=gbk import cv2 img = cv2.imread("1.jpg", 0) x = cv2.Sobel(im ...
- Sobel边缘检测算法及OpenCV函数实现
转自https://www.cnblogs.com/herenzhiming/articles/6526741.html https://blog.csdn.net/qaz_wz/article/d ...
- 基于MATLAB的Sobel边缘检测算法实现
图像边缘就是图像灰度值突变的地方,也就是图像在该部分的像素值变化速度非常之快,就比如在坐标轴上一条曲线有刚开始的平滑突然来个大转弯,在变化出的导数非常大. Sobel算子主要用作边缘检测,它是一离散型 ...
- Canny边缘检测算法原理及其VC实现详解(二)
3. Canny算法的实现流程 由于本文主要目的在于学习和实现算法,而对于图像读取.视频获取等内容不进行阐述.因此选用OpenCV算法库作为其他功能的实现途径(关于OpenCV的使用,作者将另文表述 ...
- 【算法随记一】Canny边缘检测算法实现和优化分析。
以前的博文大部分都写的非常详细,有很多分析过程,不过写起来确实很累人,一般一篇好的文章要整理个三四天,但是,时间越来越紧张,后续的一些算法可能就以随记的方式,把实现过程的一些比较容易出错和有价值的细节 ...
- 基于fpga的sobel边缘检测
基于fpga的sobel边缘检测,部分的代码参考的是野火正点原子的代码和视频.通过matlab将图片转成txt文件,并编写verilog代码将处理好的数据再转成txt文件,同时通过matlab将txt ...
最新文章
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码]...
- windows组策略实用指南
- MySQL排序查询介绍
- c语言程序设计编程解读,C语言程序设计第三次实验报告解读
- 风控必须了解的报表权限与角色控制
- 抖音自动清关注服务器,各位有保留抖音自动关注的代码吗
- Slurm如何管理和使用节点资源
- jax指标的用法_济安线预警指标?JAX指标?
- 笔记本计算机bios设置,联想笔记本BIOS设置详解
- css多棱柱立体旋转
- torch.nn.Conv2d详解
- 这不是一篇技术型的文章,而是一篇能让你在IT世界中畅游的方法
- 科技爱好者周刊(第 163 期):你的城市有多少张病床?
- 解决“应用程序正常初始化(0x00000005)失败”错误
- QQ空间玩吧HTML5游戏引擎使用比例分析
- OpenStack Blazar 架构解析与功能实践
- 【DaVinci Developer专题】-38-Exclusive Area介绍+配置
- 中国科学技术大学计算机科学夏令营,中国科学技术大学计算机科学2019年推免夏令营通知...
- 差分隐私 深度学习_深度学习中的差异隐私
- 拼多多关键字搜索,拼多多商品列表,根据关键词取商品列表