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

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

3天内不再提示

形态学滤波算法的FPGA硬件实现

FPGA自习室 来源:FPGA自习室 作者:FPGA自习室 2021-03-03 10:20 次阅读

一、背景介绍

基于二值图像的滤波算法即形态学滤波,在图像目标采集的预处理中经常被使用到,针对不同的使用场景涉及到腐蚀、膨胀、开闭运算等处理。实际使用中对于不同的分辨率大小以及模板窗口大小,都要进行代码的修改去适应不同的场景,特别是模板窗口比较大时,代码改写工作量就很大。因此,为了减少开发时间,本文实现了一个通用的算法IP,只需要修改模板窗口大小和工作模式(腐蚀or膨胀)参数即可,达到“自适应”目的,避免重复低效的工作。

二、形态学滤波原理

形态学滤波由腐蚀和膨胀两种操作组成。首先,腐蚀(Erosion)的核心思想是图像像素之间进行逻辑与运算,简单来说,当一个包含当前像素的结构单元的像素值都为“1”时输出待处理的的目标像素。

若采用窗口实现腐蚀操作,如图2.1所示:

图2.1腐蚀效果示意图

腐蚀的作用:在形态学中的腐蚀可以去除图像中的物体边界点,清除图像中比结构元素小的毛刺或者小突起,此外,结构元素越大,腐蚀的面积就越大。所以,可以使用腐蚀运算操作小区域的非目标区域区分。

膨胀的核心思想是像素之间进行逻辑或运算,也就是说每个输入像素在输出图像中被替换成结构单元的形状。当结构单元中任何一个像素的灰度值为“1”时,那么输出窗口内的像素都为“1”,此时输出待处理的目标像素。公式可以表示为:

若采用窗口实现膨胀操作,如图2.2所示:

图2.2膨胀效果示意图

膨胀的作用:膨胀运算可以填充图像中小于结构元素的孔洞以及图像边缘部分的一些小凹陷。对于目标区域腐蚀后再膨胀操作就是所谓的开运算。对所选定的目标区域先进行膨胀操作然后再进行腐蚀操作就是所谓的闭运算。

三、FPGA硬件实现

形态学滤波算法的FPGA硬件实现原理图,如下图所示。算法的输入输出接口信号采用标准的 VGA时序接口,即行场信号、数据和数据使能信号。算法模板输入参数主要有两个,Win_SIZE 表示窗口大小,WORK_MODE 表示工作在腐蚀还是膨胀模式,根据需要配置自己想要的模板大小和工作模式。

由于行缓存是基于RAM的实现的,本文设计的ram的规格大小是为2048x15,

深度2048 表示支持的最大分辨率,数据位宽为15bit表示支持的最大的模板窗口大小为15x15,也可以根据需要修改ram规格,其他逻辑不需要改动。

最后,需要开运算或者闭运算时,只需要把两个算法IP串联起来,配置不同的参数即可。

四、仿真验证

本节主要搭建一个视频流Modelsim仿真平台,在基于FPGA视频图像算法开发过程中,有必要模拟一个视频时序,用来验证算法,并有效的利用Matlab工具把静态图片“打散”保存到txt文本里,供Modesim读取,然后通过Matalb“复现”处理后的文本。

3x3腐蚀仿真结果:

9x9腐蚀仿真结果:

5x5膨胀仿真结果:

15x15膨胀仿真结果:

原文标题:基于Verilog的“自适应”形态学滤波算法实现

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

责任编辑:haq

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

    关注

    1631

    文章

    21806

    浏览量

    606715
  • Verilog
    +关注

    关注

    28

    文章

    1352

    浏览量

    110520
  • 滤波算法
    +关注

    关注

    2

    文章

    89

    浏览量

    13785

原文标题:基于Verilog的“自适应”形态学滤波算法实现

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

