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

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

3天内不再提示

简述FPGA的图像高斯滤波

FPGA之家 来源:记忆面包呀 作者:记忆面包呀 2021-06-27 11:08 次阅读

在知乎上看到一个比较有意思的话题,卷积为什么叫”卷“积?哈哈哈哈哈

其中有个动图用卷毛巾生动形象的比喻了卷积的过程。

带着好奇心先看一下我们最熟悉的卷积公式:

c23ac53e-d6f4-11eb-9e57-12bb97331649.png

还可以改写成:

c24a6160-d6f4-11eb-9e57-12bb97331649.png

其中a,b表示a+b=n这条直线上所有的点。y(n)就表示这条直线上所有点对应的函数值x(a)h(b)的累加。

以下图卷毛巾为例,将毛巾沿红色虚线方向卷起来,设这条红色虚线为a+b=5,卷起来后这条红线上的所有函数值都累加到n=5这一点上,即是y(5)的值。

c258cfb6-d6f4-11eb-9e57-12bb97331649.png

1.一维信号的卷积

上面只是从数学公式解释了卷积是如何计算的,但卷积物理意义是什么呢?

学习信号与系统的时候总是听老师说信号经过一个系统就是与这个系统进行卷积。所以我们先从一维信号来解释一下。

(1)表示信号δ(t)经过某系统产生了输出h(t)。

(2)将信号δ(t)延时τ后,输出也延时了τ,为h(t-τ)。

(3)将1,2中信号叠加输入系统后,产生输出y(t)也进行了一个叠加,输出等于h(t)+h(t-τ)。

c303bf2a-d6f4-11eb-9e57-12bb97331649.png

再假如有这样一个x(t),由很多个δ(t)组成,这个δ(t)不正是冲激函数嘛。它经过系统会输出什么?

c30f72de-d6f4-11eb-9e57-12bb97331649.png

由δ(t)冲激函数的性质

c318c0f0-d6f4-11eb-9e57-12bb97331649.png

带入便得到了卷积公式。

c3294696-d6f4-11eb-9e57-12bb97331649.png

所以卷积的意义就是累加呗,得到的结果y(t)就表示在t这点的冲激响应和t之前所有冲激响应的”余波“的累加值。(这里累加下限τ=0是因为假设t《0时没有信号的,不会对t这点产生影响)

2.二维图像卷积

上升到二维空间,卷积公式变为

c36a2ec2-d6f4-11eb-9e57-12bb97331649.png

以高斯滤波为例,w(x,y)是二维高斯函数。

图像f与w卷积,可以同样理解为图像经过系统w所产生的输出,而图像中每个像素点可以理解为一维卷积中的信号δ(t),最终的输出也是每个像素点冲激响应累加的结果。

累加的上下标a,b代表着能对中心像素产生影响的周围像素的范围,而影响的大小取决于①它对中心像素的“余波”;②周围像素点本身的像素值(相当于一维中的a0,a1 ,a2 。 。 。 。)。

举个例子,当a,b都为2时,表示以某像素为中心3×3的矩阵内,所有像素都对此像素有影响。

想象一下这个3×3的矩阵中每个像素上都对高斯滤波器产生了冲激响应,可以想象成每个像素上有座山,山坡会延伸到周围像素上,山的高度可以叠加,那中心点像素的山就是最高的了。

那中间山的高度是多少呢? 取决于:

①周围像素对中心像素的“余波”;

f(x-1,y-1)在中心像素的“余波”为1,f(x-1,y)在中心像素的“余波”为2,f(x-1,y+1)在中心像素的“余波”为1,f(x,y-1)在中心像素的“余波”为2,f(x,y)自己贡献了4,f(x,y+1)在中心像素的“余波”为2,f(x+1,y-1)在中心像素的“余波”为1,f(x+1,y)在中心像素的“余波”为2,f(x+1,y+1) 在中心像素的“余波”为1。

②周围像素点本身的像素值

最终山的高度等于∑(某点像素值 × 其对中心点”余波“)。而“余波”不就是所用的模板吗。

还有一点需要注意,这个模板并不是我们的w,而是将w翻转了180度,方便与相同位置像素对应。

由卷积公式得下式,对应图中相同颜色的相乘。

c397c382-d6f4-11eb-9e57-12bb97331649.png

3.FPGA实现

理解了高斯滤波模板的意义,接下来就考虑如何用FPGA来实现了。由于图像是一个像素一个像素流入FPGA的,所以怎样将一个个像素流变成3×3的方块与我们的模板相乘是一个问题。

还好altera ip核中有个shift_ram,可以将数据缓存后分行输出。下图就比较直观的展现了它的功能。

所以我们需要将数据缓存两行,每行640个像素,加上当前流入的像素,就可以构成需要的3×3的矩阵了。

c418eab6-d6f4-11eb-9e57-12bb97331649.png

c4220344-d6f4-11eb-9e57-12bb97331649.png

c430d162-d6f4-11eb-9e57-12bb97331649.jpg

