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

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

3天内不再提示

Canny图像算法仿真验证原理与实现

FPGA自习室 来源:FPGA自习室 作者:FPGA自习室 2021-10-15 09:10 次阅读

先读为快,以结果为导向,本期介绍Canny图像算法仿真验证,后续将介绍canny算法原理与实现,欢迎持续关注,公众号设置星标,不错过每一次推送~

一、简要说明

1.1 算法流程

Canny边缘检测是一种非常流行的边缘检测算法,是John Canny在1986年提出的。它是一个多阶段的算法,即由多个步骤构成:图像降噪、计算图像梯度、非极大值抑制。

第一步,图像降噪。我们知道梯度算子可以用于增强图像,本质上是通过增强边缘轮廓来实现的,也就是说是可以检测到边缘的。但是,它们受噪声的影响都很大。那么,我们第一步就是想到要先去除噪声,因为噪声就是灰度变化很大的地方,所以容易被识别为伪边缘。

第二步,计算图像梯度,得到可能边缘。我们在前面的关于《图像梯度》文章中有所介绍,计算图像梯度能够得到图像的边缘,因为梯度是灰度变化明显的地方,而边缘也是灰度变化明显的地方。当然这一步只能得到可能的边缘。因为灰度变化的地方可能是边缘,也可能不是边缘。这一步就有了所有可能是边缘的集合。

第三步,非极大值抑制。通常灰度变化的地方都比较集中,将局部范围内的梯度方向上,灰度变化最大的保留下来,其它的不保留,这样可以剔除掉一大部分的点。将有多个像素宽的边缘变成一个单像素宽的边缘。即“胖边缘”变成“瘦边缘”。

第四步,双阈值筛选。通过非极大值抑制后,仍然有很多的可能边缘点,进一步的设置一个双阈值,即低阈值(low),高阈值(high)。灰度变化大于high的,设置为强边缘像素,低于low的,剔除。在low和high之间的设置为弱边缘。进一步判断,如果其领域内有强边缘像素,保留,如果没有,剔除。

这样做的目的是只保留强边缘轮廓的话,有些边缘可能不闭合,需要从满足low和high之间的点进行补充,使得边缘尽可能的闭合。

参考文章:https://blog.csdn.net/likezhaobin/article/details/6892176

1.2 验证流程:

搭建一个视频流Modelsim仿真,在基于FPGA视频图像算法开发过程中,最终目的是为了把摄像头实时视频数据经过一系列的图像算法,通过显示设备显示出来;在开发过程中,我们不能总是在FPGA板子上在线调试,一个是耗时时间长;另一个是不容易找出错误,因此,有必要模拟一个视频时序,用来验证算法,并有效的利用Matlab工具把静态图片“打散”保存到txt文本里,供Modesim读取,然后通过Matalb“复现”处理后的文本。

二、操作步骤

第一步:获取图像

截取len图片,格式为bmp

这里使用上张len图设置了一种分辨率 640X480,如果不是,这里可用画图软件打开图片可以修改分辨率。

第二步:Matlab产成图像

my_image_gen.m 读取的len.bmp的彩色图像,matlab运行后,将使用matlab函数灰度化的灰度图像数据写进,image_data.txt。

第三步:Modelsim仿真路径设置

仿真工程打开的正确方式:

方法1:保证仿真工程正常打开,解压后文件需要 放在新建和原路径一样的路径。

方法2:不需要新建相同路径,需要文本打开并修改仿真工程里的 *.mpf 绝对路径。

方法3:使用自动仿真脚本。

第四步:开始仿真

1) 打开modelsim 仿真工程,找到work

2)然后找到tb_image_canny功程名,右键 simmulate 到仿真页面

3)最后点击黄色按键,全速仿真,结束会自动停止。

第五步:matlab 查看图像

上一步仿真结果会出现三个txt文件:canny_data.txt 、Gs_data_out.txt、sobel_data_out.txt

直接运行my_image_show.m 即可

责任编辑:haq

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

    关注

    50

    文章

    3872

    浏览量

    132143
  • 图像
    +关注

    关注

    2

    文章

    1063

    浏览量

    40034
  • Verilog
    +关注

    关注

    28

    文章

    1325

    浏览量

    109293

原文标题:基于Verilog的Canny图像算法仿真

