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

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

3天内不再提示

FPGA中高斯滤波算法的实现

FPGA自习室 来源:疯狂的FPGA 作者:CrazyBingo 2021-10-29 10:59 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1.高斯滤波算法的实现

前面讲的均值/中值滤波,对于滤波窗口内每个像素的权重都是一样的。但是噪声在图像当中常表现为异常视觉效果的孤立像素点或像素块,那么他必然不是平均分布。

这里先引入一个概念:正态分布:

正态分布是最重要的一种概率分布,相关概念是由德国的数学家和天文学家Moivre在1733年提出的,但由于德国数学家Gauss率先将其用于天文学研究,因此也叫做高斯分布。在正态分布里,认为中间状态是常态,过高和过低都属于少数,因此正态分布具有相当的普遍性,典型的比如我们的身高、寿命、血压、成绩、测量误差等都遵从正太分布。

以中国家庭动态跟踪,抽样掉找自报的身高数据为例,如下是2010年男/女身高分布直方图,近似呈现正态分布。

扯远了,回归正题,我们这里主题就是要处理高斯分布的噪声,与椒盐噪声不同,高斯噪声则是画面上每个点都存在着不同程度的,与当前像素距离成高斯分布的噪声。这里我们继续在前文已经成熟的3*3滑窗方案上,进行高斯算法的讲解,及Matlab&FPGA的实现。

2.高斯滤波算法理论

根据概率论及中心极限定理(MBA智库百科,全球专业中文经管百科)猜想,大部分噪声应该也符合正态分布/高斯分布(高斯白噪声),所以也就有了高斯滤波,及根据正态分布进行权重计算的滤波方法。

我们已经介绍了高斯分布(正态分布),此处我们直接引入高斯分布函数,为一维与二维高斯分布函数,其中σ为高斯分布的强度,σ越大则数据更越分散,反之则越向中心集中分布:

我们首先采用Matlab自带的高斯函数来验证一下结果,σ=1的高斯滤波,可见有一定的模糊效果。图3为5*5的窗口,σ=3的高斯滤波,模糊的强度稍微更大了一点。图4为11*11的窗口,σ=3的高斯滤波,相对5*5窗口,σ=3的滤波,可见扩大扩大窗口后,滤波后模糊程度非常大,可见滤波窗口对滤波的强度影响更大,其次才是σ的大小。

左侧为生成5*5模板的Matlab代码,我们先根据高斯分布的公式生成5*5 的模板。其中11行为原始二维高斯分布的函数,而12行中我已经将常熟去掉,毕竟后续需要归一化,就可以简化公式,得到的高斯权重分布如有图G1所示,为一堆浮点数据。

但是,二维高斯分布并不仅仅在5*5的区间内,权重在5*5之外仍然有分布,只不过我们当前采用5*5的高斯分布,权且认为数据主要分布在5*5之内,因此还需要进一步的归一化,来使得所有权中之和=1,如17-18行所示,得到右边第二个表格数据的模板。

如果在Matlab中实现,此时得到的模板已经可以用于高斯滤波卷积计算。但我们的目标是FPGA实现,因此还需要进一步定点化,这里采用*1024为例,生成最终的5*5的模板如上第三个表格所示。当然最后需要/1024缩放回去,使得结果最终还原到0-255。

为Matlab进行5*5高斯模板卷积的源代码,其中IMG1为原图,IMG2为采用Matlab自带高斯滤波函数在σ=3,5*5窗口下的滤波结果,IMG3为我们手动编写的,根据生成的定点化模板卷积后的结果。

其中在处理5*5卷积时,为了设计的简便,边缘像素采用了复制原值的操作。另外,由于Matlab是浮点运算,在卷积后将数据类型再次转成uint8定点。最后执行生成的结果如下图所示,其中图2为与图3,处理结果几乎一样,我们定点化5*5高斯模板算法成功。

责任编辑:haq

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

    关注

    1655

    文章

    22283

    浏览量

    630236
  • matlab
    +关注

    关注

    189

    文章

    3018

    浏览量

    237597

