闲庭信步使用图像验证平台加速FPGA的开发:第二十一课——高斯下采样后图像还原的FPGA实现

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

前面我们实现了图像的高斯滤波下采样得到高斯金字塔的图片,反过来,我们能不能把下采用后的图片还原回去呢?当然是可以的,如下所示,通过上采样是可以还原出原图片的。但是这张图没有说上采样的方法和步骤。

图像的上采样首先要对下采样的图片进行插值 ,因为一次下采用后图片大小变成了原来的四分之一,要先插值把四分之三的图片补足。插值可以简单的补零和补相邻的像素,我们采用补相邻点的像素。插值后的图片会很不自然,所以要进行高斯滤波进行模糊和平滑高斯滤波后的图片数据再和拉普拉斯金字塔的数据还原操作后就可以还原出原始的图片

首先我们要在FPGA里面模拟出来下采样后插值后的图像,在\src\pyramid文件夹下新建pyramid.sv文件,实现的功能就是让奇数行的数据和相邻的偶数行的数据一样,奇数列的数据和相邻的偶数列的数据一样,实现如下所示,需要一行数据的缓存,用来填充下一行。根据奇偶行列的指示信号完成数据的处理。

高斯滤波,拉普拉斯金字塔,图像还原的模块前面章节都已经实现,所以在top模块中直接例化rgb2ycbcr,gaussian,row_cache3,laplacian,pyramid,restoration等模块,注意一点,就是高斯滤波至少会有2行2列数据的延时,所以上采样高斯滤波时,需要对拉普拉斯金字塔的数据进行row_cache3的缓存。流程也是非常清晰的,通过rgb2ycbcr模块获取灰度图像,gaussian模块对灰度图像进行高斯滤波,row_cache3模块缓存同步灰度图像,通过laplacian模块获取拉普拉斯金字塔的数据;pyramid模块完成模拟完成图像的上采样插值,gaussian模块对上采样的图像进行高斯滤波,row_cache3模块缓存同步拉普拉斯金字塔的数据,最终通过restoration模块完成图像的复原。

在img_process_pkt包中也新建pyramid_up task,方便图像测试平台和FPGA仿真数据的比对。

在tb_image_sim文件中的第二个initial块中,在图像测试平台中首先将RGB图像通道分离,然后获取灰度图像,再对灰度图像进行高斯滤波和拉普拉斯金字塔数据获取,然后对高斯滤波的图像进行下采样后再上采用,上采样后的图像再进行高斯滤波,最后进行图像的复原。最后将图像测试平台和FPGA硬件仿真的结果保存并比对。

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

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

最后我们打开img文件夹,对比一下原始图像和上采样的图片,左边是原始图片,后面是上采样还原的图片,除了有点模糊,整体的还原效果还是非常自然的。

相关推荐
UVM_ERROR13 小时前
硬件设计实战:解决Valid单拍采样失效问题(附非阻塞赋值与时序对齐核心要点)
驱动开发·fpga开发·github·芯片
brave and determined13 小时前
可编程逻辑器件学习(day36):从沙粒到智能核心:芯片设计、制造与封装的万字全景解析
fpga开发·制造·verilog·fpga·芯片设计·硬件设计·芯片制造
CoovallyAIHub17 小时前
超越YOLOv8/v11!自研RKM-YOLO为输电线路巡检精度、速度双提升
深度学习·算法·计算机视觉
BagMM18 小时前
FC-CLIP 论文阅读 开放词汇的检测与分割的统一
人工智能·深度学习·计算机视觉
步达硬件1 天前
【FPGA】FPGA开发流程
fpga开发
Dev7z1 天前
基于Matlab图像处理的EAN条码自动识别系统设计与实现
图像处理·人工智能
Dev7z1 天前
面向公共场所的吸烟行为视觉检测系统研究
人工智能·计算机视觉·视觉检测
橙露1 天前
视觉检测硬件分析
人工智能·计算机视觉·视觉检测
AndrewHZ1 天前
【图像处理基石】如何使用大模型进行图像处理工作?
图像处理·人工智能·深度学习·算法·llm·stablediffusion·可控性
AndrewHZ1 天前
【图像处理基石】图像处理的基础理论体系介绍
图像处理·人工智能·算法·计算机视觉·cv·理论体系