文章出处:【微信号:FPGA_Study,微信公众号:FPGA自习室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA图像处理之CLAHE算法

    在FPGA图像处理--CLAHE算法(一)中介绍了为啥要用CLAHE算法来做图像增强。
    的头像 发表于 01-04 12:23 1465次阅读
    FPGA<b class='flag-5'>图像</b>处理之CLAHE<b class='flag-5'>算法</b>

    国产嵌入式实验箱操作教程_创龙教仪:5-12 边缘检测(LCD显示)

    一、实验目的 学习Canny边缘检测的原理,掌握图像的读取方法,并实现在LCD上显示边缘检测前后的图像。 二、实验原理 边缘检测 在数字图像
    发表于 12-14 14:09

    Canny双阈值边缘检测和弱边缘连接详解

    在上一篇FPGA图像处理--Canny边缘检测(一)里介绍了Canny边缘检测的NMS计算,这里就介绍一下双阈值边缘检测和弱边缘连接。
    的头像 发表于 11-18 17:07 996次阅读

    python中用Canny边缘检测和霍夫变实现车道线检测方法

    Canny边缘检测+霍夫变换 颜色阈值+图像掩模的方法虽然简单,但是只能应对一些固定颜色车道线的场景。图像像素受光照影响将是一个极其常见的问题。 canny边缘检测+霍夫变换是另外一种
    的头像 发表于 11-17 16:55 293次阅读
    python中用<b class='flag-5'>Canny</b>边缘检测和霍夫变<b class='flag-5'>实现</b>车道线检测方法

    以下是一个简单的OpenCV矩形检测代码示例,其中包括了Canny边缘检测和approxPolyDP多边形拟合的步骤

    读取图像img = cv2.imread(\'image.jpg\')# 转换为灰度图像gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# Canny边缘检测
    发表于 11-01 09:28

    基于DTW算法语音识别系统仿真及DSP实现

    电子发烧友网站提供《基于DTW算法语音识别系统仿真及DSP实现.pdf》资料免费下载
    发表于 10-08 11:52 0次下载
    基于DTW<b class='flag-5'>算法</b>语音识别系统<b class='flag-5'>仿真</b>及DSP<b class='flag-5'>实现</b>

    如何使用Verilog语言进行仿真验证

    仿真验证主要作用是搭建一个测试平台,测试和验证程序设计的正确性,验证设计是否实现了我们所预期的功能。其结构如下图所示。
    的头像 发表于 10-02 16:29 836次阅读
    如何使用Verilog语言进行<b class='flag-5'>仿真</b><b class='flag-5'>验证</b>

    芯片设计中逻辑仿真和数字验证介绍

    芯片设计的逻辑仿真和数字验证是芯片设计流程中非常重要的一环,它主要用于验证芯片的功能和时序等方面的正确性。下面是逻辑仿真和数字验证的一般流程
    的头像 发表于 09-14 17:11 771次阅读

    FPGA图像处理算法有哪些

    早之前的朋友知道我发过一个用chatgpt分析出来的 FPGA图像处理的知识树,里面包含了从色域,镜头,接口和算法。然后我就发现这个算法部分chatgpt 给我整理的比较乱,查询了一番,确实发现
    的头像 发表于 09-12 09:59 606次阅读
    FPGA<b class='flag-5'>图像</b>处理<b class='flag-5'>算法</b>有哪些

    基于FPGA的速率自适应图像抽取算法

    方法,适用于深空探测航天器载荷自主管理和可视化应用。通过图像帧识别、指针管理和数据筛选实现图像抽帧回放算法,具有图像完整、实时,速率自适应的
    的头像 发表于 08-05 10:35 488次阅读
    基于FPGA的速率自适应<b class='flag-5'>图像</b>抽取<b class='flag-5'>算法</b>

    什么是形式验证(Formal验证)?Formal是怎么实现的呢?

    相信很多人已经接触过验证。如我以前有篇文章所写验证分为IP验证,FPGA验证,SOC验证和CPU验证
    的头像 发表于 07-21 09:53 5233次阅读
    什么是形式<b class='flag-5'>验证</b>(Formal<b class='flag-5'>验证</b>)?Formal是怎么<b class='flag-5'>实现</b>的呢?

    遗传算法的基本原理 基于遗传算法图像分割

    来确定分割阈值。图像分割是图像处理技术的研究对象之一,它对于图像特征提取、图像识别等图像处理技术等有着重要意义。主要研究基于遗传
    发表于 07-18 16:04 1次下载

    软件仿真、硬件仿真、原型验证是如何工作的?

    面对复杂的设计代码,我们如何确保其准确性?功能验证就是这场战斗的关键过程。工程师们通常使用的验证方法包括软件仿真、硬件仿真和原型验证等。这些
    的头像 发表于 06-11 14:24 530次阅读
    软件<b class='flag-5'>仿真</b>、硬件<b class='flag-5'>仿真</b>、原型<b class='flag-5'>验证</b>是如何工作的?

    求一种FPGA实现图像去雾的实现设计方案

    本文详细描述了FPGA实现图像去雾的实现设计方案,采用暗通道先验算法实现,并利用verilog并行执行的特点对
    发表于 06-05 17:01 893次阅读
    求一种FPGA<b class='flag-5'>实现</b><b class='flag-5'>图像</b>去雾的<b class='flag-5'>实现</b>设计方案

    基2FFT的verilog代码实现仿真

    上文基2FFT的算法推导及python仿真推导了基2FFT的公式,并通过python做了算法验证,本文使用verilog实现8点基2FFT的
    的头像 发表于 06-02 12:38 684次阅读
    基2FFT的verilog代码<b class='flag-5'>实现</b>及<b class='flag-5'>仿真</b>