首页 > 编程语言 >FPGA实现Canny算法(Verilog)

FPGA实现Canny算法(Verilog)

时间:2024-05-09 21:46:11浏览次数:24  
标签:FPGA 检测 边缘 算法 Verilog Canny

在边缘检测算法里面Sobel是比较简单的一个算法,但是其检测出来的边缘往往是比较粗的,效果不是很好,因为我们最理想的边缘肯定就是一个宽度为1的细线。

Canny算法在此基础上进行了改进,通过使用边缘的梯度信息进行非最大值抑制(NMS)和利用双阈值,这些措施消除了假性边缘,提高了边缘检测的效果。

Canny边缘检测分为以下几个部分:

  • 高斯滤波

  • Sobel边缘检测

  • 非最大值抑制

  • 双阈值边缘检测

  • 弱边缘连接

FPGA在实现的时候也是分为以上几个部分:


FPGA仿真结果图:

原图:

Python得到的结果图:

标签:FPGA,检测,边缘,算法,Verilog,Canny
From: https://www.cnblogs.com/A1112day/p/18183118

相关文章

  • SystemVerilog -- 11.1 SystemVerilog Immediate Assertions
    SystemVerilogImmediateAssertionsImmediateAssertions基于模拟事件语义执行,并且需要在过程块中指定。在模拟过程中,它的处理方式与语句中的表达式相同。if如果表达式在执行语句时为true,则ImmediateAssertions将通过,如果表达式的计算结果为false(X、Z或0),则ImmediateAsserti......
  • 零、基于FPGA的贪吃蛇游戏设计概述
    零、基于FPGA的贪吃蛇游戏设计概述1. 代码结构系统模块如图所示:   snake_top.v:顶层模块,例化子模块,连接及与外部信号通信;game_ctrl_unit.v:游戏状态控制模块,控制状态转换和输出;snake.v:控制蛇身运动方向和蛇身增长;appple_generate.v:通过加法产生随机的食物坐标;VGA_ctr......
  • SystemVerilog -- 11.0 Introduction
    SystemVerilogAssertions系统的行为可以写成一个assertion,该assertion在任何时候都应该为真。因此,assertion用于验证定义为属性的系统的行为,也可用于功能覆盖。Whatareproperitiesofadesign?如果assertion检查的设计属性未按预期方式运行,则assertion将失败。例如,假设设......
  • SystemVerilog -- 3.10 SystemVerilog Functions
    SystemVerilogFunctionsSystemVerilog函数具有与Verilog中的function相同的特征。Functionsa的主要用途是返回一个可在表达式中使用且不能消耗模拟时间的值。functionfunction不能具有时间控制语句,如@#forkjoinwaitfunction无法启动task,因为允许task消耗模拟时间。AN......
  • verilog 语义理解
    在verilog使用过程中,产生以下几个问题wire和reg的语义是什么,有什么不同?阻塞赋值和非阻塞赋值的语义是什么?assign和always语义是什么?弄清语义是为了正确的使用,不仅是结果正确,比如有时候可能两种写法得到的结果是一样的但是从语义来看会有一种是更适合当前语境的......
  • Verilog插件:补全模块实例模板
    https://mp.weixin.qq.com/s/tiaXdddID5-hxPtJZOvm8gIntellijIDEA插件VerilogLanguageSupport(插件链接),v2024.2.0版本特性。     https://mp.weixin.qq.com/s/tiaXdddID5-hxPtJZOvm8g ......
  • SystemVerilog -- 3.8 SystemVerilog case
    SystemVerilogcaseSystemVerilog语句检查表达式是否与多个表达式和分支中的一个匹配。该行为与Verilog中的行为相同。caseunique,unique0case所有case语句都可以由or关键字限定,以执行违规检查,就像我们在if-else-if构造中看到的那样。uniqueunique0unique并确保没有重叠的......
  • SystemVerilog -- 3.7 SystemVerilog 'unique' and 'priority' if-else
    SystemVerilog'unique'and'priority'if-else条件语句用于决定是否执行语句。ifelseSystemVerilog引入了一下用于违规检查的构造。ifelseunique-ifunique0-ifpriority-ifunique-if,unique0-ifunique-if按任意顺序评估条件,并执行以下操作:当所有条件都不匹配时,报......
  • SystemVerilog -- 3.6 SystemVerilog 'break' and 'continue'
    breakmoduletb;initialbegin//Thisforloopincrementsifrom0to9andexitfor(inti=0;i<10;i++)begin$display("Iteration[%0d]",i);//Let'screateaconditionsuchthattheforloopexitswheni......
  • SystemVerilog -- 3.5 SystemVerilog repeat
    一组给定的语句可以使用构造执行N次。repeatSyntaxrepeat(<number>)//SingleStatementrepeat(<number>)begin//MultipleStatementsendExample#1moduletb;initialbeginrepeat(5)begin$display("Repeatthisstatement");e......