APP下载

不均匀照明下采集图像的校正方法及硬件加速

2019-12-28陶欣然葛爱明

照明工程学报 2019年5期
关键词:校正光照灰度

陶欣然,葛爱明

(复旦大学光源与照明工程系,上海 200433)

引言

在表面缺陷检测的过程中,需要对采集的图像进行预处理,增强目标缺陷与背景之间的对比,方便之后进行目标与背景的区域分割[1,2]。在采集图像时,由于目标表面的光照不均匀,需要先对图像进行光照的均匀校正处理[3-6]。

图像的增强方法包括空域和频域增强。空域增强是对图像像素点的灰度进行改变,以改善图像的对比度[7],对图像的局部光照均衡效果不好,仍然会出现局部亮度过高的情况,导致局部细节的丢失。频域增强是通过改变图像某个变换域内的变换系数,然后通过逆变换实现增强[8-10]。由于图像中的光照分量和图像细节分量频率不同,因此频域处理方法更适用于均衡照明。在目前常见的方法中,同态滤波法需要针对不同照明条件和检测目标进行滤波器的选择和具体系数的设定,不具备很好的普适性[4];基于改进二维伽马函数自适应亮度校正算法(adaptive correction algorithm,ACA)是根据光照分布调整二维伽马函数的参数,从而实现光照的均衡,但是效果依赖于二维伽马函数的选择[5];Retinex法具有很好的色彩保持特性,但是会在光照亮度突变的地方产生光晕现象,放大噪声,常用于文字提取、人脸识别的预处理,但不太适合疵病检测[6]。

本文提出了一种基于小波变换和动态阈值的校正方法,适用于不均匀照明下采集缺陷图像的增强,不仅可以有效均衡照明分量,而且可以直观地对比校正前后的光照均衡效果,并具备良好普适性。针对该方法计算耗时长的问题,本文使用Vivado HLS设计了加速IP核,并在PYNQ-Z2开发版上进行了性能测试,实现了20倍的加速。

1 不均匀照明图像的校正原理

首先介绍照明在图像中的表现方式。设f(x,y)作为图像的灰度值,则其为照明分量i(x,y)和反射分量r(x,y)的乘积,可用下式表示为

f(x,y)=i(x,y)×r(x,y)

(1)

其中,0

式(1)中i(x,y)和r(x,y)是乘积的运算关系,对两边取对数将其转化为线性加法关系,方便之后通过小波变换提取其中的低频分量,也就是之前所说的光照信息。

z(x,y)=lnf(x,y)=lni(x,y)+lnr(x,y)

(2)

二维图像在进行一次小波变换后,经过两次提取,可以形成三个有方向选择性的高频带(水平分量HL1、垂直分量LH1、对角分量HH1)和一个低频带(LL),四幅分解图像中每幅尺寸为之前的1/4,如图1(a)所示。之后,可以继续对LL进行小波变换分解得到2级分解结果,如图1(b)所示,以此类推。

图1 二维图像的多次小波变换 Fig.1 Wavelet transform of two-dimensional image

本文中,小波变换和动态阈值法校正光照不均匀的思路基本可概括为以下五步:

(1)对灰度化图像去0,方便对数运算;

(2)取对数后,通过n层小波变换,逐渐提取出图像中的低频信息LL,并将其恢复至0~255区间内,即为照明分量;

(3)根据原灰度化图像确定统一的照明分量T,其动态选取过程在下一段介绍;

(4)将所有像素点的低频照明分量统一赋值为动态阈值T,实现照明均衡;

(5)依次进行逆向小波变换和指数逆变换,并将像素灰度值恢复至0~255区间内。

第(3)步中的动态阈值采用了OTSU法,可针对不同的灰度图像动态选取照明分量T,具备很强的普适性,共有以下五步[11,12]:

(1)统计原灰度化图像直方图落在256个灰度值中的像素点个数,归一化直方图;

(2)用m表示灰度级,初始时有m=0,g1=0,T=0;

(3)当m在0~255之间取值时,统计0~m灰度级的像素(前景像素) 所占整幅图像的比例w0,以及前景像素的平均灰度u0;统计m~255灰度级的像素(背景像素) 所占整幅图像的比例w1,并统计背景像素的平均灰度u1;