最后行场同步需要打两拍是由于输入数据的时候数据打了一拍,上图构建矩阵时打了一拍,详见完整代码。

仿真结果

可以看出shift_ram在缓存两行数据后,就可以三行数据同时输出。就可以构成3×3的矩阵了。

接下来对这个3×3矩阵进行乘上对应系数再累加,便得到滤波后的像素啦。

c448bbba-d6f4-11eb-9e57-12bb97331649.jpg

编辑:jq

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

    关注

    1602

    文章

    21320

    浏览量

    593182
  • 滤波
    +关注

    关注

    10

    文章

    624

    浏览量

    56247
  • 数据
    +关注

    关注

    8

    文章

    6511

    浏览量

    87598
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66766

原文标题:基于FPGA的图像高斯滤波

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    OpenCV图像降噪算法的中值滤波高斯滤波详解

    图像噪声是指图像中不希望出现的随机亮度或颜色变化,通常会降低图像的清晰度和可辨识度,以及会降低图像的质量并使图像分析和理解更加困难。
    的头像 发表于 04-03 14:58 267次阅读
    OpenCV<b class='flag-5'>图像</b>降噪算法的中值<b class='flag-5'>滤波</b>与<b class='flag-5'>高斯</b><b class='flag-5'>滤波</b>详解

    OpenCV图像卷积与滤波详解

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

    FPGA图像处理之CLAHE算法

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

    FPGA图像处理方法

    图像细节。 FPGA 图像处理方法 1、图像增强 两大方法:空间域方法和时间域方法(以后再详述) 2、图像
    的头像 发表于 12-02 13:15 604次阅读

    基于FPGA图像处理的高斯模糊实现

    高斯模糊(Gaussian Blur)是一种高斯低通滤波,可以过滤掉图像的高频部分,保留低频部分,对于去除高斯噪声非常有效果,常常被用于
    发表于 10-26 09:36 311次阅读
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>图像</b>处理的<b class='flag-5'>高斯</b>模糊实现

    高斯滤波是用的什么原理?

    能简单的介绍一下高斯滤波原理吗
    发表于 10-09 08:00

    为什么高斯滤波广泛的应用在图像处理中?

    为什么高斯滤波广泛的应用在图像处理中
    发表于 10-09 06:31

    简述RC滤波器的基本特性

    引言:感谢“八块腹肌饼干”的邀约,针对无源滤波器专门更新几期,先从RC开始吧。简单基本RC电路有一些非常有用的特性,既能提供相当精确可重复的定时功能,又能很好的执行基本的滤波功能,本节简述基本的RC
    的头像 发表于 09-14 15:45 1170次阅读
    <b class='flag-5'>简述</b>RC<b class='flag-5'>滤波</b>器的基本特性

    fpga图像算法分类与汇总分析

    选择哪种锐化方法取决于具体的应用需求和图像的特性。例如,如果图像中存在大量噪声,可能会首选高斯滤波或USM,因为它们可以在锐化的同时减少噪声。如果需要快速的锐化效果,拉普拉斯
    发表于 09-12 10:00 321次阅读
    <b class='flag-5'>fpga</b><b class='flag-5'>图像</b>算法分类与汇总分析

    基于FPGA图像处理之直方图均衡

    最近一直在用FPGA图像处理相关的算法,主要是集中在图像增强和增晰方面。
    发表于 06-29 09:23 704次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>图像</b>处理之直方图均衡

    Lake Shore410高斯计介绍

    功能、滤波、相对读数、校零、声音提示报警功能、自动量程等功能。 美国Lake Shore410高斯计产品介绍:美国Lake Shore 410可以对0.1G到20KG(0.01mT to 2T
    发表于 06-15 11:07

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

    系列:基于 FPGA图像边缘检测系统设计(sobel算法) FPGA设计中 Verilog HDL实现基本的图像滤波处理仿真 基于
    发表于 06-08 15:55

    模拟无源滤波器设计(九)-Gaussian滤波器设计详解

    文章详细对高斯滤波器的综合设计进行讲解,解释如何从时域无过冲推导出高斯滤波器的。并且深入探讨了高斯滤波
    的头像 发表于 05-28 11:31 4602次阅读

    高斯响应滤波器设计

    这是一篇关于模拟高斯滤波器设计的经典文章,发表于1959年1月的《电气通信》杂志上。此篇文章引用度比较高,而且内容非常详实,包含了高斯滤波器综合和实现的整个过程,文章中也讨论了有限Q值
    的头像 发表于 05-11 11:54 1033次阅读
    <b class='flag-5'>高斯</b>响应<b class='flag-5'>滤波</b>器设计

    关于高斯滤波器的响应和逼近

    本文讨论了一种滤波器,其幅频响应特性为,其中是频率的函数,是与滤波器带宽相关的常数。该滤波器的幅度响应曲线具有高斯概率函数的形状,结果表明,相位响应曲线基本上是线性的。以前的研究人员已
    的头像 发表于 04-28 10:29 2912次阅读
    关于<b class='flag-5'>高斯</b><b class='flag-5'>滤波</b>器的响应和逼近