PotatoPie 4.0 实验教程(28) —— FPGA实现sobel算子对摄像头图像进行边缘提取

什么是sobel算子?

Sobel 算子是一种常用的边缘检测算子,用于在图像中检测边缘。它基于对图像进行梯度运算,可以帮助识别图像中灰度值变化较大的区域,从而找到图像中的边缘。

Sobel 算子通过计算图像的水平和垂直方向的一阶导数来识别边缘。具体来说,Sobel 算子使用了一个 3×3 的卷积核,分别对图像进行水平和垂直方向上的卷积运算,得到两个梯度图像,即水平梯度图像和垂直梯度图像。然后,将这两个梯度图像合并成一个梯度幅值图像,其中每个像素的幅值表示该点的梯度大小。

Sobel 算子的优点包括简单易实现、计算速度快、对噪声具有一定的抗干扰能力等。因此,它被广泛应用于图像处理中的边缘检测任务,例如目标检测、图像分割、特征提取等。

sobel算子边缘提取的步骤

Sobel 算子边缘提取的步骤如下:

  1. 灰度化: 首先将彩色图像转换为灰度图像。这是因为 Sobel 算子通常应用于灰度图像,因为它更容易处理且计算速度更快。

  2. 计算水平和垂直方向的梯度: 对灰度图像分别应用水平和垂直方向的 Sobel 算子。Sobel 算子使用一个 3×3 的卷积核对图像进行卷积操作,分别得到水平方向上的梯度图像和垂直方向上的梯度图像。

  3. 合并梯度图像: 将水平和垂直方向上的梯度图像合并成一个梯度幅值图像。合并的方法通常是计算每个像素点的梯度幅值,即水平和垂直方向上的梯度的平方和的平方根。

  4. 阈值处理: 对梯度幅值图像进行阈值处理,将梯度幅值大于某个阈值的像素点视为边缘像素,其余像素视为非边缘像素。这一步可以帮助去除噪声并将边缘区域分割出来。

  5. 边缘检测结果: 最终得到的图像即为 Sobel 算子边缘提取的结果,其中白色像素表示边缘像素,黑色像素表示非边缘像素。

总的来说,Sobel 算子边缘提取的步骤包括灰度化、计算梯度、合并梯度图像和阈值处理。这些步骤可以帮助识别图像中的边缘,并将其提取出来。

Sobel 算子

常用的 Sobel 算子是一个 3×3 的卷积核,分别包含水平方向和垂直方向上的两个卷积核。这两个卷积核分别对图像进行水平方向和垂直方向上的卷积运算,从而得到图像的梯度信息。

具体来说,常用的 Sobel 算子如下:

水平方向上的 Sobel 算子:

-1 0 1
-2 0 2
-1 0 1

垂直方向上的 Sobel 算子:

-1  -2   -1
0   0    0
1   2    1

这两个卷积核分别对图像进行水平方向和垂直方向上的卷积运算,得到水平方向和垂直方向上的梯度图像。然后,通过将这两个梯度图像合并,可以得到图像的梯度幅值图像,其中每个像素的幅值表示该点的梯度大小。

python实现运用sobel算子进行边缘提取的源码

PotatoPie 4.0 实验教程(28) —— FPGA实现sobel算子对摄像头图像进行边缘提取-Anlogic-安路论坛-FPGA CPLD-ChipDebug

MATLAB实现运用sobel算子进行边缘提取的源码

PotatoPie 4.0 实验教程(28) —— FPGA实现sobel算子对摄像头图像进行边缘提取-Anlogic-安路论坛-FPGA CPLD-ChipDebug

这段代码实现了读取彩色原图,转换为灰度图,并使用Sobel算子进行边缘检测。最后,它显示了原始彩色图像、原始灰度图像和Sobel边缘检测结果图像。流程如下:

  1. 从指定路径读取名为 “Lena.jpg” 的彩色图像。
  2. 将彩色图像转换为灰度图像。
  3. 使用Sobel算子进行边缘检测,得到边缘强度图像。
  4. 对于每个像素,根据其在Sobel边缘强度图像中的值,确定其是否为边缘。
  5. 将确定为边缘的像素值设置为1,其余像素值设置为0,得到二值化的边缘检测结果图像。
  6. 显示原始彩色图像、原始灰度图像和Sobel边缘检测结果图像,以便进行比较和分析。

效果图

FPGA工程分析

FPGA工程层次图

demo18相比,只是多了一个img_sobel_fltr的模块,也就是下面这一段代码,在从SDRAM读出来之后,经它处理后再输出hdmi_tx模块。

