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
    +关注

    关注

    1625

    文章

    21620

    浏览量

    601182
  • 滤波
    +关注

    关注

    10

    文章

    662

    浏览量

    56567
  • 数据
    +关注

    关注

    8

    文章

    6800

    浏览量

    88736
  • 代码
    +关注

    关注

    30

    文章

    4721

    浏览量

    68216

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

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

收藏 人收藏

    评论

    相关推荐

    FPGA图像处理领域的优势有哪些?

    FPGA(Field Programmable Gate Array,现场可编程门阵列)在图像处理领域具有显著的优势,这些优势主要体现在以下几个方面: 一、高并行处理能力 FPGA内部拥有大量的逻辑
    发表于 10-09 14:36

    高斯滤波和均值滤波的区别

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

    高斯滤波和双边滤波的区别

    高斯滤波和双边滤波图像处理中都是常用的平滑滤波技术,但它们之间存在一些显著的区别。以下是两者之间的主要区别: 一、基本原理
    的头像 发表于 09-29 09:37 237次阅读

    高斯滤波的特点有哪些

    高斯滤波作为一种广泛使用的图像处理技术,具有以下几个显著的特点: 平滑性 : 高斯滤波通过卷积操作对图像
    的头像 发表于 09-29 09:36 165次阅读

    高斯卷积核函数在图像采样中的意义

    高斯卷积核函数在图像采样中的意义主要体现在以下几个方面: 1. 平滑处理与去噪 平滑图像高斯卷积核函数通过其权重分布特性,即中心像素点权重最高,周围像素点权重逐渐降低,实现了对
    的头像 发表于 09-29 09:33 275次阅读

    高斯滤波的卷积核怎么确定

    高斯滤波的卷积核确定主要依赖于高斯函数的特性以及图像处理的具体需求。以下是确定高斯滤波卷积核的几
    的头像 发表于 09-29 09:29 235次阅读

    高斯滤波的基本原理有哪些

    高斯滤波的基本原理可以从以下几个方面进行阐述: 一、定义与性质 定义 :高斯滤波(Gaussian Filter)是一种常见的图像处理技术,
    的头像 发表于 09-29 09:27 299次阅读

    FPGA设计经验之图像处理

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

    基于FPGA的实时边缘检测系统设计,Sobel图像边缘检测,FPGA图像处理

    摘要 :本文设计了一种 基于 FPGA 的实时边缘检测系统 ,使用OV5640 摄像头模块获取实时的视频图像数据,提取图像边缘信息并通过 VGA显示。FPGA 内部使用流水线设计和 并
    发表于 05-24 07:45

    FPGA设计中 Verilog HDL实现基本的图像滤波处理仿真

    今天给大侠带来FPGA设计中用Verilog HDL实现基本的图像滤波处理仿真,话不多说,上货。 1、用matlab代码,准备好把图片转化成Vivado Simulator识别的格式,即每行一
    发表于 05-20 16:44

    什么是高斯光束

    图1:高斯光束和平顶光束在相同的光功率下,显示高斯光束的峰值强度是平顶光束的两倍 大多数激光束都是高斯光束,尽管在某些情况下,具有非高斯辐照度分布是有益的。随着离激光束横截面中心的距离
    的头像 发表于 04-11 06:32 944次阅读
    什么是<b class='flag-5'>高斯</b>光束

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

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

    FPGA图像处理之CLAHE算法

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

    FPGA图像处理方法

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