0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Canny算子计算流程

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-07-04 09:31 次阅读

Canny算子计算流程:

高斯滤波和Sobel算子已经在前面讲过,所以这里主要讨论非最大值抑制和滞后分割电路设计

非最大值一直电路设计

非最大值抑制主要是对Sobel运算的计算结果进行开窗,在当前像素的3x3邻域找到梯度方向上的最大值,若当前像素为整个方向上的最大值,则将该像素点归为潜在的边缘点。否则,直接置为非边缘点。

9eb2f532-fb2e-11ec-ba43-dac502259ad0.jpg

我们首先要明白当前像素的梯度值位于哪一个象限,假定其位于第一象限,则有

9ecc15b2-fb2e-11ec-ba43-dac502259ad0.png

假定该点计算结果为result,则有

9eea5784-fb2e-11ec-ba43-dac502259ad0.png

不妨再列出第二象限的计算公式

9eff2e7a-fb2e-11ec-ba43-dac502259ad0.png

9f0ff606-fb2e-11ec-ba43-dac502259ad0.png

设计的难点在于梯度方向上两个潜在极大值的插值运算f算子。有两点值得我们注意:

1)f算子中包含除法,这是在FPGA中不容易处理的。

2)前两个象限的除法运算的分子和分母是颠倒的,这是不容易设计的。

所以就需要进行算法的等效转换,首先想到的就是将除法转换为乘法运算,这个是比较容易实现的,以第一象限公式为例,两边同时乘以x,则有

9f274388-fb2e-11ec-ba43-dac502259ad0.png

9f38b99c-fb2e-11ec-ba43-dac502259ad0.png

对于第二象限,两边同时乘以y,则有

9f4fa10c-fb2e-11ec-ba43-dac502259ad0.png

9f274388-fb2e-11ec-ba43-dac502259ad0.png

不等式右边第一项系数为当前x与y方向梯度值的较小值,第二项系数为当前x与y方向梯度的较大值与较小值之差,不等式左边系数为当前x与y方向梯度值的较大值。因此,将公式变换如下:

9f82378e-fb2e-11ec-ba43-dac502259ad0.png

9f9200e2-fb2e-11ec-ba43-dac502259ad0.png

上式中,Mmax代表当前x与y方向梯度值的较大值,Mmin代表当前x与y方向梯度值的较小值。C0,C1,C2,C3,则分别代表4个插值元素。对于8个不同的象限,插值元素的索引号如下表所示:

Index of C0 Index of C1 Index of C2 Index of C3
第1,5象限 2 5 6 3
第2,6象限 2 1 6 7
第3,7象限 0 1 8 7
第4,8象限 0 3 8 5

这样,就可以实现4个主象限的计算一致性,同时将转换为FPGA所擅长的乘法和加法运算。

在查表得到插值元素时,需要知道当前的象限信息,得到象限信息的最简单办法就是通过查询x与y方向梯度值的符号。同时,需要得到两个值的比较关系。需要注意的是,我们需要Sobel运算结果的x与y方向的输出,以及模值输出,实际上并不需要方向计算。

第一阶段的计算电路如图所示:

9faa1916-fb2e-11ec-ba43-dac502259ad0.jpg

首先将Sobel的x和y方向的计算结果通过Cordic模块输出两个值的绝对值的较大值Max和较小值Min,以及输入坐标的象限信息Quadrant_info。接着为了得到当前像素的8个插值元素,即当前窗口,我们需要将上面三个数据及Sobel的模值结果Mudule送入win_buf得到窗口缓存。我们需要的是当前窗口的9个元素Mudule(8:0),以及上面三个数据的当前值Max(4),Min(4),Quadrant_info(4)。

第二阶段的计算电路如图所示:

9fc22236-fb2e-11ec-ba43-dac502259ad0.jpg

第二阶段的计算将象限信息和当前窗口像素送入查找表,由查找表电路得到C0,C1,C2,C3输出。然后在此基础上做f算子,得到的结果与中心窗口值与Max的乘积进行比较。最后,在比较的结果上进行分割。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 运算
    +关注

    关注

    0

    文章

    132

    浏览量

    25868
  • Canny
    +关注

    关注

    0

    文章

    14

    浏览量

    9717

