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

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

3天内不再提示

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

FPGA设计论坛 来源:未知 2023-12-19 16:30 次阅读

图像降噪处理主要分为2D(空域)与3D降噪(时域/多帧),而2D降噪由于相关的实现算法丰富,效果各异,初学入门有着丰富的研究价值。理解2D降噪算法的流程,也对其他的增强算法有很大的帮助,因此本文将再啰嗦一次,详解从均值滤波到非局部均值滤波算法的原理及实现方式。

细数主要的2D降噪算法,如下图所示,从最基本的均值滤波到相对最好的BM3D降噪,本文将尽量用最同属的语言,详解这些算法的实现流程,并给予一定的FPGA加速实现的实现思路。其中BM3D由于篇幅较大,后面再补上。

wKgZomWBVb6Af2ICAAHV9gqy8II496.png

1.1.均值/中值滤波

首先所有滤波算法都是通过当前像素周边的像素,以一定的权重来计算滤波的像素值。因此主要涉及两个变量:窗口的大小,以及窗口内像素的权重。以最简单的均值滤波/中值滤波,3*3窗口为例,计算及优缺点如下:

wKgZomWBVb6ARqweAADKCKhbQ6E689.png

对于FPGA的硬件加速实现,过程还好,唯一头疼的就是涉及了除法,由于除法计算时钟周期长且耗费LE,我们需要升级改造下,因此优化公式如下(sum为9个像素累加的结果),将除法巧妙变成乘法:

wKgZomWBVb6ANWthAAAJ1l8Fzgs858.png

因此实现的流程如下

1)sum1=P0+P1+P2; sum1=P3+P4+P5; sum3=P6+P7+P8,即先求每行3像素累加

2)sum=sum1+sum2+sum3,即求三行9像素累加

3)sum*144,取结果的[17:10],即为均值滤波的结果。

4)以上过程流水线,最终每个clk输出一个计算结果。

备注:这里1024/9取了floor,这样保证不会溢出。

对于中值滤波而言,本身计算并不复杂,就看怎么取巧最快得到中间数,网上流传了一个三步法,即如下图所示,

wKgZomWBVb6ASzWYAADnl6GvmuU841.png

那么FPGA硬件加速实现,流程如下:

1)计算每行3个像素的最大中、中值、最小值

2)计算三个最大值的最小值,中间值的中间值,以及最小值的最大值。

3)对上述三个值求得中间值。

4)以上过程流水线,最终每个clk输出一个计算结果。

中值滤波计算相对均值滤波稍微复杂一点,但是好处是只用了比较器,没用乘法器,比均值滤波更省资源。

对于椒盐图像的均值滤波、中值滤波计算效果对比,如下所示,分别为椒盐图像、均值滤波、中值滤波结果。

wKgZomW-5jaAfiQNAAKKaeHbqys604.png

1.2.高斯滤波

1)

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

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

wKgZomWBVb-Af3cYAASHJsu57q0062.png

因此以概率论及中心极限定理(https://wiki.mbalib.com/wiki/中心极限定律)猜想,大部分噪声应该也符合正态分布/高斯分布(高斯白噪声),所以也就有了高斯滤波,及根据正态分布进行权重计算的滤波方法。上图曲线是高斯分布的一维函数,而图像应该是二维的,图解如下二维高斯分布:

wKgZomWBVb-AZpurAAHfG42NU28767.png

既然已经得到二维高斯分布函数,那么根据窗口到目标像素的距离,就可以是计算出周边像素的权重——高斯模板。均值滤波每个像素的权重都是1/9,再通过卷积后计算得到结构,而高斯滤波就是根据正态分布,去计算当前像素相对距离的权重值,假定σ=1.5(σ就是滤波的强度),3*3的高斯模板计算计算过程如下:

wKgZomWBVb-AG_O7AAMsXn0kokw921.png

但是这还不够,毕竟我们的目标是直接上FPGA,那必须顶定点化,因此假设扩大1024倍,则3*3的高斯模板定点化如下:

wKgZomWBVb-ADNd5AAA449zqkMo618.png

对于33或者55,选定的σ,高斯模板那么,现在计算就简单了,卷积后再缩小1024倍即可,采用FPGA计算,过程如下:

1)计算9个像素的对应卷积参数的乘法

2)9累加9个乘法结果

3)右移10bit或取结果的[17:10],即为高斯滤波的结果。

4)以上过程流水线,最终每个clk输出一个计算结果。

备注:当然实现还可优化,比如只用3个乘法器,算一行累加一行,也就4个时钟算完。

最后,暂且盗用别人针对不同σ的3*3高斯滤波效果图,如下(σ越大越模糊):

