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

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

3天内不再提示

基于二值图像的滤波算法即形态学滤波

FPGA开源工作室 来源:FPGA开源工作室 作者:FPGA开源工作室 2021-03-09 11:51 次阅读

一、背景介绍

基于二值图像的滤波算法即形态学滤波,在图像目标采集的预处理中经常被使用到,针对不同的使用场景涉及到腐蚀、膨胀、开闭运算等处理。实际使用中对于不同的分辨率大小以及模板窗口大小,都要进行代码的修改去适应不同的场景,特别是模板窗口比较大时,代码改写工作量就很大。因此,为了减少开发时间,本文实现了一个通用的算法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膨胀仿真结果:

责任编辑:lq

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

    关注

    28

    文章

    1324

    浏览量

    109285
  • 滤波算法
    +关注

    关注

    2

    文章

    82

    浏览量

    13661
  • 二值图像
    +关注

    关注

    0

    文章

    14

    浏览量

    8683

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

文章出处:【微信号:leezym0317,微信公众号:FPGA开源工作室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    OpenCV图像卷积与滤波详解

    图像滤波器是一种用于增强或抑制图像中特定特征的工具。它通常是一个小矩阵,定义了如何对图像中的像素进行操作。
    的头像 发表于 03-26 14:57 173次阅读
    OpenCV<b class='flag-5'>图像</b>卷积与<b class='flag-5'>滤波</b>详解

    详解从均值滤波到非局部均值滤波算法的原理及实现方式

    图像降噪处理主要分为2D(空域)与3D降噪(时域/多帧),而2D降噪由于相关的实现 算法 丰富,效果各异,初学入门有着丰富的研究价值。理解2D降噪算法的流程,也对其他的增强算法有很大的
    的头像 发表于 12-19 16:30 329次阅读

    Mahony滤波算法参数自动调节方法介绍

    Mahony滤波算法参数自动调节方法是一种用于姿态估计的滤波算法
    的头像 发表于 12-06 09:45 399次阅读

    大佬总结!这篇把单片机数字滤波算法讲绝了

    平均滤波算法 以上介绍和各种平均滤波算法有一个共同点,每获取一个有效采样必须连续进行若干次采
    发表于 11-30 18:39

    单片机ADC,十大C语言滤波算法

    单片机ADC,十大C语言滤波算法
    的头像 发表于 10-24 15:53 624次阅读

    灰度图像均值滤波算法的HDL实现介绍

    首先要做的是最简单的均值滤波算法。均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模
    的头像 发表于 10-16 09:23 547次阅读
    灰度<b class='flag-5'>图像</b>均值<b class='flag-5'>滤波</b><b class='flag-5'>算法</b>的HDL实现介绍

    卡尔曼滤波算法对比其他的滤波算法有什么优点?

    卡尔曼滤波算法对比其他的滤波算法有什么优点
    发表于 10-11 06:42

    怎么评估一个滤波算法滤波效果?

    怎么评估一个滤波算法滤波效果
    发表于 10-10 07:31

    四轴的姿态进行采样用通常是用什么滤波算法进行滤波的?

    四轴的姿态进行采样用通常是用什么滤波算法进行滤波
    发表于 10-09 06:42

    对ADC数据进行滤波可以用中值滤波算法吗?

    对ADC数据进行滤波可以用中值滤波算法
    发表于 10-09 06:29

    MPU6050使用互补滤波与卡尔曼滤波算法进行姿态解算

    MPU6050使用互补滤波与卡尔曼滤波算法进行姿态解算
    发表于 08-07 15:46 2次下载

    11种滤波算法程序分享

    11种滤波算法程序分享
    的头像 发表于 07-24 15:57 988次阅读

    2D中值滤波算法的设计实现

    该项目包含使用高级综合 (HLS) 的 2D 中值滤波算法的实现。该项目的目标是在不到 3 ms的时间内对测试图像进行去噪,同时消耗不到 25% 的可用 PL 资源。
    的头像 发表于 07-12 15:19 745次阅读
    2D中值<b class='flag-5'>滤波</b><b class='flag-5'>算法</b>的设计实现

    荐读:FPGA设计经验之图像处理

    :将第步提取出来的三个数进行排序,中间我们要求的中间。 6.图像分割 图像分割是
    发表于 06-08 15:55

    形态学运算与仿真:图像处理中形态学操作的简单解释

    形态学图像处理领域的一个分支,主要用于描述和处理图像中的形状和结构。形态学可以用于提取图像中的特征、消除噪声、改变
    的头像 发表于 05-23 15:52 756次阅读
    <b class='flag-5'>形态学</b>运算与仿真:<b class='flag-5'>图像</b>处理中<b class='flag-5'>形态学</b>操作的简单解释