原文标题:Canny

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV

    图像中的特征或者创建掩码。 边缘检测 Canny 边缘检测 (cv2.Canny) 或 Sobel 操作符 (cv2.Sobel)。 目的:检测图像中物体的边界,是很多高级计算机视觉任务的基础步骤
    发表于 12-14 09:31

    乌镇亮点 Arm终端计算子系统 (CSS) 荣膺世界互联网大会领先科技奖

    2024 年世界互联网大会乌镇峰会于昨日正式启幕,全球互联网进入“乌镇时间”。在今年的峰会上,Arm 凭借终端计算子系统 (CSS) 荣膺世界互联网大会领先科技奖,彰显了 Arm 作为业界性能最强
    的头像 发表于 11-20 19:11 614次阅读
    乌镇亮点  Arm终端<b class='flag-5'>计算子</b>系统 (CSS) 荣膺世界互联网大会领先科技奖

    利用VLIB在TMS320C64x/64x+上实现Canny边缘检测

    电子发烧友网站提供《利用VLIB在TMS320C64x/64x+上实现Canny边缘检测.pdf》资料免费下载
    发表于 10-14 11:13 0次下载
    利用VLIB在TMS320C64x/64x+上实现<b class='flag-5'>Canny</b>边缘检测

    基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图

    和 DSP5509 相匹配的接口电路,确保图像数据的正确传输和显示。常见的接口有 RGB、LVDS 等。 五、Sobel 算子计算模块设计 硬件加速:可以考虑使用硬件加速器来加速 Sobel 算子
    发表于 09-25 15:25

    摩尔线程携手智源研究院完成基于Triton的大模型算子库适配

    近日,摩尔线程与北京智源人工智能研究院(简称:智源研究院)已顺利完成基于Triton语言的高性能算子库FlagGems的适配工作。得益于摩尔线程自研统一系统计算架构MUSA,双方在短短一周多的时间
    的头像 发表于 08-02 11:06 1013次阅读

    边缘计算物联网关如何优化数据处理流程

    展现出非凡的潜力。本文将聚焦于边缘计算物联网关如何优化数据处理流程,深入探讨其技术原理、应用优势及未来发展趋势。 一、边缘计算物联网关概述 边缘计算物联网关,简而言之,是位于物联网设备
    的头像 发表于 07-30 17:27 526次阅读
    边缘<b class='flag-5'>计算</b>物联网关如何优化数据处理<b class='flag-5'>流程</b>

    DSP国产教学实验箱_实验案例_操作教程:5-11 边缘检测

    = f ‘(x) dx。 Canny 边缘检测 Canny边缘检测是从不同视觉对象中提取有用的结构信息并大大减少要处理的数据量的一种技术,目前已广泛应用于各种计算机视觉系统。边缘检测的一般标准
    发表于 07-19 10:38

    【《计算》阅读体验】量子计算

    状态不同,量子比特(qubi可以是1和0的叠加态,既是1又是0,这就增强了量子计算计算能力。 量子优势 采用矩阵可以描述量子计算算子。 对应于经典图灵机,量子图灵机将
    发表于 07-13 22:15

    Spark基于DPU的Native引擎算子卸载方案

    1.背景介绍 Apache Spark(以下简称Spark)是一个开源的分布式计算框架,由UC Berkeley AMP Lab开发,可用于批处理、交互式查询(Spark SQL)、实时流处理
    的头像 发表于 06-28 17:12 776次阅读
    Spark基于DPU的Native引擎<b class='flag-5'>算子</b>卸载方案

    芯品# 高性能计算芯片

    (LSE:AWE)是全球技术基础设施高速连接和计算芯片的全球领导者,与Arm合作开发基于Arm ® Neoverse™计算子系统(CSS)的高级计算芯片,用于人工智能/机器学习(AI/ML),高性能
    的头像 发表于 06-27 10:28 7078次阅读

    ClickHouse内幕(3)基于索引的查询优化

    ,内存代价高;2.算子计算代价高;3.算子会阻断执行pipeline,待所有数据计算完整后才会向下游输出数据
    的头像 发表于 06-11 10:46 1099次阅读
    ClickHouse内幕(3)基于索引的查询优化

    Arm发布全新终端计算子系统,加速AI体验与产品上市

    全球领先的半导体知识产权(IP)提供商Arm控股有限公司(纳斯达克股票代码:ARM)今日正式推出全新的Arm终端计算子系统(CSS),以推动人工智能(AI)体验的前沿发展,并助力芯片合作伙伴在构建基于Arm架构的解决方案时实现更高效、更快速的流程,从而加速产品上市。
    的头像 发表于 05-30 14:23 639次阅读

    Arm宣布推出终端计算子系统(CSS),提供领先的人工智能体验

    Arm 控股有限公司(纳斯达克股票代码:ARM,以下简称“Arm”)今日宣布推出 Arm® 终端计算子系统 (CSS),以提供领先的人工智能 (AI) 体验,助力芯片合作伙伴更轻松、快速地构建基于 Arm 架构的解决方案,并加速其产品上市进程。
    的头像 发表于 05-30 14:11 1324次阅读
    Arm宣布推出终端<b class='flag-5'>计算子</b>系统(CSS),提供领先的人工智能体验

    存内计算WTM2101编译工具链 资料

    存内计算是突破物理极限的下一代算力技术- AIGC等人工智能新兴产业的快速发展离不开算力,算力的基础是人工智能芯片。 当前CPU/GPU在执行计算密集型任务时需要将海量参数(ωij)从内存中读取
    发表于 05-16 16:33

    Arm新Arm Neoverse计算子系统(CSS):Arm Neoverse CSS V3和Arm Neoverse CSS N3

    Arm宣布了两款新的Arm Neoverse计算子系统(CSS),它们基于“迄今为止最好的一代Neoverse技术”。是什么让这些新产品在拥挤的计算技术领域脱颖而出? Arm的两个新Arm
    的头像 发表于 04-24 17:53 1211次阅读
    Arm新Arm Neoverse<b class='flag-5'>计算子</b>系统(CSS):Arm Neoverse CSS V3和Arm Neoverse CSS N3