收藏 人收藏

    评论

    相关推荐

    FPGA上的图像处理算法集成与优化

    、Tophat形态学滤波、RAW8转RGB888、彩色图像均值滤波、Alpha背景叠加、直方图灰度拉伸算法以及自动白平衡算法。每种
    的头像 发表于 02-14 13:46 72次阅读
    <b class='flag-5'>FPGA</b>上的图像处理<b class='flag-5'>算法</b>集成与优化

    图像高斯滤波的原理及FPGA实现思路

    1.概念 高斯分布 图像滤波之高斯滤波介绍 图像处理算法|高斯滤波 高斯滤波(Gaussian filter)包含很多种,包括低通、高通、带
    的头像 发表于 12-07 09:12 682次阅读
    图像高斯<b class='flag-5'>滤波</b>的原理及<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>思路

    【「从算法到电路—数字芯片算法的电路实现」阅读体验】+介绍基础硬件算法模块

    作为嵌入式开发者往往比较关注硬件和软件的协调。本书介绍了除法器,信号发生器,滤波器,分频器等基本算法的电路实现,虽然都是基础内容,但是也是最常用到的基本模块。 随着逆全球化趋势的出现
    发表于 11-21 17:05

    【「从算法到电路—数字芯片算法的电路实现」阅读体验】+一本介绍基础硬件算法模块实现的好书

    作为嵌入式开发者往往比较关注硬件和软件的协调。本书介绍了除法器,信号发生器,滤波器,分频器等基本算法的电路实现,虽然都是基础内容,但是也是最常用到的基本模块,本书的内容比较对本人胃口。
    发表于 11-20 13:42

    基于FPGA实现FIR数字滤波

    。随着现代数字通信系统对于高精度、高处理速度的需求,越来越多的研究转向采用FPGA实现FIR滤波器。而对于FIR滤波器要充分考虑其资源与运行速度的合理优化,各种不同的FIR
    的头像 发表于 11-05 16:26 1001次阅读
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>FIR数字<b class='flag-5'>滤波</b>器

    STM32的ADC采样及各式滤波算法实现

    本文为手把手教学ADC采样及各式滤波算法的教程,本教程的MCU采用STM32F103ZET6。以HAL库的ADC采样函数为基础进行教学,通过各式常见滤波的实验结果进行分析对比,搭配VOFA+工具直观的展示
    的头像 发表于 10-28 10:51 3304次阅读
    STM32的ADC采样及各式<b class='flag-5'>滤波</b><b class='flag-5'>算法</b><b class='flag-5'>实现</b>

    如何用FPGA实现一个通信系统的发射端接收机?

    和技术,包括硬件并行和算法并行。 硬件优化技术:学习如何在硬件实现中进行资源优化、性能提升和功耗降低。 特定的 NPU 架构研究:分析现有的
    发表于 09-10 19:15

    为什么FPGA属于硬件,还需要搞算法

    交流学习,共同进步。 交流问题(一) Q:为什么FPGA属于硬件,还需要搞算法? 刚入门准备fpga但一开始
    发表于 09-09 16:54

    海灵犀FPGA基础研实验箱

    海灵犀FPGA基础研实验箱(EDU_H6_01_1V0)是由中科亿海微电子科技(苏州)有限公司(简称:中科亿海微)自主研发设计的教学用具,由箱体、FPGA开发卡、LCD屏、USB下载线及相关实验
    的头像 发表于 06-13 08:11 1014次阅读
    海灵犀<b class='flag-5'>FPGA</b>基础研<b class='flag-5'>学</b>实验箱

    FPGA实现什么样的算法

    FPGA功能如此强大,请问用FPGA实现或者比较适合实现什么样的算法
    发表于 05-26 20:18

    基于深度学习的缺陷检测方案

    图像预处理通常包括直方图均衡化、滤波去噪、灰度二值化、再次滤波几部分,以得到前后景分离的简单化图像信息;随后利用数学形态学、傅里叶变换、Gabor 变换等算法以及机器学习模型完成缺陷的
    发表于 04-23 17:23 1064次阅读
    基于深度学习的缺陷检测方案

    fpga硬件还是软件

    FPGA(现场可编程门阵列)本质上是一种硬件设备,但它在功能实现上结合了硬件和软件的特性。
    的头像 发表于 03-27 14:14 1024次阅读

    基于多速率DA的根升余弦滤波器的FPGA实现

    Add Cell,MAC)结构,设计方便,只需要乘法器、加法器和移位寄存器即可实现,但是在FPGA实现硬件乘法器十分耗费资源。特别是当滤波
    发表于 03-25 14:21

    fpga开发是什么意思

    配置内部的逻辑门和连接关系来实现特定的电路功能。因此,FPGA开发实质上是一种将软件算法硬件电路转化为可编程逻辑结构的过程,以实现各种复杂
    的头像 发表于 03-15 14:28 1349次阅读

    fpga硬件还是软件

    FPGA(现场可编程门阵列)属于硬件设备,而不是软件。它是一种可编程的硬件设备,由大量的逻辑单元、存储单元和互连资源组成,能够实现复杂的数字电路和系统设计。
    的头像 发表于 03-14 17:08 2037次阅读