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

闲庭信步使用图像验证平台加速FPGA的开发:第二十八课——图像膨胀的FPGA实现

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

上篇完成了图像腐蚀的FPGA实现,本篇来完成图像的膨胀。

图像的膨胀和图像的腐蚀操作基本完全一样,不同点就是图像腐蚀是对算子对应的图像数据取与操作,二图像的膨胀是对算子对应的图像数据取或操作。

我们在\src\dilation文件夹下新建dilation.sv文件,rtl代码实现如下。首先例化data_cache3模块,用来获取3x3区域的图像数据。

根据不同的膨胀算子,实现了四种图片的膨胀算法。膨胀算法就是对算子对于的数据直接去或即可

在顶层的top模块中,例化了rgb2ycbcr,binary,dilation模块,对二值化的单bit数据进行膨胀

在tb_image_sim文件中的三个initial块如下所示,主要完成图像数据的读写和比对等。

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

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

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

当然也可以和上课腐蚀的图像对比一下。

大家可能看出来最近的几篇文章都是比较按部就班,以为做相关的工程都是非常简单的事情,其实不是这样的,成工在做每个工程的时候几乎都会遇到一些问题,有些问题会花费很长的时间来定位bug,目前提供的工程都是问题解决后的工程。

比如这个工程,成工刚设计好运行的时候比对结果是这样的,并不是直接比对通过的。

成工通过查看波形一点点的定位,最后发现问题出在data_cache3模块上,如下所示,在每行数据缓存的最后位置会给一个零,用来补零操作,前面之所以没有出问题时因为每个像素数据都是8bit的,而227行补一个8比特的0是没有问题的。但是到了腐蚀和膨胀的时候,每个像素二值化后是1bit,这儿补8bit的零相当于补了8个像素,从而造成错误。

按照如下的方式修改可以解决问题,用参数来控制补零,这样就不会多补。

所以就算大家拿到了代码,也希望自己来设计一遍,因为只有自己亲自设计了,才能对流程和问题有深入的理解。FPGA能力提高的最快方式就是在正确思路的指导下尽量多练,也就是大家常说的持续做正确的事情,早晚会成功的!!!!!!!!!

http://www.dtcms.com/a/289998.html

相关文章:

  • “融合进化,智领未来”电科金仓引领数字化转型新纪元
  • Flutter和Kotlin的对比
  • 【用unity实现100个游戏之34】使用环状(车轮)碰撞器(Wheel Collider)从零实现一个汽车车辆物理控制系统,实现一个赛车游戏
  • kotlin和Jetpack Compose对于Android系统来说是什么关系?
  • Python 进阶(七):XML 基本操作
  • opencv无法读取视频
  • Python100个库分享第38个—lxml(爬虫篇)
  • Navicat 17.3 正式发布 | 现已支持达梦、金仓和 IvorySQL 数据库
  • 图片转 PDF三个免费方法总结
  • C++ - 仿 RabbitMQ 实现消息队列--服务端核心模块实现(二)
  • CoolUtils Total PDF Converter:多功能PDF转换专家
  • STM32之GPS定位模块(GT-U8)
  • 合并pdf工具下载
  • Kotlin 高阶函数初步学习
  • k8s的calico无法启动报错解决
  • 集群技术笔记-HAProxy 与 Keepalived 高可用负载均衡实战
  • 如何使用python网络爬虫批量获取公共资源数据实践技术应用
  • 江苏思必驰科技25Java实习面经
  • 杰和科技工业计算机AF208,打造高可靠新能源汽车检测产线
  • Valgrind Cachegrind 全解析:用缓存效率,换系统流畅!
  • 基于springboot+vue+mysql的在线教育系统(源码+论文)
  • 多级缓存(亿级流量缓存)
  • 布局AI +文化新赛道,浙江省文化产业投资集团赴景联文科技调研交流
  • 滚珠导轨:物流输送与包装分拣的“高速轨道”
  • 前端包管理工具深度对比:npm、yarn、pnpm 全方位解析
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘pytest’问题
  • Java 实现 TCP 一发一收通信
  • GitHub+Git新手使用说明
  • Unreal ARPG笔记
  • 讯飞输入法3.0.1742功能简介