基于PYNQ-Z2的失焦图像去模糊系统

基于PYNQ-Z2的失焦图像去模糊系统


by 张泽坤、王纪尧、莘乃杰&管斌

 

第一部分

设计概述 /Design Introduction

 

项目简介:

本设计目标是针对如对焦不准等因素产生的模糊照片进行清晰化、去模糊操作。

在本次的设计实践中,我们学习到了如下内容:

  1. 图像恢复算法

在最初的算法调研以及在PC上对算法进行模拟仿真时,我们首先了解了光学成像产生模糊退化数学模型及常见的点扩散函数。然后对还原过程相关的直接反卷积法、维纳滤波、最小二乘反卷积法、LR迭代法以及一些运动模糊逆滤波的算法进行了python仿真,进行图像的加模糊和去模糊,比较了各个算法的效果及复杂程度,最后选定了维纳滤波算法进行HLS移植。

 

  1. HLS相关内容

整体结构参考canny例程,使用AXI接口来进行数据的交互,学会了与常规C语言略有不同的数据流读取方法。

针对维纳滤波过程中所需要的傅里叶变换过程,参考HLS中的一维FFT例程实现了二维FFT操作,对FFT的参数配置、溢出等内容以及相关的文档有了进一步的了解。

在实现矩阵的点乘、共轭等双层循环操作时,使用数组划分、矩阵展开、流水操作等方式来进行优化,将之前课程所学知识学以致用。

 

期望的设计应用方向:

能够借助zynq的PL端加速功能实现高速的图像去模糊,然后实施处理如监控摄像头、手持摄像机等设备的每一帧输出图片,修正其因对焦不对等原因产生的照片模糊。

 

效果展示:

原图:

模糊图像:

恢复图像:

实物图像:

 

 

第二部分

系统组成及功能说明 /System Construction & Function Description

(请对作品的1. 计划实现及已实现的功能;2. 项目系统框图;3. 使用的技术方向做说明)

 

  1. 实现的功能

对本地图片、摄像头输入图片的读取及PS-PL端的数据通信。(但是目前主要还是对本地图片进行处理)。

PL端能够对得到的图片数据进行二维傅里叶变换,通过维纳反卷积获得复原图像的频谱,再通过逆傅里叶变换得到新的图像。

但是目前位置只能对自己生成的图像进行效果一般的去模糊,还不能对相机等设备自然拍摄出的图像进行有效的去模糊。

 

  1. 项目框图

 

  1. 技术方向

目前来讲,成像器件与探测目标直接的大气湍流、相对运动、CCD欠采样等因素都会造成图像的模糊。除了采用更加昂贵的光学元件及CCD外,软件算法去除模糊是一种十分经济的提高成像质量的方式。

在图像处理这种经常需要用的卷积和并行运算的计算处理上,FPGA并行加速的优势可以很容易的发挥出来,达到常规运算设备难以企及的处理速度,使得成像器件发出的图像数据能够被及时的处理,便于实现图像的即时去模糊等操作。

 

第三部分

完成情况及性能参数 /Final Design & Performance Parameters

(作品已实现的功能及性能指标)

 

本设计已经能够在PS端和PS端进行图像的数据传输,PL端能够高效的进行二维的FFT以及iFFT,将一张照片FFT后立刻进行iFFT,其输出图像与原图像保持一致证明了FFT功能的可靠性。

编写了带有HLS优化指令的矩阵运算函数,能够高效的对图像和点扩散函数的频域矩阵进行乘除共轭等操作。

能够根据相关论文中的维纳滤波公式对图像进行简单的处理。

 

性能指标:

采用图像矩阵的差的二范数来评价图像到原图像的距离,二范数的定义如下

可知两图像差别越大,则其矩阵差的二范数越大,且区别较大的点对二范数的数值贡献较大。

由于图像前后的灰度有一定的差异,会影响二范数的大小,因此将图像矩阵都除以其各自的平均值进行归一化。将复原图到原图像的距离与模糊图到原图像的距离进行对比,有如下结果

 

复原图像与原图像距离

0.5541743097169217

模糊图像与原图像距离

69.80535980146242

    可见该系统有效的将模糊图像向原图像靠近了。

 

2020年9月23日 00:39
浏览量:0
点赞
首页    Catalog    2020 Summer School    基于PYNQ-Z2的失焦图像去模糊系统