文献标识码: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.
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所示。
为研究图像去模糊功能,预先采集一幅模糊图像。首先将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)所示。
2 FPGA核心模块设计
在FPGA中进行硬件核心模块设计,实现模糊图像的频域转换。主要核心模块由图像灰度变换模块、一维FFT模块、二维FFT模块等组成。
2.1 图像灰度变换模块
将采集的彩色图像进行频域转换时,需要单独计算每个颜色通道,计算量大且复杂,因而需将彩色图像转换到灰度图像,以减少数据量,同时也不会损坏其图像信息[6]。为此先将彩色图像数据分为R、G、B三个颜色通道,分别存储在存储器中。为使灰度图像处理有更好的视觉效果,根据心理学特征进行如式(1)所示的灰度图像转换(Luminance法),并设计灰度图像转换模块。灰度变换后完成后,将灰度图像数据存储在SDRAM中。
2.2 一维FFT模块设计
FFT算法是数字图像处理中最重要的核心算法之一,是影响图像去模糊处理系统整体效率的关键[7]。本文采用按时域抽取的基-2 DIT算法,将初始数据分为前一半和后一半分别存储到存储器中,通过时序控制分别从RAM1、RAM2中采用抽取奇数点、偶数点方法进行每一级运算。算法主要由输入模块、存储模块、蝶形运算模块、溢出检测、截位等模块组成。总体框图如图3所示。
为实现一维FFT,先将输入数据进行位扩展,以防运算过程中出现溢出时及时处理。通过时序控制,将输入数据按照倒位序的方式存储到指定的RAM中。为保证资源的有效利用,设置两个存储单元,分别存储一半数据,既保证数据流水线输入,又提高系统运算效率,节省运算时间。通过时序控制,调用RAM中存储数据以及ROM的蝶形运算因子,进行蝶形运算。根据旋转因子特性,只需存储前一半的旋转因子,后一半通过地址偏移得到,节省了存储空间。在每一级蝶形运算结束后,需要进行溢出检测,判断是否有溢出,若有溢出需要对溢出数据进行截位处理。最后按顺序进行数据输出,存储到存储单元中。
2.3 二维FFT模块设计
对图像进行二维傅里叶变换时,利用变换可分性采用降维方法处理,分别对行和列进行一维傅里叶变换。其原理为首先对行进行一维傅里叶变换,然后对行变换后的矩阵进行转置(变成列方向),将矩阵转置后再次进行一维傅里叶变换[8]。二维傅里叶变换降维处理没有计算顺序要求,先行后列或者先列后行的处理顺序不会影响数据处理结果[9]。
本文二维FFT处理模块如图4所示。采用FIFO作为数据缓冲池,将输入图像数据先经过FIFO进行缓存,以防FFT处理速度和图像输入速率不匹配[10]。从FIFO中按行读出数据,进行行方向的一维傅里叶变换,将行变换的结果存储到RAM存储器中。从RAM中按列读出数据,即在RAM中完成矩阵的转置处理,再进行一维傅里叶变换,变换的结果再次存入RAM存储器,再依次存入FIFO中,输出数据,此即为图像二维傅里叶变换后的结果。由于行FFT和列FFT处理结构完全一样,因而只需在处理过程中对数据进行转置以及存储就行。
2.4 频域转换模块测试
本设计使用DE1-SoC开发板,在Quartus II 13.1开发平台上使用Verilog HDL对各逻辑模块进行设计。完成模块设计后,以DE1-SoC开发板的5CSEMA5F31C6N为目标芯片,在Quartus II13.1上进行综合、布局、布线,在QuartusII环境下使用Programmer软件,将一维FFT模块下载到FPGA中。一维FFT模块占用FPGA内部主要逻辑资源如表1所示。由表1可知此设计资源占用较少。
为验证一维频域转换模块的精度,输入一个余弦波测试信号,如式(2)所示:
其中,信号幅值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所示。
将仿真生成的数据导出到OUT_I.txt、OUT_R.txt文本,再应用 MATLAB绘图得到基于FPGA的FFT算法处理结果,并与基于MATLAB的FFT计算结果相比较,如图6(a)、图6(b)所示。对比发现基于FPGA仿真结果与预期符合,待测频率1 kHz在64点处,镜像频率15 kHz在960点处。该频域处理模块能够有效地保存模糊图像的有效信息。
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°几乎接近。
3.2 运动模糊尺度估计
利用频谱图像(图7(b))及模糊角度θ,估计运动模糊尺度L。算法具体步骤如下:
(1)对模糊图像(图7(b))进行θ角度旋转,得到图8(a),再进行滤波及二值化处理;
(2)通过中心点并沿垂直方向,画出二值化后图像强度分布图;
(3)对强度分布图进行极值处理,得到极值处理图(图8(b)),并确定中心条纹间距2d,估算出模糊图像的模糊长度L。
经过计算得到模糊长度L=19.7,与真实值20接近。
4 系统分析
完成DE1-SoC开发系统的搭载,并与相机、显示器、键盘、鼠标等外部设备连接。然后将USB摄像头固定在可滑动三脚架上,对三脚架设置一定的角度并调整好摄像头方向,快速滑动相机,同时用鼠标触发捕获按钮,捕获模糊图像如图9(a)所示。将模糊图像数据输入到Bayer2RGB模块,分R、G、B三通道存储,进行灰度转换,再输入到频域转换模块,进行频谱变换。最后,采用图像去模糊算法进行图像恢复,得到恢复图像如图9(b)所示。恢复图像细节清晰、稳定。通过观察可知,此系统能够较好地实现摄像头拍摄、抓拍捕获、频谱变换及恢复图像等功能,并在终端完好地保存了原模糊图像以及恢复后图像。
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)