侵权投诉

简述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的图像高斯滤波

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

收藏 人收藏
分享:

评论

相关推荐

FPGA如何使用RAM分区循环移位法实现解交织器

本文分析了卷积交织和解交织的基本原理,然后采用Altera 的FPGA器件,用RAM分区循环移位法来....
的头像 FPGA设计论坛 发表于 09-28 17:53 273次 阅读

在线负氧离子监测系统价格是多少

在线负氧离子监测系统价格是多少FT-FYLZ 【风途】空气中负氧离子多,少受地理条件和环境影响的不同....
发表于 09-28 16:13 62次 阅读

大气负氧离子在线监测系统

大气负氧离子在线监测系统FT-FYLZ【风途】透过树叶的阳光细细密密地洒在身上,沙沙的树叶声、叽叽喳....
发表于 09-28 15:10 70次 阅读

如何解决导热油管腐蚀渗漏问题

导热油管腐蚀渗漏情况及原因分析:某企业导热油管出现腐蚀渗漏问题,设备数据如下:轴径120mm左右,导....
发表于 09-28 14:55 8次 阅读

土壤养分检测仪的作用和意义

土壤养分检测仪是一款专业的土壤检测仪器,其作用就是检测土壤的氮、磷、钾、有机质、酸碱度、盐分等信息,....
发表于 09-28 14:34 38次 阅读

直流电机控制代码

直流电机控制代码(深圳市普德新星电源技术有限公司官网)- 直流机控制代码 可以控制直流机的转速以及正....
发表于 09-28 12:24 4次 阅读
直流电机控制代码

FPGA-DCM使用详解

FPGA-DCM使用详解(通信电源技术期刊编辑部电话)-该文档为FPGA-DCM使用详解文档,是一份....
发表于 09-28 11:22 5次 阅读
FPGA-DCM使用详解

利用FPGA控制ADC0809采样电压

