《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 图像去模糊系统频域优化设计
图像去模糊系统频域优化设计
2019年电子技术应用第7期
李菁菁,刘云飞
南京林业大学 信息科学技术学院,江苏 南京210037
摘要: 在实际应用中,模糊图像清晰化处理难以在空域实现,为此需对图像进行频域转换,在频域中实现图像去模糊。采用FPGA开发平台“硬件”实现图像处理,实时性强,但消耗资源过多,执行效率低。针对此问题,提出了一种“软硬结合”的设计方案,以DE1-SoC开发板为硬件平台,在FPGA中配置Frame Reader、SDRAM、混合器、频域转换模块等,并映射到HPS中,HPS利用HPS-FPGA总线访问SDARM,获取模糊图像频谱图。利用Linux C编程在HPS中对模糊图像频谱图进行模糊尺度及角度估计,得到点扩散函数PSF,并利用经典复原算法进行复原,实现图像盲去模糊。系统应用基2-DIT-FFT对图像的行列依次进行频域转换,相比于固有IP核及通用频域转换模块,提高了图像频域转换精度,减少硬件资源消耗。
中图分类号: TP391
文献标识码: A
DOI:10.16157/j.issn.0258-7998.190235
中文引用格式: 李菁菁,刘云飞. 图像去模糊系统频域优化设计[J].电子技术应用,2019,45(7):107-111,116.
英文引用格式: Li Jingjing,Liu Yunfei. An optimum design of frequency domain processing for image deblurring system[J]. Application of Electronic Technique,2019,45(7):107-111,116.
An optimum design of frequency domain processing for image deblurring system
Li Jingjing,Liu Yunfei
Institute of Information Science and Technology,Nanjing Forestry University,Nanjing 210037,China
Abstract: In practical applications, it is difficult to make blurred images clear in spatial domain. Therefore, it is necessary to transform the image in frequency domain and implement image deblurring in frequency domain. When using the development platform of FPGA, image processing is realized by pure hardware, which has strong real-time performance, but consumes too much resources and low execution efficiency. In order to solve this problem, this paper proposes a design scheme of combining hardware and software, which uses DE1-SoC development board as hardware platform, configures Frame Reader, SDRAM, mixer, frequency domain conversion module in FPGA, and maps them to HPS. HPS accesses SDARM using HPS-FPGA bus, and obtains the spectrum of blurred image. In HPS, it uses Linux C programming to estimate the scale and angle for blurred image spectrum, namely PSF, and restores it with classical restoration algorithm to realize blind deblurring. The system uses base 2-DIT-FFT to convert the rows and columns of images in frequency domain. Compared with the inherent IP core and general frequency domain conversion module, the system improves the image quality and reduces the consumption of hardware resources.
Key words : FPGA;HPS;SoC;FFT;frequency domain conversion

0 引言

    通常,图像处理算法按照作用域可分为时域和频域两大类[1]。在实际应用中,大多数图像采用时域处理算法,但处理模糊图像时,考虑到时域中去卷积难度较大,对模糊核的估计处理精度较低,故采用频域处理算法,即先对模糊图像频域转换,再在频域中处理。其中,FFT(快速傅里叶变换)是数字信号分析和处理过程中最常用的重要变换之一,在频域中的很多运算都可以转换为FFT的基本运算[2]

    随着集成电路工艺不断进步,FPGA器件也在不断发展,其可配置、功耗低、易于实现流水和并行结构的特点,提高了图像处理速度,满足现代信号处理的高速度、高可靠性的要求[3]。Altera公司的DE1-SoC开发板是一个基于可编程技术、高度集成的硬件平台,具有较高实时性。它采用内嵌双核Cortex-A9硬核处理器SoC FPGA芯片,可在硬件和软件之间实现调度,满足了图像处理设计中功耗、性能及成本等要求。开发板的硬核处理系统(HPS)包括ARM处理器、SD卡、USB、存储器等接口,硬件系统FPGA采用Altera公司的Cyclone V芯片,集成了视频音频、以太网等外设。两大硬件系统既可独立运行,也可通过高速AXI内部总线实现HPS和FPGA的数据访问、数据传输和寄存器控制。

    本文设计了一种基于FPGA和HPS硬核处理器相结合的片上系统,结合图像去模糊算法,采用输入数据预处理、两块RAM交替存储数据、溢出截位、流水线结构等方式实现图像去模糊系统中的频域处理优化设计。与之前其他同类系统中频域处理算法相比,图像频域转换精确度高、硬件资源消耗减少,并且运行速度快。

1 系统的总体设计

