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

相关推荐
硅谷秋水8 小时前
面向长上下文自动驾驶的规划对齐Token压缩
人工智能·深度学习·机器学习·计算机视觉·自动驾驶
神奇元创9 小时前
商用级光路加速卡:大模型推理的极速落地方案
python·神经网络·fpga开发·dsp开发
YOLO数据集集合9 小时前
无人机山地灾害巡检数据集 | 滑坡多区域实例分割 遥感影像解译 地质灾害预警深度学习数据10296期
人工智能·深度学习·目标检测·计算机视觉·无人机
庄周迷蝴蝶10 小时前
Vision Banana
人工智能·计算机视觉
Java患者·14 小时前
《Python 人脸识别入门实践:从人脸检测到人脸比对完整实现》
开发语言·python·opencv·目标检测·计算机视觉·目标跟踪·视觉检测
丨白色风车丨17 小时前
OpenCV 实战入门:轮廓检测、模板匹配与命令行参数解析
人工智能·opencv·计算机视觉
乐迪信息18 小时前
乐迪信息:港口船舶偏航难监管,AI智能监测实时发出预警提醒
大数据·人工智能·安全·计算机视觉·目标跟踪
FPGA小徐18 小时前
深度神经网络FPGA设计进展、实现与展望
fpga开发
ʜᴇɴʀʏ18 小时前
SSVOD 基础知识
人工智能·目标检测·计算机视觉
程序员爱德华18 小时前
计算机视觉-自动驾驶
机器学习·计算机视觉·自动驾驶