原文标题:高斯滤波算法之Matlab&FPGA实现

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ADC的采样滤波算法利用卡尔曼滤波算法

    ; ADC_OLD_Value = ADC_Value; kalman_adc_old = kalman_adc; return kalman_adc;} 4 如何优化 用以上的代码实现滤波算法,通常要么滞后
    发表于 12-01 07:44

    复杂的软件算法硬件IP核的实现

    Compiler)将算法编译转化为可综合的 Verilog 文本,进而通过 FPGA 在硬件上实现算法。 1.C to Hardware 技术简介 AltiumDesign
    发表于 10-30 07:02

    25年11月上海FPGA算法实现与应用技术高级研修分享

    器的设计。   第六章: NCO的算法实现:NCO(数字控制振荡器)是做频率搬移和相位搬移的重要算法,也是数字中频设计常用的设计模块。   第七章: FRM滤波器设计:FRM
    发表于 10-11 11:55

    数据滤波算法的具体实现步骤是怎样的?

      数据滤波算法在电能质量在线监测装置中的具体实现,需围绕 “ 数据采集→预处理→算法执行→参数适配→效果验证→结果输出 ” 的全流程展开,核心是结合装置硬件特性(采样率、ADC 精度
    的头像 发表于 10-10 16:45 427次阅读

    基于FPGA实现FOC算法之PWM模块设计

    哈喽,大家好,从今天开始正式带领大家从零到一,在FPGA平台上实现FOC算法,整个算法的框架如下图所示,如果大家对算法的原理不是特别清楚的话
    的头像 发表于 07-17 15:21 3122次阅读
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>FOC<b class='flag-5'>算法</b>之PWM模块设计

    基于Matlab与FPGA的双边滤波算法实现

    前面发过中值、均值、高斯滤波的文章,这些只考虑了位置,并没有考虑相似度。那么双边滤波来了,既考虑了位置,有考虑了相似度,对边缘的保持比前几个好很多,当然实现上也是复杂很多。本文将从原理
    的头像 发表于 07-10 11:28 4076次阅读
    基于Matlab与<b class='flag-5'>FPGA</b>的双边<b class='flag-5'>滤波</b><b class='flag-5'>算法</b><b class='flag-5'>实现</b>

    基于FPGA的压缩算法加速实现

    本设计中,计划实现对文件的压缩及解压,同时优化压缩中所涉及的信号处理和计算密集型功能,实现对其的加速处理。本设计的最终目标是证明在充分并行化的硬件体系结构 FPGA实现
    的头像 发表于 07-10 11:09 2076次阅读
    基于<b class='flag-5'>FPGA</b>的压缩<b class='flag-5'>算法</b>加速<b class='flag-5'>实现</b>

    粗糙度的滤波值是怎么设置的?

    微观不平度的信息。本文将详细探讨粗糙度滤波值的设置方法与依据。 滤波原理与类型 表面轮廓包含了形状误差、波纹度和粗糙度等不同尺度的几何特征,滤波的本质是通过数学算法对轮廓数据进行频率分
    的头像 发表于 07-03 09:46 580次阅读
    粗糙度的<b class='flag-5'>滤波</b>值是怎么设置的?

    GLAD应用:高斯光束的吸收和自聚焦效应

    的,这将使不同空间位置的光所经历的光程长度不同,即介质对入射光束的作用等价于光学透镜,从而导致光束的自行聚焦效果。 特别地,当入射光束强度沿垂直光轴的界面内呈高斯形时,且强度足够产生非线性效应的情况下
    发表于 06-17 08:52

    GLAD应用:高斯光束的吸收和自聚焦效应

    的,这将使不同空间位置的光所经历的光程长度不同,即介质对入射光束的作用等价于光学透镜,从而导致光束的自行聚焦效果。 特别地,当入射光束强度沿垂直光轴的界面内呈高斯形时,且强度足够产生非线性效应的情况下
    发表于 05-16 08:47

    基于高斯的稠密视觉SLAM研究

    基于高斯的场景表示在新视角下会出现几何失真,这大大降低了基于高斯的跟踪方法的准确性。这些几何不一致主要源于高斯基元的深度建模以及在深度融合过程中表面之间的相互干扰。为了解决这些问题,我们提出了一种
    的头像 发表于 05-15 10:36 791次阅读
    基于<b class='flag-5'>高斯</b>的稠密视觉SLAM研究

    蓝牙信标RSSI滤波算法

    蓝牙信标RSSI滤波算法‌主要用于处理RSSI值的不稳定性和噪声,以提高距离估计的准确性。RSSI(接收信号强度指示)是蓝牙信标中常用的参数,用于评估设备之间的距离或信号质量。然而,RSSI值的测量
    的头像 发表于 05-12 19:45 751次阅读
    蓝牙信标RSSI<b class='flag-5'>滤波</b><b class='flag-5'>算法</b>

    进群免费领FPGA学习资料!数字信号处理、傅里叶变换与FPGA开发等

    ~ 01、数字信号处理的FPGA实现 旨在讲解前端数字信号处理算法的高效实现。首先概述了当前的FPGA技术、器件以及用于设计最先进DSP系
    发表于 04-07 16:41

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

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

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

    1.概念 高斯分布 图像滤波高斯滤波介绍 图像处理算法|高斯
    的头像 发表于 12-07 09:12 2593次阅读
    图像<b class='flag-5'>高斯</b><b class='flag-5'>滤波</b>的原理及<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>思路