(4)计算m=0~255时,前景像素和背景像素的方差g1=w0×w1×(u0-u1) ×(u0-u1);

(5)通过比较选出g1的最大值,将此时的m记为T,也就是动态选择的照明分量T。

通过小波变换和动态阈值法,可以将采集图像中的低频照明分量得到有效均衡,实现图像增强;同时,可以根据不同图像动态选取均衡照明分量T,因此具备很好的适应性。

2 实验与讨论

2.1 小波变换和动态阈值法的验证实验

验证过程采用不均匀照明下采集的三幅缺陷图像,如图2(a)所示,背景为暗像,目标缺陷为亮像。使用MATLAB平台对提出的方法进行验证。

通过大量实验尝试和对比,本文在小波中选用了sym4小波,并通过7次小波变换分解来提取出低频分量,结果如图2(c)所示,可近似认为是提取出的图像照明分量i(x,y),值越高直观说明照明强度越大,与实际照明情况一致。将提取出的低频照明分量统一赋值为用动态灰度值T,然后依次进行逆向变换。最终,小波变换和动态阈值法优化后的图像如图2(b)所示,优化后图像提取的低频分量如图2 (d)所示。通过对比2 (c)和2 (d)可知,图像的低频照明分量在使用小波变换和动态阈值法优化后得到了有效的均衡。

图2 (a) 光照不均匀的表面原图像;(b) 小波变换和动态阈值法优化后的图像;(c) 从原图中提取的低频光照分量;(d) 从小波变换和动态阈值法优化后的图像中提取的低频光照分量Fig.2 (a) Original images of the surface with nonuniform illumination; (b) images optimized by wavelet transform and dynamic threshold method; (c) low-frequency illumination component of the original images; (d) low-frequency illumination component of images which have been optimized by wavelet transform and dynamic threshold method

2.2 与其他方法的对比

本文将小波变换和动态阈值法与其他三种现有方法进行了对比,分别是之前提到的同态滤波法、ACA法和Retinex法。

如图3所示,(a)列为图2中的三张原图,(b)列~(e)列分别为用四种方法进行优化处理后的结果。从整体优化效果来看,Retinex法对于疵病图像的光照均衡效果没有文献中对文字图像的效果明显,出现了较多噪点;从优化后图像的背景亮度来看,小波变换和动态阈值法、ACA法优化后的图像背景亮度适中,而同态滤波法、Retinex法优化后的图像背景亮度较低;从疵病还原细节来看,小波变换和动态阈值法还原的疵病数量最多、细节最清晰,其次是同态滤波法、ACA法。

图3 (a)光照不均匀的表面原图像;(b)小波变换和动态阈值法优化后的图像;(c)同态滤波法优化后的图像;(d)ACA法优化后的图像;(e) Retinex法优化后的图像Fig.3 (a)Original images of the surface with nonuniform illumination; (b) images optimized by wavelet transform and dynamic threshold method; (c) images optimized by homomorphic filtered method; (d) images optimized by ACA method; (e) images optimized by retinex method

如图4所示,(a)列为从图2(a)列原图中提取的低频照明分量,(b)列~(e)列分别为从四种方法优化后图像中提取的低频照明分量。与原图照明分量相比,均有不同程度的改善,但是可以直观发现小波变换和动态阈值法效果最优。

如图5所示,(a)列为对三张原图进行二值化提取目标疵病区域的图像,(b)列~(e)列分别为对四种方法优化后图像的二值化处理结果。通过对比可以看出,用小波变换和动态阈值法校正后的图像,二值化提取目标缺陷时出现断点的情况更少,并展现出更多缺陷数目和细节。

综上所述,相对目前已有的几种方法,本文提出的小波变换和动态阈值法有以下几点优势:

(1)可以在小波变换后直观看出光照的不均匀的分布情况,便于对图像进行光照均衡处理;

(2)与已有方法对图像光照均匀度的均衡效果对比,小波变换和动态阈值法的效果更优;

(3)对增强后的图像的分割提取目标缺陷区域,小波变换和动态阈值法产生空间区域断点的情况更少,同时展现的目标细节更多;