1.1 硬件系统设计

    本系统以DE1-SoC为开发平台,包含HPS和FPGA两部分,其中HPS搭载Linux操作系统,借助摄像头驱动V4L2,负责去模糊算法执行、外设控制及利用Qt界面实现人机交互。FPGA完成图像处理模块配置,实现图像频域转换(Bayer-to-RGB、RGB-to-Gray、频域转换)以及图像显示子系统,实时更新HPS中Qt界面输出的显示内容。系统的总体框图如图1所示。

qrs2-t1.gif

    为研究图像去模糊功能,预先采集一幅模糊图像。首先将USB摄像头固定在可滑动三脚架上,将DE1-SoC开发板与相机、显示器、键盘、鼠标等外部设备连接,对三角架设置一定的角度并调整好摄像头方向,快速滑动相机,同时用鼠标触发捕获按钮,捕获图像。将采集到的图像数据进行RGB格式转换,并将数据送到SDRAM存储模块对图像数据信息进行缓存,防止系统内部时钟频率不同,造成采样和显示不一致[4]。接着,帧读取器读取SDRAM中缓存的数据,通过VGA控制模块将捕捉到的拍摄画面在显示器上显示;同时将数据传输到RGB2Gray格式转换模块,完成灰度图像的转换。然后传送到频域转换模块,对图像进行频域转换。最后,应用经典去模糊算法进行图像去模糊,并利用VIP控制器通过Lightweight HPS-to-FPGA总线访问FPGA内部IP核,控制硬件各模块工作。本系统只采用一个帧读取器,通过配置它的寄存器来切换显示内容,简化了控制逻辑,节省了FPGA硬件资源。

1.2 基于Qt图像用户界面设计

    Qt是一个跨平台的C++图形用户界面的应用程序框架[5],具有可移植性强、运算速度快、方便性等特点。它通过信号(signal)和插槽(slot)的方法,使对象之间在相互未知情况下进行合作,从而实现真正的构建编程[5]。并且,Qt支持UNIX系统、Linux系统、Windows等多种平台。

    本系统软件部分在Linux 16.04环境下编译,以Qt框架为基础,设计了一个集模糊图像采集、显示、修复以及人机交互界面的嵌入式软件。在Qt的图像用户界面设置了5个功能按钮,分别是打开摄像头(Open Camera)、关闭摄像头(Close Camera)、图像捕获(Image Capture)、图像修复(Recovery)、退出界面(Exit)。三个显示的窗口分别是视频显示(左上方)、捕获图像显示(右上方)、模糊图像修复结果显示(左下方)。搭建实验平台如图2(a)所示:将USB摄像头固定在可滑动三脚架上,DE1-SoC开发板与相机、显示器、键盘、鼠标等外部设备相连接,DE1-SoC开发板VGA端口与显示屏相连接,对三角架设置一定的角度并且调整好摄像头方向,快速滑动相机,同时用鼠标触发捕获按钮,捕获模糊图像,如图2(b)所示,点击图像修复按钮,执行图像去模糊算法,进行修复处理,最终结果如图2(c)所示。

qrs2-t2.gif

2 FPGA核心模块设计

    在FPGA中进行硬件核心模块设计,实现模糊图像的频域转换。主要核心模块由图像灰度变换模块、一维FFT模块、二维FFT模块等组成。 

2.1 图像灰度变换模块

    将采集的彩色图像进行频域转换时,需要单独计算每个颜色通道,计算量大且复杂,因而需将彩色图像转换到灰度图像,以减少数据量,同时也不会损坏其图像信息[6]。为此先将彩色图像数据分为R、G、B三个颜色通道,分别存储在存储器中。为使灰度图像处理有更好的视觉效果,根据心理学特征进行如式(1)所示的灰度图像转换(Luminance法),并设计灰度图像转换模块。灰度变换后完成后,将灰度图像数据存储在SDRAM中。

    qrs2-gs1.gif

2.2 一维FFT模块设计

    FFT算法是数字图像处理中最重要的核心算法之一,是影响图像去模糊处理系统整体效率的关键[7]。本文采用按时域抽取的基-2 DIT算法,将初始数据分为前一半和后一半分别存储到存储器中,通过时序控制分别从RAM1、RAM2中采用抽取奇数点、偶数点方法进行每一级运算。算法主要由输入模块、存储模块、蝶形运算模块、溢出检测、截位等模块组成。总体框图如图3所示。

