当前位置: 首页 > news >正文

闲庭信步使用图像验证平台加速FPGA的开发:第十七课——图像高斯滤波的FPGA实现

 (本系列只需要modelsim即可完成数字图像的处理,每个工程都搭建了全自动化的仿真环境,只需要双击top_tb.bat文件就可以完成整个的仿真,大大降低了初学者的门槛!!!!如需要该系列的工程文件请关注知识星球:成工fpga,https://t.zsxq.com/DMeqH,关注即送200GB学习资料,链接已置顶!)

上节课我们讲解了图像五行数据缓存模块data_cache5.sv的实现,有了data_cache5.sv文件,那5x5算子的各种算法就可以直接进行开发了。那本篇就来实现5x5算子的高斯滤波。

高斯滤波的核心作用是消除高斯噪声并实现信号平滑处理,同时保持较好的边缘细节‌,广泛应用于图像处理和电子信号处理领域,现在常用的高斯金字塔,就是先对图片进行高斯滤波,然后再抽取成分辨率小的图片。

我们先来找一组高斯算子,由于高斯算子都是小数,我们FPGA不能直接处理,那就想转变成整数。

在img_process_pkt中,我们先实现高斯滤波的功能,如下所示。

FPGA实现高斯滤波,可以直接乘加后将结果除以159即可,但是本着尽量少使用乘除法的原则,乘2可以左移一位;乘4左移2位;乘5(4+1)就是左移2位和原数值相加;乘9(8+1)左移3位和原数值相加;乘12(8+4)左移3位和左移2位相加;乘15(16-1)就是左移4位和原数值相减。而除159可以用2048/159约等于13(16-2-1),就是将所有高斯因子的和sum左移4位,减去sum左移1位,再减去sum,将最终的结果右移11位即可。

在\src\gaussian文件夹下新建gaussian.sv文件,编程实现就很简单了,例化data_cache5模块获取5x5的像素数据,将高斯因子中的数据安装乘2,乘4,乘5,乘9,乘12,乘15分组求和,然后完成乘2,乘4,乘5,乘9,乘12,乘15的计算。

用一个时钟实现上面6个数的相加,然后再用一个时钟实现除159的计算,用减法即可。由于计算用到了2个时钟周期,就需要把场同步,行同步,数据有效信号也延时2个时钟。

同理,我们在img_process_pkt中实现的gaussian task直接用的乘除法,和FPGA实现的结果一定存在偏差,所以要按照FPGA设计的思路来新写一个高斯滤波的task,如下所示。

在top文件中对rgb2ycbcr和gaussian模块的例化,完成对灰度图像的高斯滤波。

在tb_image_sim文件中的第二个initial块中,将图像测试平台和FPGA硬件仿真的结果保存并比对。

双击sim文件夹下的top_tb.bat文件,完成系统的自动化仿真。

可以看到在modelsim的Transcript有如下的打印信息,图像测试平台和FPGA硬件仿真的结果一致。

对比一下高斯滤波前后的图片,效果还是非常明显的。

而且也可以看到图像测试平台和FPGA硬件仿真的结果是一致的(no_seq*是图像测试平台处理后的图片,seq*是FPGA硬件仿真处理后的结果)。

http://www.lryc.cn/news/589483.html

相关文章:

  • 基于Langchain4j开发AI编程助手
  • 无人机GPS定位系统核心技术解析
  • 图像的读入、显示、保存和图像文件显示
  • 笔试——Day9
  • IMU 能为无人机提供什么数据?
  • 北京-4年功能测试2年空窗-报培训班学测开-第五十一天
  • 快速通关二叉树秘籍(下)
  • Rocky Linux 9 源码包安装php8
  • ChatTongyi × LangChain:开启多模态AI应用创新之门
  • 共射级放大电路的频率响应Multisim电路仿真——硬件工程师笔记
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | DoubleClickHeart(双击爱心)
  • [设计模式]C++单例模式的几种写法以及通用模板
  • Kubernetes 架构原理与集群环境部署
  • 降本增效!自动化UI测试平台TestComplete并行测试亮点
  • 2025最新国产用例管理工具评测:Gitee Test、禅道、蓝凌测试、TestOps 哪家更懂研发协同?
  • ESLint 除了在packages.json还能在哪里配置?
  • 实测两款效率工具:驾考刷题和证件照处理的免费方案
  • CF37E Trial for Chief 题解
  • 【LeetCode 热题 100】226. 翻转二叉树——DFS
  • Python 数据建模与分析项目实战预备 Day 6 - 多模型对比与交叉验证验证策略
  • Zookeeper入门安装与使用详解
  • CAS单点登录架构详解
  • 关于实习的经验贴
  • 鸿蒙和Android知识点
  • 软件测试面试经历分享?
  • iOS App 上架工具选型与跨平台开发 iOS 上架流程优化实录
  • 文心一言4.5企业级部署实战:多模态能力与Docker容器化测评
  • x86版的ubuntu上使用qemu运行arm版ubuntu
  • PHP连接MySQL数据库的多种方法及专业级错误处理指南
  • Postgresql源码(147)Nestloop流程与Instrumentation简单分析