(4)小波变换和动态阈值法更方便快捷,可适用于更多情况,不需要通过实验效果更改滤波器的具体系数。

但是,由于小波变换的数据处理量较大,因此运行时间较长。在本文中,对三张原图分别采用以上四种方法进行优化处理并计时,最后取三张图像优化执行时间的平均值作为结果,如表1所示。

从表1中可以看出,同态滤波法耗时最少,仅有0.09 s,相对本文提出的小波变换和动态阈值法有近5倍速度优势。

为了解决小波变换和动态阈值法的速度劣势,本文使用FPGA硬件设计了IP加速核,实现了对该算法的加速。

图4 (a)原图像提取的低频光照分量;(b)通过小波变换和动态阈值法优化的图像的低频照明分量;(c)通过同态滤波法优化的图像的低频照明分量;(d)通过ACA法优化的图像的低频照明分量;(e)通过Retinex方法优化的图像的低频照明分量Fig.4 (a)Original image of the surface with nonuniform illumination; (b)low-frequency illumination component of image which has been optimized by wavelet transform and dynamic threshold method; (c) low-frequency illumination component of images which have been optimized by homomorphic filtered method; (d) low-frequency illumination component of images which have been optimized by ACA method; (e) low-frequency illumination component of images which have been optimized by retinex method

图5 (a) 原图像二值化图像;(b) 小波变换和动态阈值法优化后的二值化图像;(c) 同态滤波法优化后的二值化图像;(d) ACA法优化后的二值化图像;(e) Retinex法优化后的二值化图像Fig. 5 (a) Binarized images of the original images; (b) binarized images optimized by wavelet transform and dynamic threshold method; (c) binarized images optimized by homomorphic filtered method; (d) binarized images optimized by ACA method; (e) binarized images optimized by retinex method

对比项小波变换和动态阈值法同态滤波法ACA法Retinex法优化图像背景亮度适中背景亮度较低背景亮度适中背景亮度较低照明均衡效果很好较好较差差目标区域提取疵病细节丰富,有少许疵病细节较少,有少许断点疵病细节较少,有较多断点有大量断点执行时间/s0.380.090.841.05

3 基于FPGA硬件的加速实现

3.1 硬件环境

如图6所示,本文使用ZYNQ平台为PYNQ-Z2,以ZYNQ XC7Z020-1CLG400C芯片为核心,具有650 MHz双核Cortex-A9的ARM处理器和Artix-7系列可编程逻辑,在ARM处理器中进行软件部分设计,在可编程逻辑中进行硬件电路加速部分设计。

本文基于Vivado HLS开发环境完成了设计,基于软件设计的C++程序作为Vivado HLS工具的输入,自动分析产生一个按照顺序执行等效的RTL电路,这种电路的执行效率和软件算法计算效率相当,没有发挥硬件资源的优势。Vivado HLS允许使用者添加约束指令对算法进行加速,产生更加流水、并行、性能更好的电路[13,14]。

图6 ZYNQ平台Fig.6 The structure of ZYNQ

3.2 加速优化

FPGA处理数据主要包括三个过程,分别是读数据(R)、处理数据(C)和写数据(W)。因此,对IP核的加速优化也主要是针对数据的获取、计算和输出过程,并且主要包括两个方面的优化,分别是流水线优化和数据流优化。

1)流水线优化。不同于ARM处理器要求在同一组操作中,调用下一个函数之前需要完全完成当前函数的调用要求,在FPGA器件可以实现流水线操作。

用流水线实现加速优化的原理如图7所示,读数据(R)是指从FPGA的输入行缓存中(Inline Buffer)读取原始数据;处理数据(C)通过FPGA设计硬件电路,可分为小波变换提取低频分量(C1)、计算动态阈值(C2)、小波逆变换(C3)这三个阶段;写数据(W)是将处理后的数据结果写入FPGA的输出行缓存中(Outline Buffer)。

图7(a)为优化前按照顺序的循环计算过程,每个时钟周期内仅进行一个步骤的计算;图7(b)展示了流水线优化后的计算过程,一个时钟周期内可进行多步骤并行运算,减小了循环初始间隔和循环延迟,因此可显著提高整体运算的速度。