qrs2-t3.gif

    为实现一维FFT,先将输入数据进行位扩展,以防运算过程中出现溢出时及时处理。通过时序控制,将输入数据按照倒位序的方式存储到指定的RAM中。为保证资源的有效利用,设置两个存储单元,分别存储一半数据,既保证数据流水线输入,又提高系统运算效率,节省运算时间。通过时序控制,调用RAM中存储数据以及ROM的蝶形运算因子,进行蝶形运算。根据旋转因子特性,只需存储前一半的旋转因子,后一半通过地址偏移得到,节省了存储空间。在每一级蝶形运算结束后,需要进行溢出检测,判断是否有溢出,若有溢出需要对溢出数据进行截位处理。最后按顺序进行数据输出,存储到存储单元中。

2.3 二维FFT模块设计

    对图像进行二维傅里叶变换时,利用变换可分性采用降维方法处理,分别对行和列进行一维傅里叶变换。其原理为首先对行进行一维傅里叶变换,然后对行变换后的矩阵进行转置(变成列方向),将矩阵转置后再次进行一维傅里叶变换[8]。二维傅里叶变换降维处理没有计算顺序要求,先行后列或者先列后行的处理顺序不会影响数据处理结果[9]

    本文二维FFT处理模块如图4所示。采用FIFO作为数据缓冲池,将输入图像数据先经过FIFO进行缓存,以防FFT处理速度和图像输入速率不匹配[10]。从FIFO中按行读出数据,进行行方向的一维傅里叶变换,将行变换的结果存储到RAM存储器中。从RAM中按列读出数据,即在RAM中完成矩阵的转置处理,再进行一维傅里叶变换,变换的结果再次存入RAM存储器,再依次存入FIFO中,输出数据,此即为图像二维傅里叶变换后的结果。由于行FFT和列FFT处理结构完全一样,因而只需在处理过程中对数据进行转置以及存储就行。

qrs2-t4.gif

2.4 频域转换模块测试

    本设计使用DE1-SoC开发板,在Quartus II 13.1开发平台上使用Verilog HDL对各逻辑模块进行设计。完成模块设计后,以DE1-SoC开发板的5CSEMA5F31C6N为目标芯片,在Quartus II13.1上进行综合、布局、布线,在QuartusII环境下使用Programmer软件,将一维FFT模块下载到FPGA中。一维FFT模块占用FPGA内部主要逻辑资源如表1所示。由表1可知此设计资源占用较少。

qrs2-b1.gif

    为验证一维频域转换模块的精度,输入一个余弦波测试信号,如式(2)所示:    

    qrs2-gs2.gif

其中,信号幅值A=215-1,信号频率fc=1 kHz,信号采样频率fs=16 kHz,采样点数N=1 024。将测试信号产生的1 024点数据倒序输入到一维FFT模块,经过10级蝶形运算,按顺序输出其FFT结果。

    采用QuartusII 13.1和ModelSim10.1a联合仿真,编写Testbench测试文件,对一维FFT模块进行仿真测试。由仿真结果可知,在输入数据启动信号(master_sink_sop)和输入数据有效信号(master_sink_dav)均有效的情况下,将初始数据输入FFT模块,通过时序控制模块,进行每一级的蝶形运算。当10级蝶形运算结束后,系统输出数据有效信号(master_source_dav)置高,输出FFT处理后的结果。在ModelSim仿真时序图如图5所示。

qrs2-t5.gif

    将仿真生成的数据导出到OUT_I.txt、OUT_R.txt文本,再应用 MATLAB绘图得到基于FPGA的FFT算法处理结果,并与基于MATLAB的FFT计算结果相比较,如图6(a)、图6(b)所示。对比发现基于FPGA仿真结果与预期符合,待测频率1 kHz在64点处,镜像频率15 kHz在960点处。该频域处理模块能够有效地保存模糊图像的有效信息。

qrs2-t6.gif

3 HPS核心模块设计

    为实现模糊图像清晰化,需在处理器HPS中设计图像盲去模糊算法。图像盲去模糊算法核心是确定点扩散函数PSF,即模糊方向和模糊尺度[11]。因此,可根据图像自身先验知识建立模型,获得模糊图像PSF后,采用经典的图像复原算法得到清晰图像[12]

3.1 运动模糊方向估计

    运动模糊方向是指运动方向与水平方向的夹角。根据这一特性,对模糊图像频谱图进行 1°~180°的Radon变换,得到180列的变换矩阵R。由于该矩阵的任意列向量是在某一角度上沿一族直线的积分投影值,并且积分直线束与频谱中的亮暗条纹平行,故得到的投影向量中存在最大值且为全局最大值[13]。因此,可通过Radon变换检测出频谱暗条纹与水平方向的夹角,估计出运动模糊方向。算法具体步骤如下:

    (1)将M×N维模糊图像(如图7(a)所示)进行灰度转换,采用第2节的频域转换方法得到频谱图像(如图7(b)所示);

    (2)进行边缘检测及二值化得到图7(c);

    (3)将二值化后频谱图进行1°~180°的Radon变换,得到变换矩阵R及图7(d);

    (4)找到矩阵中最大值及其对应的列数n;

    (5)通过公式:tan(θ)=tan(n-90°)×M/N,计算得到运动模糊方向θ。

    经过计算得到模糊角度θ=45°(图7(d)最亮处对应的横坐标值),与真实值45°几乎接近。