wKgaomW-5myAVna6AADoNA98tqA290.png

wKgZomWBVcCABUGrAABUdafP6GM276.jpg

精彩推荐 至芯科技FPGA就业培训班——助你步入成功之路、12月30号西安中心开课、欢迎试听! AXI总线协议总结 基于FPGA及模拟电路的模拟信号波形的实现扫码加微信邀请您加入FPGA学习交流群

wKgZomWBVcCAXgqKAABiq3a-ogY313.jpgwKgZomWBVcCAT7VzAAACXWrmhKE589.png

欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA技术交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!

点个在看你最好看


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

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。


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

    关注

    1638

    文章

    21853

    浏览量

    609377

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

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

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

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

    【「算法电路—数字芯片算法的电路实现」阅读体验】+阅读滤波器章节部分笔记

    以通过。 低通、高通、带通、带阻滤波器也称为经典滤波器,一般所说的滤波器就是指它们。实现这类滤波器的方式
    发表于 12-02 21:43

    【「算法电路—数字芯片算法的电路实现」阅读体验】+内容简介

    、AI芯片、多媒体处理芯片等)都是由四则运算器、滤波器、特殊信号发生器等基本算法电路构成的,熟练掌握这些基本算法电路是实现复杂算法电路的基础
    发表于 11-21 17:14

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

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

    名单公布!【书籍评测活动NO.46】算法电路 | 数字芯片算法的电路实现

    :elecfans123)领取书籍进行评测,如在5个工作日内未联系,视为放弃本次试用评测资格! 《算法电路——数字芯片算法的电路实现
    发表于 10-09 13:43

    常用的ADC滤波算法有哪些

    ADC(模数转换器)滤波算法在信号处理中起着至关重要的作用,它们能够帮助我们提取出有用的信号,同时滤除噪声和干扰。以下是常用的ADC滤波算法详解
    的头像 发表于 10-08 14:35 699次阅读

    高斯滤波均值滤波的区别

    高斯滤波均值滤波在图像处理中都是常用的平滑滤波方法,但它们之间存在一些关键的区别。以下是两者之间的主要区别: 1. 滤波原理 高斯
    的头像 发表于 09-29 09:40 1144次阅读

    rtt4.1.1做滑动平均值滤波的时候,被意外赋值,为什么?

    1. 问题描述 我使用rtt4.1.1版本,其中adc采样直接采用cubemx生成的库函数,用DMA读取方式读取AD的值。并在DMA中断内回调AD值计算函数。 结果在做滑动平均值滤波的时候出现了
    发表于 09-13 06:33

    求助,关于均值检波电路的两个疑问求解

    是如图示的值,并且不管输入信号怎么变化,都不变。这是什么原因,有人知道吗。 问题二:有人说均值检波中的积分电路实则是一个低通滤波,所以我想知道的是,为什么整流完后又加了低通,是要滤掉什么,有点搞不清楚均值检波的工作原理了。
    发表于 09-02 06:55

    基于CW32的仪表精度测量实现(一):相关滤波原理

    进行处理。 二、常见的滤波算法 1.小波变换滤波 原理:小波变换通过将信号分解成不同尺度的子信号,可以提取出信号中的局部特征。在滤波中,小波
    的头像 发表于 08-30 18:53 368次阅读
    基于CW32的仪表精度测量<b class='flag-5'>实现</b>(一):相关<b class='flag-5'>滤波</b>原理

    滤波器的基本原理、分类及实现方式

    滤波器是一种信号处理设备,用于信号中去除不需要的频率成分,保留所需的频率成分。在信号处理中,滤波器起着至关重要的作用。 滤波器的基本原理 滤波
    的头像 发表于 08-25 14:44 1482次阅读

    CW32数字电压电流表软件进阶教程-2.电压电流值做均值滤波

    速度较快时,数字有跳动现象。 因此,在数据处理前,可以增加常见的均值滤波算法均值滤波原理在实验七中已有讲述。 在7.1实验例程基础上,增加
    的头像 发表于 05-31 15:57 645次阅读

    CW32数字电压电流表软件教程-实验七:基本数据处理算法均值滤波

    均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),
    的头像 发表于 05-31 15:47 514次阅读

    示波器如何测量信号平均值呢?

    在电子工程和信号处理中,信号的平均值是一个重要的参数,它提供了信号在一定时间内的统计特性。
    的头像 发表于 05-31 14:49 2705次阅读

    CW32数字电压电流表软件教程(七):基本数据处理算法均值滤波

    均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),
    的头像 发表于 05-28 10:50 586次阅读