图7 通过流水线进行加速Fig.7 Accelerate through the pipeline

在硬件设计中,使用流水线技术可避免数据依赖性、提高运行并行度。FPGA将硬件电路分为一系列在相同时钟周期内运行的独立阶段,唯一不同是每个阶段的数据来源不同,是从上一个时钟周期的计算结果接收的。原始数据、每个时钟周期得到计算结果都寄存在由触发器实现的寄存器中,每个寄存器之间相互独立,从而使得独立阶段可以并行运行。因此,在已有的函数中加入加#pragma HLS PIPELINE II=1优化指令,将整个函数进行流水线优化,提高数据吞吐量。

2)数据流优化。数据流优化是在更高层面对函数进行流水线优化,通过在函数之间加入缓存,降低函数之间数据的依赖程度,使得数据在函数层面进行并行执行。R代表从ARM中读取图像数据至FPGA行缓存的过程,C代表从行缓存中读取数据计算的过程,W代表从输出行缓存中读取数据返回至ARM的过程。

如图8所示,为数据流优化前后的数据流图块和执行过程对比。如图8(a)所示,在改进之前的数据流图中,函数模块之间的数据为单向顺序传递;而改进后,两个函数的模块通过使用先进先出存储器(FIFO)电路连接,提供模块之间数据的缓存,因此在函数调用期间,两个模块可以并行执行。在图8(b)中,显示的是数据流优化前后的执行过程对比示意图,可以明显看到优化后的执行更加高效。因此,在已有的函数中加入加#pragma HLS DATAFLOW优化指令,将整个函数进行数据流优化,以进一步提高吞吐量。

图8 通过数据流进行优化Fig.8 Accelerate through the data flow

3)生成IP核。经过上述优化过程,就可以使用Vivado HLS将综合后的程序打包为IP核,如图9所示。

图9 生成的IP核Fig.9 Generated IP core

用实现的IP加速核实现小波变换和动态阈值法,对图2(a)中第一张原图进行不均匀光照的校正,结果如图10所示。从运行的结果图10(a)来看,该IP核可实现与软件同样的光照均衡效果;从运行时间图10(b)来看,与单纯的软件算法相比,IP加速核可以将计算效率提高20倍,远高于同态滤波法的运算效率(接近5倍)。因此,可以利用硬件来弥补该算法的运算速度劣势。

图10 IP核实现小波变换和动态阈值法Fig.10 IP core implements wavelet transform and dynamic threshold method

4 结论

本文提出了一种对不均匀照明下缺陷图像的光照校正方法,该方法通过小波变换将图像中的低频照明分量提取出来,并通过动态阈值法针对不同的图像自动选择不同的统一光照值,因此具备很好的普适性。利用MATLAB平台对不均匀光照下缺陷图像进行校正实验,结果显示该方法可以对不均匀照明条件下得到的缺陷图像进行有效的光照均衡。与同态滤波法、基于改进二维伽马函数自适应亮度校正算法(ACA)、用于光照不均下文本识别的Retinex法进行对比,该方法在光照的均衡效果、图像的普适性、光照分量的直观性、后续目标区域的提取等方便有显著优势,但是与同态滤波法相比,在运算耗时方面没有优势。针对运算速度劣势,本文使用Vivado HLS进行了IP加速核的设计,使用流水线优化和数据流优化提高了算法的并行性,经过实验验证,在实现同样校正效率的情况下,IP加速核相较软件算法可以将计算效率提高20倍,有效弥补该方法的计算速度劣势。

因此,综合对比不均匀照明的均衡效果和硬件的加速实现效果,本文提出的小波变换和动态阈值法可以广泛地应用于不均匀照明下表面缺陷的识别。

猜你喜欢

校正光照灰度
采用改进导重法的拓扑结构灰度单元过滤技术
节能环保 光照万家(公益宣传)
当幻想的光照进童心世界
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
劉光第《南旋記》校正
Arduino小车巡线程序的灰度阈值优化方案
隐蔽的力量
建立在校正系统上的强大实力Sonance所能士i12
在Lightroom中校正镜头与透视畸变
机内校正