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

    浏览量

    26604
  • Canny
    +关注

    关注

    0

    文章

    14

    浏览量

    9891

原文标题:Canny

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用6e00系列的芯片,clc计算流程求解?

    的output_value是0x9c38,是0x13870的一半,实际输出是50% ,这个结果似乎与手册给的流程结果不符,是哪里出问题了呢
    发表于 11-09 23:06

    深入解析面向不同市场的多样化Arm计算子系统

    如果你曾基于 Arm 技术开发过产品,很大机会已经感受到了 Arm 计算子系统 (Arm Compute Subsystems, Arm CSS) 所带来的强劲性能。
    的头像 发表于 09-06 14:09 806次阅读
    深入解析面向不同市场的多样化Arm<b class='flag-5'>计算子</b>系统

    CoWoP封装的概念、流程与优势

    本文介绍了CoWoP(Chip‑on‑Wafer‑on‑Substrate)封装的概念、流程与优势。
    的头像 发表于 08-12 10:49 2056次阅读
    CoWoP封装的概念、<b class='flag-5'>流程</b>与优势

    西门子 Veloce CS 助力 Arm Neoverse 计算子系统验证与确认

    西门子数字化工业软件近日宣布,Veloce Strato CS 与Veloce proFPGA CS 已被 Veloce 的长期合作伙伴 Arm 部署应用,作为Arm Neoverse 计算子
    的头像 发表于 08-06 09:26 2541次阅读

    自动化计算机的功能与用途

    工业自动化是指利用自动化计算机来控制工业环境中的流程、机器人和机械,以制造产品或其部件。工业自动化的目的是提高生产率、增加灵活性,并提升制造过程的质量。工业自动化在汽车制造中体现得最为明显,其中许多
    的头像 发表于 07-15 16:32 535次阅读
    自动化<b class='flag-5'>计算</b>机的功能与用途

    进迭时空同构融合RISC-V AI CPU的Triton算子编译器实践

    Pytorch已能做到100%替换CUDA,国内也有智源研究院主导的FlagGems通用算子库试图构建起不依赖CUDA的AI计算生态,截至今日,FlagGems已进入Pyto
    的头像 发表于 07-15 09:04 1346次阅读
    进迭时空同构融合RISC-V AI CPU的Triton<b class='flag-5'>算子</b>编译器实践

    一文看懂芯片的设计流程

    引言:前段时间给大家做了芯片设计的知识铺垫(关于芯片设计的一些基本知识),今天这篇,我们正式介绍芯片设计的具体流程。芯片分为数字芯片、模拟芯片、数模混合芯片等多种类别。不同类别的设计流程也存在一些
    的头像 发表于 07-03 11:37 1854次阅读
    一文看懂芯片的设计<b class='flag-5'>流程</b>

    基于LockAI视觉识别模块:C++轮廓检测

    (); return 0; } 3.3 识别多边形 3.3.1 流程图 3.3.2 核心代码解析 预处理:包括灰度转换、高斯模糊、Canny边缘检测 cv::cvtColor(src, gray, cv
    发表于 05-22 10:05

    CPU的各种指令和执行流程

    在集成电路设计中,CPU的指令是指计算机中央处理单元(CPU)用来执行计算任务的基本操作指令集。这些指令是CPU能够理解并执行的二进制代码,它们在计算机内部由硬件控制并按顺序执行,从而实现计算
    的头像 发表于 04-18 11:24 1930次阅读

    CAN报文流程解析

    CAN报文流程解析,直流充电桩上的CAN通讯解析过程
    发表于 03-24 14:03 10次下载

    研华发布昇腾AI Box及Deepseek R1模型部署流程

    。这一举措标志着研华在AI边缘计算领域迈出了重要一步。 研华边缘AI Box MIC-ATL3S依托昇腾芯片的强大异构计算能力,结合研华在边缘计算领域的高可靠特点,为用户提供了高效、稳定的AI解决方案。该平台支持Deepseek
    的头像 发表于 02-19 10:41 1087次阅读

    研华边缘AI Box MIC-ATL3S部署Deepseek R1模型

    随着深度求索(DeepSeek)大模型的发布引发行业热议,研华科技基于昇腾Atlas平台边缘AI Box MIC-ATL3S正式发布与Deepseek R1模型的部署流程。该平台依托昇腾芯片的强大异构计算能力,结合研华边缘AI Box高可靠特点,通过模型轻量化、
    的头像 发表于 02-14 16:08 2621次阅读
    研华边缘AI Box MIC-ATL3S部署Deepseek R1模型

    NX CAD软件:数字化工作流程解决方案(CAD工作流程)

    NXCAD——数字化工作流程解决方案(CAD工作流程)使用西门子领先的产品设计软件NXCAD加速执行基于工作流程的解决方案。我们在了解行业需求方面累积了多年的经验,并据此针对各个行业的具体需求提供
    的头像 发表于 02-06 18:15 748次阅读
    NX CAD软件:数字化工作<b class='flag-5'>流程</b>解决方案(CAD工作<b class='flag-5'>流程</b>)

    FP8在大模型训练中的应用

    越来越多的技术团队开始使用 FP8 进行大模型训练,这主要因为 FP8 有很多技术优势。比如在新一代的 GPU 上,FP8 相对于 BF16 对矩阵乘算子这样的计算密集型算子,NVIDIA
    的头像 发表于 01-23 09:39 1909次阅读
    FP8在大模型训练中的应用

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

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