Sobel边缘检测

声明:学习过程中的知识总结,欢迎批评指正。

基本原理

  1. 灰度处理:边缘检测是基于图像亮度变化实现的,而图像的亮度信息通过灰度图像体现,因此需要把彩色图像转换成灰度图像。
  2. 平滑处理:可以使用高斯滤波等滤波算法将图像中的噪声去除,使图像的信息更加纯粹,便于检测边缘信息。
  3. 计算梯度:使用Sobel算子计算图像的梯度,包括水平方向的算子Gx和垂直方向的算子Gy,分别用于检测水平方向和垂直方向的边缘。
  4. 计算梯度幅度和方向:对于每个像素,根据其水平方向和垂直方向的梯度值,计算梯度幅度和方向。梯度幅度通常使用以下公式计算:,梯度方向通常使用以下公式计算:
  5. 非极大值抑制:为了得到细的边缘,使用非极大值抑制处理梯度幅度图像。对于每个像素,如果其梯度幅度不是其邻域内沿梯度方向的最大值,则将其梯度幅度设为0。
  6. 双阈值处理:为了分离出真正的边缘,使用双阈值处理梯度幅度图像。选择两个阈值:高阈值和低阈值。对于每个像素,如果其梯度幅度大于高阈值,则认为它是边缘;如果其梯度幅度小于低阈值,则认为它不是边缘;如果其梯度幅度在两个阈值之间,则只有当它连接到一个边缘像素时,才认为它是边缘。

具体实现过程

灰度处理

不同的标准对应的RGB转灰度公式是不一样的,这里选用NTSC(National Television System Committee, 美国国家电视系统委员会)标准中的RGB888转YCbCr公式,这是目前中国乃至世界范围内使用最广泛的标准,具体公式如下:

Y = 0.299R +0.587G + 0.114B

Cb = 0.568(B-Y) + 128 = -0.172R-0.339G + 0.511B + 128

CR = 0.713(R-Y) + 128 = 0.511R-0.428G -0.083B + 128

由于FPGA无法处理浮点数,所以通过加法和移位来实现这一过程,具体公式如下:

Y = (77 R + 150G + 29 *B)>>8

Cb = (-43*R - 85 G + 128B)>>8 + 128

Cr = (128R - 107G - 21 *B)>>8 + 128

Y = (77 R + 150G + 29 *B )>>8

Cb = (-43*R - 85 G + 128B + 32768)>>8

Cr = (128R - 107G - 21 *B + 32768)>>8

平滑处理

对于图像的滤波有均值滤波、中值滤波和高斯滤波等多种滤波方式,其主要目的是增强图像的某些特性或消除某些不需要的信息。基本上都可以理解成是通过卷积实现的,这里以高斯滤波为例。

将图像中每个像素的颜色值替换为其邻域内像素颜色值的加权平均。这个权重由高斯函数决定,距离中心像素越近的像素权重越大,距离中心像素越远的像素权重越小。这样可以保证中心像素的颜色值最大程度地保留下来,而周围像素的颜色值则对其有所影响,从而达到模糊的效果。在实际应用中,通常会选择一个大小为 𝑛×𝑛 的窗口(其中 𝑛n是奇数),然后计算窗口内每个位置的高斯权重,形成一个高斯核。然后,这个高斯核会在图像上滑动,对每个像素及其邻域进行卷积操作,得到模糊后的图像。其中高斯核,是利用 高斯函数​ 生成的,3×3高斯核生成过程如下:

​卷积的实现过程如下:

这里借用其他博主的gif显示动画,有水印。

梯度值和方向计算

使用Gx和Gy两个卷积核分别对图像进行卷积,分别得出横向及纵向的亮度差分近似值,卷积过程与上面描述的高斯滤波卷积过程类似,不赘述。

关于梯度值的计算,在FPGA中乘法和开方消耗硬件逻辑资源较多,因此通常采用绝对值求和进行代替,即|G|=|Gx|+|Gy|。

关于梯度方向的计算,在FPGA中通过Cordic模块或者ip核进行实现,即通过移位和加法的操作实现角度计算。

非极大值抑制

非极大值抑制(Non-Maximum Suppression,简称NMS)是边缘检测中的一个重要步骤,它的主要目的是将边缘细化,即减少边缘的宽度。

