闲庭信步使用图像验证平台加速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文件夹,对比一下原始图像和上采样的图片,左边是原始图片,后面是上采样还原的图片,除了有点模糊,整体的还原效果还是非常自然的。

相关推荐
郝旭帅电子设计团队21 小时前
图像处理是什么
图像处理·fpga开发·郝旭帅电子设计团队·郝旭帅
格林威1 天前
多相机微秒级对齐:硬件触发 vs PTP(IEEE 1588)方案实战对比
开发语言·人工智能·数码相机·机器学习·计算机视觉·视觉检测·机器视觉
古一木1 天前
opencv 形态学操作
人工智能·opencv·计算机视觉
雪的季节1 天前
思考车牌号的提取
计算机视觉
weixin_452600691 天前
D2632大电流低差压可调线性稳压器介绍,D2632可替换MIC29302
fpga开发·机器人·无人机·电动工具·车载摄像头
科研小刘带你玩学术1 天前
【学术干货】CVPR论文解析:扩散模型如何推动生成式人工智能进入新时代?
人工智能·深度学习·计算机视觉·生成式ai·扩散模型
ARM|X86+FPGA工业主板厂家1 天前
基于ARM+FPGA平台在精密测控领域的应用:ZYNQ千兆以太网高速数据记录仪
arm开发·fpga开发
cmc10281 天前
275.需要双边沿触发时,直接对时钟取反会不会出问题
fpga开发
sali-tec1 天前
C# 基于OpenCv的视觉工作流-章100-抠图
图像处理·人工智能·opencv·计算机视觉
动物园猫1 天前
夜间野生动物目标检测数据集:17类别、17,000张图像 | 目标检测
人工智能·目标检测·计算机视觉