qrs2-t7.gif

3.2 运动模糊尺度估计

    利用频谱图像(图7(b))及模糊角度θ,估计运动模糊尺度L。算法具体步骤如下:

    (1)对模糊图像(图7(b))进行θ角度旋转,得到图8(a),再进行滤波及二值化处理;

    (2)通过中心点并沿垂直方向,画出二值化后图像强度分布图;

    (3)对强度分布图进行极值处理,得到极值处理图(图8(b)),并确定中心条纹间距2d,估算出模糊图像的模糊长度L。

    经过计算得到模糊长度L=19.7,与真实值20接近。

qrs2-t8.gif

4 系统分析

    完成DE1-SoC开发系统的搭载,并与相机、显示器、键盘、鼠标等外部设备连接。然后将USB摄像头固定在可滑动三脚架上,对三角架设置一定的角度并调整好摄像头方向,快速滑动相机,同时用鼠标触发捕获按钮,捕获模糊图像如图9(a)所示。将模糊图像数据输入到Bayer2RGB模块,分R、G、B三通道存储,进行灰度转换,再输入到频域转换模块,进行频谱变换。最后,采用图像去模糊算法进行图像恢复,得到恢复图像如图9(b)所示。恢复图像细节清晰、稳定。通过观察可知,此系统能够较好地实现摄像头拍摄、抓拍捕获、频谱变换及恢复图像等功能,并在终端完好地保存了原模糊图像以及恢复后图像。 

qrs2-t9.gif

5 结论

    本文采用“软硬结合”的设计方案,设计了一种集图像采集、图像处理和图像传输为一体的去模糊系统。以DE1-SoC为开发平台,在处理器HPS中搭载Linux操作系统和V4L2摄像头驱动,通过Qt界面实现人机交互,进行图像采集、去模糊及显示,在FPGA中配置Frame Reader,SDRAM、混合器等模块,并且采用流水线的FFT算法,配置频域转换模块,实现频域转换处理。该频域转换模块相比于固有IP核及通用频域转换模块,保证了运算的精度,同时提高了处理速度,节省了存储空间和硬件资源,在图像处理上具有一定工程价值和现实意义。

参考文献

[1] 于洪松.基于FPGA的实时图像频域处理[D].北京:中国科学院大学,2014.

[2] 张丽君.大点数FFT的二维算法FPGA并行实现[J].无线电通信技术,2013,39(3):86-88.

[3] 杨海钢,孙嘉斌,王慰.FPGA器件设计技术发展综述[J].电子与信息学报,2010,32(3):714-727.

[4] 翁天阳,庄宇,于玮,等.基于HPS和FPGA的图像压缩感知编解码系统[J].电子技术应用,2017,43(5):90-93.

[5] 严贤,韩秀玲.基于Qt的串口通信应用研究与实现[J].微计算机信息,2012,28(8):114-116.

[6] 解启松.彩色图像转灰度图像的方法研究[D].兰州:兰州大学,2016.

[7] 袁泉,郭子祺,姚谦,等.基于并行处理的FFT快速算法[J].科学技术与工程,2008(16):4709-4714.

[8] 杨军,于艳艳,陈成,等.基于FPGA的二维FFT处理器的研究与设计[J].云南大学学报(自然科学版),2013,35(6):750-755.

[9] 温博,张启衡,张建林.高分辨图像二维FFT正/反变换实时处理方法及硬件实现[J].计算机应用研究,2011,28(11):4376-4379.

[10] 丁昊杰,刘敬彪,盛庆华.基于CMOS图像传感器的视频采集系统设计[J].现代电子技术,2012,35(14):178-181,188.

[11] 袁进,刘云飞.图像去模糊系统的频域处理改进方法[J].电子技术应用,2018,44(9):63-66.

[12] 程姝,赵志刚,吕慧显,等.顺序结构的运动模糊图像复原技术综述[J].计算机应用,2013,33(S1):161-165,185.

[13] 乐翔,程建,李民.一种改进的基于Radon变换的运动模糊图像参数估计方法[J].红外与激光工程,2011,40(5):963-969.



作者信息:

李菁菁,刘云飞

(南京林业大学 信息科学技术学院,江苏 南京210037)