在进行边缘检测时,检测出的边缘通常不是一个像素的宽度,而是有一定宽度的。这是因为实际的图像边缘往往并不是理想的锐利边缘,而是在过渡区域内灰度值发生渐变,因此检测出的边缘会有一定的宽度。非极大值抑制的目的就是为了解决这个问题。它的基本思想是在边缘检测得到的梯度图像中,对每一个像素,检查其是否是其所在梯度方向上的局部最大值。如果是,则保留;如果不是,则将其值抑制(通常设置为0),从而实现边缘的细化。

来自chatgpt4的举例:

双阈值处理

在进行了梯度计算和非极大值抑制后,我们得到的边缘图像可能还包含一些噪声和不明显的边缘。为了只保留真正的边缘并去除噪声,我们需要进行双阈值处理。

双阈值处理的思想是设置两个阈值:高阈值和低阈值。对于梯度幅度图像中的每一个像素:

  • 如果像素的强度大于高阈值,那么我们认为它是一个强边缘像素,直接标记为边缘。
  • 如果像素的强度小于低阈值,那么我们认为它不是边缘,将其抑制(通常设置为0)。
  • 如果像素的强度在两个阈值之间,我们则将其标记为弱边缘像素。这些像素可能是边缘,也可能是噪声。为了确定它们是否真正是边缘,我们会检查它们的邻域。如果弱边缘像素的邻域内有强边缘像素,我们就认为这个弱边缘像素是真正的边缘,因为它可能是边缘的一部分。否则,我们将其抑制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/350336.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SUSTAINABILITY,SCIESSCI双检期刊还能投吗?

本期,小编给大家介绍的是一本MDPI出版社旗下SCIE&SSCI双检“毕业神刊”——SUSTAINABILITY。据悉,早在2024年1月,ElSEVIER旗下的Scopus数据库已暂停收录检索期刊SUSTAINABILITY所发表文章,同时重新评估是否继续收录该期刊。随…

【数据结构】——常见排序

文章目录 一、 冒泡排序二、 选择排序三、插入排序四、 快速排序1. hoare版本2. 优化版本3. 前后指针法4. 非递归版本 五、 堆排序六、 希尔排序七、 归并排序1. 递归版本2. 非递归版本 八、 计数排序 在开始之前先准备一个交换数据的函数,排序会经常用到 //交换位置…

【博士每天一篇文献-算法】Progressive Neural Networks

阅读时间:2023-12-12 1 介绍 年份:2016 作者:Andrei A. Rusu,Neil Rabinowitz,Guillaume Desjardins,DeepMind 研究科学家,也都是EWC(Overcoming catastrophic forgetting in neural networks)算法的共同作者。 期刊: 未录用&am…

Nginx配置详细解释:(6)实现反向代理服务器,动静分离,负载均衡

目录 单台反向代理 proxy_pass后面加不加/的问题: 反向代理动静分离 反向代理负载均衡 作为代理服务器是当客户端访问代理服务器时,代理服务器代理客户端去访问真实web服务器。proxy_pass; 用来设置将客户端请求转发给的后端服务器的主机。 需要模块…

【Unity学习笔记】第十八 基于物理引擎的日月地系统简单实现

转载请注明出处: https://blog.csdn.net/weixin_44013533/article/details/139701843 作者:CSDN|Ringleader| 目录 目标数学理论资源准备数据准备代码实现Unity准备效果展示注意事项后记 目标 目标:利用Unity的物理引擎实现 “日地月三体系统” 。 效果…

UC Berkeley简介以及和Stanford的区别与联系

UC Berkeley Source: Google Map 中文版 UC Berkeley,全称University of California, Berkeley,是一所位于美国加利福尼亚州伯克利市的世界知名公立研究型大学。以下是关于UC Berkeley的详细介绍: 学术声誉和排名 学术声誉: U…

VisionOS的未来愿景:苹果VisionPro创业者的愿望清单

随着苹果公司在增强现实(AR)领域的不断探索,VisionPro作为其前沿产品,已经开始展现出改变我们与数字世界互动方式的潜力。作为一名VisionPro创业者,对未来VisionOS的更新充满了期待,并提出了一系列愿望清单,这些愿望不仅代表了个人的需求,也反映了用户社区对苹果AR生态的…

LaDM3IL:多实例学习用于免疫库分类