利用FPGA控制ADC0809采样电压(长城电源技术(山西有限公司)-利用FPGA控制ADC0809....
发表于 09-28 11:05 11次 阅读
利用FPGA控制ADC0809采样电压

采用FPGA协处理器实现算法加速教程

当今的设计工程师受到面积、功率和成本的约束,不能采用GHz级的计算机实现嵌入式设计。在嵌入式系统中,....
的头像 FPGA设计论坛 发表于 09-28 10:38 134次 阅读
采用FPGA协处理器实现算法加速教程

ACTEL-FPGA独特的几点优势

ACTEL-FPGA独特的几点优势(通讯电源技术刊物联系方式)-该文档为ACTEL-FPGA独特的几....
发表于 09-28 09:21 6次 阅读
ACTEL-FPGA独特的几点优势

如何实现基于FPGA的RS485通信接口设计

RS485是什么? 如何实现基于FPGA的RS485通信接口设计? ...
发表于 09-28 07:53 0次 阅读

怎样去设计一种基于FPGA的正弦信号发生器

怎样去设计一种基于FPGA的正弦信号发生器? 如何对基于FPGA的正弦信号发生器进行仿真? ...
发表于 09-28 06:31 0次 阅读

【萌新求助:无法绑定引脚】vivado绑定引脚时,选项中缺少原理图上的引脚,无法选择和绑定,编辑constr文件也会报错。

使用xc7z020clg400-1开发板,调试UART通信功能,无法绑定引脚,不能生成比特流文件。查询原理图,需要绑定UART引脚,TX...
发表于 09-27 17:24 120次 阅读

基于FPGA的IRIGBDC码解码

基于FPGA的IRIGBDC码解码(开关电源技术教程课后习题答案)-该文档为基于FPGA的IRIGB....
发表于 09-27 15:16 15次 阅读
基于FPGA的IRIGBDC码解码

基于完全服务轮询机制MAC协议的FPGA设计

基于完全服务轮询机制MAC协议的FPGA设计(通信电源技术杂志订阅)-该文档为基于完全服务轮询机制M....
发表于 09-27 15:15 7次 阅读
基于完全服务轮询机制MAC协议的FPGA设计

无人机反制系统的发展前景怎么样

中国反无人机技术进步迅猛 无人机反制枪效果明显在全球范围内,无人机威胁都受到了各方重点关注,如何对无....
发表于 09-27 15:05 187次 阅读

FPGA-SoC芯片中EDAC模块的设计与实现

FPGA-SoC芯片中EDAC模块的设计与实现(深圳市宇衡源电源技术)-该文档为FPGA-SoC芯片....
发表于 09-27 14:32 8次 阅读
FPGA-SoC芯片中EDAC模块的设计与实现

利用ActelFPGA实现数字系统知识产权保护,毕业论文开题报告

利用ActelFPGA实现数字系统知识产权保护,毕业论文开题报告(电源技术期刊是免费还是收费)-该书....
发表于 09-27 11:48 9次 阅读
利用ActelFPGA实现数字系统知识产权保护,毕业论文开题报告

FPGA+DSP的高精度数字电源数据采集系统设计

FPGA+DSP的高精度数字电源数据采集系统设计(电源技术是什么档次的期刊)-为基于FPGADSP的....
发表于 09-27 11:16 13次 阅读
FPGA+DSP的高精度数字电源数据采集系统设计

德国介入调查数据安全,小米“全球第一”这事儿还稳吗?

根据路透社此前的报道,当地时间9月21日,立陶宛国防部国家网络安全中心发布产品调查报告称,中国小米在....
的头像 Felix分析 发表于 09-27 08:57 1393次 阅读
德国介入调查数据安全,小米“全球第一”这事儿还稳吗?

如何去制作一个简易的计算器

如何去制作一个简易的计算器? 简易的计算器有何功能? ...
发表于 09-27 08:44 0次 阅读

怎样对独立看门狗进行配置

怎样对独立看门狗进行配置?如何去编写其代码?...
发表于 09-27 08:09 0次 阅读

怎样去编写STM32的网络中断代码

网络中断向量是什么意思? 怎样去编写STM32的网络中断代码? ...
发表于 09-27 08:06 0次 阅读

工业4.0如何保证在各地收集到的数据的完整性

工业4.0如何保证在各地收集到的数据的完整性? 如何选择一个低成本的数据处理方案? ...
发表于 09-27 07:47 0次 阅读

求一种工业自动化数据采集方案

工业数据网关是什么? 工业数据采集类型有哪几种? ...
发表于 09-27 06:42 0次 阅读

C语言中的“三字母词”是什么

某软件工程师接盘了前同事的项目,进度一拖再拖,最后发现问题出现在如下代码: // 注释语句 ??/2....
的头像 嵌入式ARM 发表于 09-26 14:46 119次 阅读

存储器灵活性是FPGA设计的关键

外部存储器的问题在于,存储器类型太多,性能特征、容量、功耗等千差万别。因此,能够连接尽可能多的不同类....
发表于 09-26 11:22 862次 阅读

pandas筛选数据的8个小技巧

  日常用 Python 做数据分析最常用到的就是查询筛选了,按各种条件、各种维度以及组合挑出我们想....
的头像 数据分析与开发 发表于 09-26 11:04 563次 阅读
pandas筛选数据的8个小技巧

芯片开发语言为什么要用Chisel和Verilog

在最近召开的RISC-V中国峰会上,中科院计算所的包云岗研究员团队正式发布了名为“香山”的开源高性能....
的头像 FPGA技术江湖 发表于 09-26 11:00 703次 阅读
芯片开发语言为什么要用Chisel和Verilog

如何解决BOM数据总是不准的问题

作者:魏保国 来源:甘棠软件,本文经授权转载 1 引言 笔者近年来参与了汽车主机厂及零部件企业大小十....
的头像 工业互联网前线 发表于 09-26 10:52 112次 阅读

指标监控体系如何建设

对于数据人尤其是数据产品和分析师,最难排查(头疼)的问题就是指标为什么升/降/没数,一旦业务方提出这....
的头像 数据分析与开发 发表于 09-26 10:39 120次 阅读
指标监控体系如何建设

高速串行通信常用的编码方式-8b/10b编码/解码解析

  论序 8b/10b编码/解码是高速串行通信,如PCle SATA(串行ATA),以及Fiber ....
的头像 OpenFPGA 发表于 09-26 09:56 110次 阅读
高速串行通信常用的编码方式-8b/10b编码/解码解析

深入探究Xilinx Multiboot实例

原理 关于Multiboot的原理参考《 Xilinx 7系列FPGA Multiboot介绍-远程....
的头像 OpenFPGA 发表于 09-26 09:37 130次 阅读
深入探究Xilinx Multiboot实例

Vector看板管理工具Squore助力敏捷开发

JIRA是一款集项目管理、缺陷跟踪、团队协作、服务管理、敏捷规划于一体的优秀商业软件,目前已被广泛应....
的头像 Vector维克多 发表于 09-26 09:29 109次 阅读

怎样去设置数值元件的格式呢

怎样去设置数值元件呢? 怎样去设置数值元件的格式呢? ...
发表于 09-26 09:16 0次 阅读

电力有源滤波柜有哪些应用

电力有源滤波柜的特色是什么? 电力有源滤波柜有哪些应用? ...
发表于 09-26 06:27 0次 阅读

剖析C语言中scanf函数常见问题

在写C代码时难免对一些知识点不熟悉,导致犯错,今天分享几点小知识给大家。 空白符问题        ....
的头像 STM32嵌入式开发 发表于 09-24 16:45 165次 阅读

基于FPGA的无位置无刷直流电机控制系统设计

基于FPGA的无位置无刷直流电机控制系统设计(安徽力普拉斯电源技术有限公司招聘)-该文档为基于FPG....
发表于 09-24 16:24 20次 阅读
基于FPGA的无位置无刷直流电机控制系统设计

数据编排支持人工智能(AI)的下一步发展

深度学习的快速发展给大规模实现该技术所需的硬件架构带来了巨大压力。尽管由于意识到性能是一个绝对要求,....
发表于 09-24 16:14 2910次 阅读
数据编排支持人工智能(AI)的下一步发展

基于FPGA的直流稳压电源自动测试系统设计

基于FPGA的直流稳压电源自动测试系统设计(电源技术是不是核心)-该文档为基于FPGA的直流稳压电源....
发表于 09-24 15:46 13次 阅读
基于FPGA的直流稳压电源自动测试系统设计

企业中的推荐系统包括哪几个部分

随着互联网的发展和人工智能的进步,各个厂家都开始针对性的向用户推荐自己的内容,这些内容包括了文章、视....
的头像 TensorFlow 发表于 09-24 14:49 124次 阅读

土壤检测仪器的特点有哪些

林业技术推广中心-土壤检测仪器【莱恩德 LD-GT4】土壤中的养分种类也很多,但是这些养分并不能全部....
发表于 09-24 13:56 21次 阅读

基于FPGA的三相变频电源系统设计

基于FPGA的三相变频电源系统设计(电源技术期刊给钱就发吗)-该文档为基于FPGA的三相变频电源系统....
发表于 09-24 13:34 13次 阅读
基于FPGA的三相变频电源系统设计

pod底层网络和数据存储是如何进行的

1. 核心组件原理 —— pod 核心原理 1.1 pod 是什么 pod 也可以理解是一个容器,装....
的头像 马哥Linux运维 发表于 09-24 11:35 129次 阅读

基于FPGA+DSP的高精度数字电源数据采集系统设计

基于FPGA+DSP的高精度数字电源数据采集系统设计(开关电源技术发展综述)-该文档为基于FPGA+....
发表于 09-24 11:32 24次 阅读
基于FPGA+DSP的高精度数字电源数据采集系统设计

秒杀几道运用Dijkstra算法的题目

读完本文,可以去力扣解决如下题目: 743. 网络延迟时间(中等) 1514. 概率最大的路径(中等....
的头像 算法与数据结构 发表于 09-24 10:59 108次 阅读
秒杀几道运用Dijkstra算法的题目

拓扑排序算法有什么作用

大家好,我是bigsai。 拓扑排序,很多人都可能听说但是不了解的一种算法。不知者大多会提出这样的疑....
的头像 算法与数据结构 发表于 09-24 10:53 93次 阅读
拓扑排序算法有什么作用

给予全数字相控阵雷达的测试平台

凭借多年经验,俄克拉荷马大学(OU)的先进雷达研究中心(ARRC)正在构建有史以来第一部机动型极化全....
的头像 微波射频网 发表于 09-24 10:42 195次 阅读
给予全数字相控阵雷达的测试平台

为什么医疗系统需要FPGA

X 射线和超声等诊断成像系统已经应用了数十年,而随着包括计算机断层扫描(CT)、核磁共振成像(MRI....
的头像 英特尔FPGA 发表于 09-24 10:23 789次 阅读

存储新纪元即将到来

据估计,亚马逊网络服务公司(Amazon Web Services Inc.)今年将产生约90亿美元....
的头像 SSDFans 发表于 09-24 10:09 168次 阅读
存储新纪元即将到来

微软予力诺与诺德开辟医药领域全新业务场景应用

可以预见,在科技化的未来,数字技术的进步将会为人们创造更加美好的生活,而对医药行业更是意义非凡。愈来....
的头像 微软科技 发表于 09-24 09:41 992次 阅读

玉米赤霉烯酮检测仪的特点及创新技术

玉米赤霉烯酮具有雌激素的作用,可以是家禽产生雌性激素亢进症,妊娠的动物或人食用含有玉米赤霉烯酮的食物....
发表于 09-23 16:49 18次 阅读

什么是门控时钟 门控时钟降低功耗的原理

门控时钟的设计初衷是实现FPGA的低功耗设计,本文从什么是门控时钟、门控时钟实现低功耗的原理、推荐的....
的头像 FPGA之家 发表于 09-23 16:44 219次 阅读
什么是门控时钟 门控时钟降低功耗的原理

FPGA中多时钟域和异步信号处理的问题

有一个有趣的现象,众多数字设计特别是与FPGA设计相关的教科书都特别强调整个设计最好采用唯一的时钟域....
的头像 FPGA之家 发表于 09-23 16:39 202次 阅读

教你们如何使用Verilog HDL在FPGA上进行图像处理

该FPGA项目旨在详细展示如何使用Verilog处理图像,从Verilog中读取输入位图图像(.bm....
的头像 OpenFPGA 发表于 09-23 16:17 203次 阅读

Vivado之VIO原理及应用

虚拟输入输出(Virtual Input Output,VIO)核是一个可定制的IP核,它可用于实时....
的头像 OpenFPGA 发表于 09-23 16:11 146次 阅读
Vivado之VIO原理及应用

FPGA中如何使用Verilog处理图像

该FPGA项目旨在详细展示如何使用Verilog处理图像,从Verilog中读取输入位图图像(.bm....
的头像 OpenFPGA 发表于 09-23 15:50 148次 阅读

关于标签数据提升语法错误纠正效果

语法错误纠正 (GEC) 指的是试图对语法和其他类型的写作错误进行建模,并给出语法和拼写建议,从而改....
的头像 TensorFlow 发表于 09-23 15:44 135次 阅读

TMP411 ±1°C Programmable Remote/Local Digital Out Temperature Sensor

TMP411设备是一个带有内置本地温度传感器的远程温度传感器监视器。远程温度传感器,二极管连接的晶体管通常是低成本,NPN或PNP型晶体管或二极管,是微控制器,微处理器或FPGA的组成部分。 远程精度为±1 °C适用于多个设备制造商,无需校准。双线串行接口接受SMBus写字节,读字节,发送字节和接收字节命令,以设置报警阈值和读取温度数据。 TMP411器件中包含的功能包括:串联电阻取消,可编程非理想因子,可编程分辨率,可编程阈值限制,用户定义的偏移寄存器,用于最大精度,最小和最大温度监视器,宽远程温度测量范围(高达150°C),二极管故障检测和温度警报功能。 TMP411器件采用VSSOP-8和SOIC-8封装。 特性 ±1°C远程二极管传感器 ±1°C本地温度传感器 可编程非理想因素 串联电阻取消 警报功能 系统校准的偏移寄存器 与ADT7461和ADM1032兼容的引脚和寄存器 可编程分辨率:9至12位 可编程阈值限...
发表于 09-19 16:35 335次 阅读
TMP411 ±1°C Programmable Remote/Local Digital Out Temperature Sensor

TMP468 具有引脚可编程的总线地址的高精度远程和本地温度传感器

TMP468器件是一款使用双线制SMBus或I 2 C兼容接口的多区域高精度低功耗温度传感器。除了本地温度外,还可以同时监控多达八个连接远程二极管的温度区域。聚合系统中的温度测量可通过缩小保护频带提升性能,并且可以降低电路板复杂程度。典型用例为监测服务器和电信设备等复杂系统中不同处理器(如MCU,GPU和FPGA)的温度。该器件将诸如串联电阻抵消,可编程非理想性因子,可编程偏移和可编程温度限值等高级特性完美结合,提供了一套精度和抗扰度更高且稳健耐用的温度监控解决方案。 八个远程通道(以及本地通道)均可独立编程,设定两个在测量位置的相应温度超出对应值时触发的阈值。此外,还可通过可编程迟滞设置避免阈值持续切换。 TMP468器件可提供高测量精度(0.75°C)和测量分辨率(0.0 625°C)。该器件还支持低电压轨(1.7V至3.6V)和通用双线制接口,采用高空间利用率的小型封装(3mm×3mm或1.6mm×1.6mm),可在计算系统中轻松集成。远程结支持-55°C至+ 150°C的温度范围。 特性 8通道远程二极管温度传感器精度:±0.75&...
发表于 09-18 16:05 242次 阅读
TMP468 具有引脚可编程的总线地址的高精度远程和本地温度传感器