img_sobel_fltr u_sobel(.i_clk(clk_pixel),.i_rst_n(sys_rst_n),.i_hs(VGA_HS),.i_vs(VGA_VS),.i_de(VGA_DE),.i_r(VGA_RGB[23:16]),.i_g(VGA_RGB[15:8] ),.i_b(VGA_RGB[7:0] ),.threshold(8'd148),.o_hs(slobe_hs),.o_vs(slobe_vs),.o_de(slobe_de),.o_r(slobe_data[23:16]),.o_g(slobe_data[15:8] ),.o_b(slobe_data[7:0] ));

img_sobel_fltr模块代码分析

首先例化一个图像缓冲模块,用于将图像从一个时钟一个像素转为一次输出三行三列9个像素。

代码为了简化示例,仅对RGB像素的G通道进行了sobel处理,实际上是需要先对图像滤波(比如高斯滤波滤除白噪声),然后进行灰度化处理,再然后再进行sobel运算,最后依据阈值进行二值化处理。

// 实例化图像缓存模块img_buf u_img_buf (.i_clk(i_clk),.i_rst_n(i_rst_n),.i_de(i_de),.i_data(i_g),.o_de(),.o_p11(g_p11),.o_p12(g_p12),.o_p13(g_p13),.o_p21(g_p21),.o_p22(g_p22),.o_p23(g_p23),.o_p31(g_p31),.o_p32(g_p32),.o_p33(g_p33));

然后对每9个像进行一次soble运算,分别进行X方向和Y方向的计算,在代码中有详细注释讲解sobel运算在FPGA中的实现和优化方法。

最后对代码进行阈值比较,输出二值图

管脚约束

与PotatoPie 4.0 实验教程(18) —— FPGA实现OV5640摄像头采集以SDRAM作为显存进行HDMI输出显示相同,不作赘述。

时序约束

与PotatoPie 4.0 实验教程(18) —— FPGA实现OV5640摄像头采集以SDRAM作为显存进行HDMI输出显示相同,不作赘述。

实验结果图

原图

阈值为189时的边缘提取图

有部分细节丟失了,可以调节阈值参数来恢复。

阈值为149时的边缘提取图

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

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

相关文章

基础SQL DQL语句

基础查询 select * from 表名; 查询所有字段 create table emp(id int comment 编号,workno varchar(10) comment 工号,name varchar(10) comment 姓名,gender char(1) comment 性别,age tinyint unsigned comment 年龄,idcard char(18) comment 身份证号,worka…

本地生活服务平台哪家强,怎么申请成为服务商?

当下,本地生活服务已经成为了多家互联网大厂布局的重要板块,在巨大的市场需求和强大的资本加持下,不少人都看到了本地生活服务平台广阔的前景和收益空间。在此背景下,许多普通人都跃跃欲试,想要成为本地生活服务商&…

ptyhon画图显示中文

import matplotlib.pyplot as plt import matplotlib# 设置中文字体 matplotlib.rcParams[font.sans-serif] [SimHei] matplotlib.rcParams[font.family]sans-serifplt.plot([1, 2, 3, 4]) plt.xlabel(这是x轴) plt.ylabel(这是y轴) plt.title(这是标题) plt.show()用这个代码…

计算机网络知识点

层次模型 IQS七层模型 TCP/IP 原理体系结构 应用层 应用层 应用层 表示层 运输层 运输层 会话层 网际层 网络层 运输层 网络接口层 数…

Bentley二次开发教程27-交互窗口-案例实战1-可视化矩形梁生成工具

为了展现在MicroStation二次开发中使用WinForm界面控件与MicroStation内的数据交互,这里我们使用三个案例进行展示,分别为可视化矩形梁生成工具,EC属性赋值工具与文件选择复制工具。 可视化矩形梁生成工具 该工具会根据用户输入的数据实时…

GAN详解,公式推导解读,详细到每一步的理论推导

在看这一篇文章之前,希望熟悉掌握熵的知识,可看我写的跟熵相关的一篇博客https://blog.csdn.net/m0_59156726/article/details/138128622 1. GAN 原始论文:https://arxiv.org/pdf/1406.2661.pdf 放一张GAN的结构,如下&#xff1…

基于canal监听MySQL binlog实现数据增量同步

一、背景 业务反馈客服消息列表查询速度慢,有时候甚至要差不多20秒,急需优化提升速度。 二、方案 引入 首先,体验系统,发现查询慢的正是消息列表查询接口。 接着去看代码的设计,流程比较长,但从代码逻…

【新知实验室 - TRTC 实践】音视频互动 Demo、即时通信 IM 服务搭建

一、TRTC 初识 TRTC 是什么 TRTC(Tencent RTC)腾讯实时音视频,源自于 QQ 音视频团队,是基于 QQ 音视频多年来的音视频技术积累,位于腾讯云的 RTC 云服务。TRTC 支持腾讯会议、企业微信直播、微信视频号、腾讯云课堂、…

clickhouse安装部署

虚拟机:virtualbox7.0 操作系统:ubuntu server 22.04.3 虚拟机硬件:cpu 1,内存 2G, 硬盘 100G 采用默认安装 参照 https://clickhouse.com/docs/en/install#quick-install 安装部署 对于Debian、Ubuntu&#xff0c…

【漏洞复现】艺创科技智能营销路由器后台命令执行漏洞

漏洞描述: 成都艺创科技有限公司是一家专注于新型网络设备研发、生产、销售和服务的企业,在大数据和云时代,致力于为企业提供能够提升业绩的新型网络设备。 智能营销路由器存在后台命令执行漏洞,攻击者可利用漏洞获取路由器控制…

用NuGet安装 Oracle ODP.NET

oracle官网原文:Using NuGet to Install and Configure Oracle Data Provider for .NET Using NuGet to Install and Configure Oracle Data Provider for .NET In this section, you will install ODP.NET NuGet packages from nuget.org. Select View > Solut…

马赛克,克星,又火一个,懒人包!

在AI技术日新月异的今天,各种边界不断被突破,今天我要给大家带来的,是一款名为InstructIR的革命性AI工具,只需一句话,即可实现高质量图像修改!这不仅仅是一个普通的图像处理工具,而是一种革命性…

【经验分享】MySQL集群部署一:主从模式

目录 前言一、基本介绍1.1、概念1.2、执行流程 二、部署2.1、通用配置2.2、主节点配置2.3、从节点配置2.4、主从测试2.5、谈一谈主节点历史数据同步问题 前言 MySQL的部署模式常见的包括以下几种: 独立服务器部署主从复制部署高可用性集群(HA&#xff…

2024 年最好的免费数据恢复软件,您可以尝试的几个数据恢复软件

由于系统崩溃而丢失数据可能会给用户带来麻烦。我们将重要的宝贵数据和个人数据保存在我们的 PC、笔记本电脑和其他数字设备上。您可能会因分区丢失、意外删除文件和文件夹、格式化硬盘驱动器而丢失数据。数据丢失是不幸的,如果您不小心从系统中删除了文件或数据&am…

远程连接docker,实现本地发布版本到服务器

最近在学jenkins的时候,发现涉及到了docker的远程发布调用。后续应该还要自己搭建一个docker的本地仓库。 简单描述一下具体是如何实现的: 1、将docker的服务器开启2375端口(注意,这里的开启是将端口直接暴露出去,不用…

spring高级篇(四)

1、DispatcherServlet DispatcherServlet 是 Spring MVC 中的一个关键组件,用于处理 Web 请求并将其分发给相应的处理器(Controller)进行处理。它是一个 Servlet,作为前端控制器(Front Controller)的核心&a…

基于深度学习神经网络的AI图片上色DDcolor系统源码

第一步:DDcolor介绍 DDColor 是最新的 SOTA 图像上色算法,能够对输入的黑白图像生成自然生动的彩色结果,使用 UNet 结构的骨干网络和图像解码器分别实现图像特征提取和特征图上采样,并利用 Transformer 结构的颜色解码器完成基于视…

以生命健康为中心的物联网旅居养老运营平台

随着科技的飞速发展和人口老龄化的日益加剧,养老问题逐渐成为社会关注的焦点。传统的养老模式已经难以满足现代老年人的多元化需求,因此,构建一个以生命健康为中心的物联网旅居养老运营平台显得尤为重要。 以生命健康为中心的物联网旅居养老运…

未来已来:解锁AGI的无限潜能与挑战

未来已来:解锁AGI的无限潜能与挑战 引言 假设你有一天醒来,发现你的智能手机不仅提醒你今天的日程,还把你昨晚做的那个奇怪的梦解释了一番,并建议你可能需要减少咖啡摄入量——这不是科幻电影的情节,而是人工通用智能…

本地认证的密码去哪了?怎么保证安全的?

1. windows登录的明文密码,存储过程是怎么样的?密文存在哪个文件下?该文件是否可以打开,并且查看到密文? 系统将输入的明文密码通过hash算法转为哈希值,且输入的值会在内存中立即删除无法查看。 然后将密文存放在C:…