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

相关推荐
千宇宙航5 小时前
闲庭信步使用图像验证平台加速FPGA的开发:第二十课——图像还原的FPGA实现
fpga开发
蜉蝣之翼❉8 小时前
Amplitude Modulated (AM) Digital Halftoning
计算机视觉
顾随8 小时前
(三)OpenCV——图像形态学
图像处理·人工智能·python·opencv·计算机视觉
霖009 小时前
神经网络项目--基于FPGA的AI简易项目(1-9图片数字识别)
人工智能·pytorch·深度学习·神经网络·机器学习·fpga开发
chuy7009 小时前
FPGA——ZYNQ7020学习日记(PS端)4(开始PS控制VGA显示)
学习·fpga开发
布兰妮甜11 小时前
Adobe Photoshop:数字图像处理的终极工具指南
图像处理·ui·adobe·photoshop
hahaha601611 小时前
使用./lspci -vvv查看PCIE链路信息
网络·fpga开发
格林威13 小时前
Baumer工业相机堡盟工业相机如何通过YoloV8模型实现人物识别(C#)
开发语言·人工智能·数码相机·yolo·计算机视觉·c#
Virgil13914 小时前
数据分布是如何影响目标检测精度的
人工智能·深度学习·yolo·目标检测·计算机视觉