闲庭信步使用图像验证平台加速FPGA的开发:第十八课——图像高斯滤波金字塔的实现
(本系列只需要modelsim即可完成数字图像的处理,每个工程都搭建了全自动化的仿真环境,只需要双击top_tb.bat文件就可以完成整个的仿真,大大降低了初学者的门槛!!!!如需要该系列的工程文件请关注知识星球:成工fpga,https://t.zsxq.com/DMeqH,关注即送200GB学习资料,链接已置顶!)
上篇我们讲解了图像的高斯滤波,那本篇我们就来做一件很有意思的事情,实现图像的金字塔。
那什么是图像的高斯金字塔呢?我们看看百科的解释,高斯金字塔本质上为信号的多尺度表示法,亦即将同一信号或图片多次的进行高斯模糊,并且向下取样,藉以产生不同尺度下的多组信号或图片以进行后续的处理,例如在影像辨识上,可以借由比对不同尺度下的图片,以防止要寻找的内容可能在图片上有不同的大小。高斯金字塔的理论基础为尺度空间理论,而后续也衍生出了多分辨率分析。
说白了就是对图像先进行高斯滤波,然后抽取,再进行高斯滤波,再进行抽取......每次抽取后图像的大小缩放到原来的四分之一,如下所示。
图像的高斯金字塔可以用FPGA来实现,但是涉及到控制信号的重新生成,比如每次缩放就要将场同步信号,行同步信号,数据有效信号缩短一倍,实现比较麻烦。所以本章我们就用图像测试平台直接实现图像的高斯金字塔。
首先在img_process_pkt包中新建pyramid_down task,用来实现图像的下采样。
同时修改gaussian_fpga,增加scale参数,方便不同尺寸图像的高斯滤波。
最后为了比对,我们可以把下采样前后的图像合成一副图像,那就增加几个task。pyramid2_data将两幅图像数据合成一幅图像。
pyramid3_data将三幅图像数据合成一幅图像。
pyramid4_data将四幅图像数据合成一幅图像。
仿真文件tb_image_sim中,对灰度图像分别进行三次高斯滤波和下采样,最后将下采样的图像和原始图像合并成一副图像画图,本篇为了更好的展示效果,将图片换成了1920x1080大小的图片。
双击sim文件夹下的top_tb.bat文件,完成系统的自动化仿真。
打开img文件夹,可以看到高斯金字塔相关的图像。如下是灰度图像和一次高斯滤波一次下采样后合成的图片,下采样后图像的清晰度还可以。
如下是两次高斯滤波和两次下采样合成的图片。
最后是三次高斯滤波和三次下采样合成的图片,下采样到一定程度,图像细节丢失过多,总会模糊失真的。