一个人的免疫组库由某一时间点的大量适应性免疫受体组成,代表了该个体的适应性免疫状态。免疫组库分类和相关受体识别有可能为新型疫苗的开发做出贡献。大量的实例对免疫组库分类提出了挑战,这可以表述为大规模多实例学习 (MMIL,Massive Mult…

自动驾驶场景下TCP协议参数优化调整案例分享

RTT 往返时间,从tcp协议栈决定发包,到收到回包的时间。 包含本地驱动,网卡硬件,网线,交换机,收包方处理的耗时。需注意如果开了delayed ack,协议栈未做特殊处理(默认没做&#xff…

Photoshop中颜色与色调的调整

Photoshop中颜色与色调的调整 Photoshop中的颜色模式RGB模式灰度模式位图模式索引模式CMYK模式Lab模式 Photoshop中的颜色/色调调整命令颜色/色调调整命令的分类亮度/对比度调整命令色阶命令曲线命令曝光度命令自然饱和度命令色相/饱和度命令色彩平衡命令照片滤镜调整命令通道混…

LLVM Cpu0 新后端10

想好好熟悉一下llvm开发一个新后端都要干什么,于是参考了老师的系列文章: LLVM 后端实践笔记 代码在这里(还没来得及准备,先用网盘暂存一下): 链接: https://pan.baidu.com/s/1yLAtXs9XwtyEzYSlDCSlqw?…

[RL9] Rocky Linux 9.4 搭载 PG 16.1

副标题:Rocky Linux 9.4 升级实录,及 PG 16 相关内容 背景 Rocky Linux 9.4 (以下简称 RL) 于5月9日正式发布,本文记录了从 RL 9.3 升级到 9.4 的过程,以及升级前后的一些变化。 之前介绍过 RL 9 的相关内容,请戳&…

windows环境如何运行python/java后台服务器进程而不显示控制台窗口

1.通常我们在windows环境下使用Java或Python语言编写服务器程序,都希望他在后台运行,不要显示黑乎乎的控制台窗口: 2.有人写了一个bat文件: cd /d D:\lottery\server && python .\main.py 放到了开机自启动里,可是开机的…

MT2093 活动安排

贪心策略&#xff1a; 每次选择结束时间最早的活动 代码&#xff1a; #include <bits/stdc.h> using namespace std; const int N 5e5 10; int n; struct pp {int a, b; } p[N]; bool cmp(pp x, pp y) {return x.b < y.b; } int ans 0;int main() {cin >>…

数据结构(DS)学习笔记(二):数据类型与抽象数据类型

参考教材&#xff1a;数据结构C语言版&#xff08;严蔚敏&#xff0c;吴伟民编著&#xff09; 工具&#xff1a;XMind、幕布、公式编译器 正在备考&#xff0c;结合自身空闲时间&#xff0c;不定时更新&#xff0c;会在里面加入一些真题帮助理解数据结构 目录 1.1数据…

学习资料分析

学习资料分析 速算运算 √截位直除分数比较等比修正其他速算方法基期与现期基本概念求基期求现期增长率与增长量增长相关统计术语求一般增长率比较一般增长率增长量比重比重相关公式求比重平均数倍数间隔增长乘积增长率年增长率混合增长率资料分析:主要测查报考者对文字、数字…

【数据的增值之路】全生命周期的数据演化过程

引言&#xff1a;随着云计算、大数据、人工智能、区块链等新一代信息技术的快速发展&#xff0c;数据已经成为推动经济增长的重要生产要素。数据量的爆炸式增长&#xff0c;为挖掘数据价值、推动数字经济发展提供了丰富的资源基础。重要概念解析&#xff1a; 数据经济&#xf…

Elasticsearch + Mongodb实现海量数据的检索

1. ES用来检索关键字&#xff08;分词&#xff09;的获得文档id 2.文档存储在分布式存储数据库Mongodb

企业化运维(3)_PHP、nginx结合php-fpm、memcache、openresty、goaccess日志可视化

###1.PHP源码编译### 解压PHP压缩包&#xff0c;切入PHP目录&#xff0c;进行configure-->make-->make installd三部曲 [rootserver1 ~]# yum install -y bzip2 systemd-devel libxml2-devel sqlite-devel libpng-devel libcurl-devel ##依赖性 [rootserver1 ~]# yum…

找我设计官网的不多了,看到漂亮大气的,还是忍不住分享出来。

现在有客户找我做官网设计&#xff0c;我说&#xff1a;要么搞个高大上个性化定制的&#xff0c;要么就选个模板得了&#xff0c;几千元的网站不上不下&#xff0c;不如不做。 分享一批高大上的网站给老铁们看看。