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

    关注

    1664

    文章

    22502

    浏览量

    639235
  • 滤波
    +关注

    关注

    10

    文章

    711

    浏览量

    58070
  • 数据
    +关注

    关注

    8

    文章

    7348

    浏览量

    95020
  • 代码
    +关注

    关注

    30

    文章

    4976

    浏览量

    74379

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FPGA图像处理平台搭建方案

    基于 MicroBlaze V 的 FPGA 视觉平台:通过以太网实时捕获、调试和传输 MIPI 相机数据,支持全帧或高速 ROI 范围。
    的头像 发表于 04-22 09:32 377次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>图像</b>处理平台搭建方案

    综合图像处理硬件平台设计资料:2-基于6U VPX的双TMS320C6678+Xilinx FPGA K7 XC7K420T的图像信号处理板

    FPGA光纤, XCVU9P板卡, 高速图像采集, 基带信号处理, 加速计算卡, 无线仿真平台, 图像信号处理板
    的头像 发表于 03-30 14:39 132次阅读
    综合<b class='flag-5'>图像</b>处理硬件平台设计资料:2-基于6U VPX的双TMS320C6678+Xilinx <b class='flag-5'>FPGA</b> K7 XC7K420T的<b class='flag-5'>图像</b>信号处理板

    VirtualLab:Ince高斯模式

    **摘要 ** 除了Hermite和Laguerre高斯模式之外,近轴波动方程还有第三种严格的正交解族,即所谓的Ince高斯模式。这些解在椭圆坐标中定义,并且通过椭圆参数允许在Hermite
    发表于 03-20 08:58

    VirtualLab:Ince高斯模式

    **摘要 ** 除了Hermite和Laguerre高斯模式之外,近轴波动方程还有第三种严格的正交解族,即所谓的Ince高斯模式。这些解在椭圆坐标中定义,并且通过椭圆参数允许在Hermite
    发表于 03-19 08:36

    基于FPGA的低照度条件下EBAPS图像混合噪声去除算法

    本文提出了基于可编程逻辑门阵列(field programmable gate array,FPGA)的开关融合中值-高斯(open and close mix-median-Gaussian,OCMMG)滤波算法。
    的头像 发表于 03-11 09:24 6993次阅读
    基于<b class='flag-5'>FPGA</b>的低照度条件下EBAPS<b class='flag-5'>图像</b>混合噪声去除算法

    图像采集卡:机器视觉时代的图像数据核心枢纽

    一、图像采集卡的技术本质:从信号到数据的“转换器”与“传输通道”图像采集卡(ImageCaptureCard)是机器视觉系统的核心硬件组件,本质是通过专用芯片(如FPGA、ASIC)实现图像
    的头像 发表于 11-12 15:15 866次阅读
    <b class='flag-5'>图像</b>采集卡:机器视觉时代的<b class='flag-5'>图像</b>数据核心枢纽

    基于FPGA的CLAHE图像增强算法设计

    CLAHE图像增强算法又称为对比度有限的自适应直方图均衡算法,其算法原理是通过有限的调整图像局部对比度来增强有效信号和抑制噪声信号。
    的头像 发表于 10-15 10:14 799次阅读
    基于<b class='flag-5'>FPGA</b>的CLAHE<b class='flag-5'>图像</b>增强算法设计

    基于FPGA利用sm4进行实时图像加密

    求一份在fpga上利用sm4进行实时图像加密的文件
    发表于 09-15 19:05

    舵机原理简述!

    舵机原理简述 舵机是一种高精度的位置伺服执行机构,广泛应用于机器人关节、无人机舵面控制、航模操控等场景,其核心功能是通过接收控制信号,精确驱动输出轴旋转到指定角度并保持稳定。以下从结构组成、控制
    的头像 发表于 08-22 10:57 2291次阅读

    FPGA 加持,友思特图像采集卡高速预处理助力视觉系统运行提速增效

    图像预处理是图像处理关键环节,可优化数据传输、减轻主机负担,其算法可在FPGA等硬件上执行。友思特FPGA图像采集卡凭借
    的头像 发表于 08-13 17:41 1343次阅读
    <b class='flag-5'>FPGA</b> 加持,友思特<b class='flag-5'>图像</b>采集卡高速预处理助力视觉系统运行提速增效

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

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

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

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

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

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

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

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

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

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