陶欣然,葛愛明
(復(fù)旦大學(xué)光源與照明工程系,上海 200433)
在表面缺陷檢測的過程中,需要對采集的圖像進行預(yù)處理,增強目標缺陷與背景之間的對比,方便之后進行目標與背景的區(qū)域分割[1,2]。在采集圖像時,由于目標表面的光照不均勻,需要先對圖像進行光照的均勻校正處理[3-6]。
圖像的增強方法包括空域和頻域增強。空域增強是對圖像像素點的灰度進行改變,以改善圖像的對比度[7],對圖像的局部光照均衡效果不好,仍然會出現(xiàn)局部亮度過高的情況,導(dǎo)致局部細節(jié)的丟失。頻域增強是通過改變圖像某個變換域內(nèi)的變換系數(shù),然后通過逆變換實現(xiàn)增強[8-10]。由于圖像中的光照分量和圖像細節(jié)分量頻率不同,因此頻域處理方法更適用于均衡照明。在目前常見的方法中,同態(tài)濾波法需要針對不同照明條件和檢測目標進行濾波器的選擇和具體系數(shù)的設(shè)定,不具備很好的普適性[4];基于改進二維伽馬函數(shù)自適應(yīng)亮度校正算法(adaptive correction algorithm,ACA)是根據(jù)光照分布調(diào)整二維伽馬函數(shù)的參數(shù),從而實現(xiàn)光照的均衡,但是效果依賴于二維伽馬函數(shù)的選擇[5];Retinex法具有很好的色彩保持特性,但是會在光照亮度突變的地方產(chǎn)生光暈現(xiàn)象,放大噪聲,常用于文字提取、人臉識別的預(yù)處理,但不太適合疵病檢測[6]。
本文提出了一種基于小波變換和動態(tài)閾值的校正方法,適用于不均勻照明下采集缺陷圖像的增強,不僅可以有效均衡照明分量,而且可以直觀地對比校正前后的光照均衡效果,并具備良好普適性。針對該方法計算耗時長的問題,本文使用Vivado HLS設(shè)計了加速IP核,并在PYNQ-Z2開發(fā)版上進行了性能測試,實現(xiàn)了20倍的加速。
首先介紹照明在圖像中的表現(xiàn)方式。設(shè)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)是乘積的運算關(guān)系,對兩邊取對數(shù)將其轉(zhuǎn)化為線性加法關(guān)系,方便之后通過小波變換提取其中的低頻分量,也就是之前所說的光照信息。 z(x,y)=lnf(x,y)=lni(x,y)+lnr(x,y) (2) 二維圖像在進行一次小波變換后,經(jīng)過兩次提取,可以形成三個有方向選擇性的高頻帶(水平分量HL1、垂直分量LH1、對角分量HH1)和一個低頻帶(LL),四幅分解圖像中每幅尺寸為之前的1/4,如圖1(a)所示。之后,可以繼續(xù)對LL進行小波變換分解得到2級分解結(jié)果,如圖1(b)所示,以此類推。 圖1 二維圖像的多次小波變換 Fig.1 Wavelet transform of two-dimensional image 本文中,小波變換和動態(tài)閾值法校正光照不均勻的思路基本可概括為以下五步: (1)對灰度化圖像去0,方便對數(shù)運算; (2)取對數(shù)后,通過n層小波變換,逐漸提取出圖像中的低頻信息LL,并將其恢復(fù)至0~255區(qū)間內(nèi),即為照明分量; (3)根據(jù)原灰度化圖像確定統(tǒng)一的照明分量T,其動態(tài)選取過程在下一段介紹; (4)將所有像素點的低頻照明分量統(tǒng)一賦值為動態(tài)閾值T,實現(xiàn)照明均衡; (5)依次進行逆向小波變換和指數(shù)逆變換,并將像素灰度值恢復(fù)至0~255區(qū)間內(nèi)。 第(3)步中的動態(tài)閾值采用了OTSU法,可針對不同的灰度圖像動態(tài)選取照明分量T,具備很強的普適性,共有以下五步[11,12]: (1)統(tǒng)計原灰度化圖像直方圖落在256個灰度值中的像素點個數(shù),歸一化直方圖; (2)用m表示灰度級,初始時有m=0,g1=0,T=0; (3)當m在0~255之間取值時,統(tǒng)計0~m灰度級的像素(前景像素) 所占整幅圖像的比例w0,以及前景像素的平均灰度u0;統(tǒng)計m~255灰度級的像素(背景像素) 所占整幅圖像的比例w1,并統(tǒng)計背景像素的平均灰度u1; (4)計算m=0~255時,前景像素和背景像素的方差g1=w0×w1×(u0-u1) ×(u0-u1); (5)通過比較選出g1的最大值,將此時的m記為T,也就是動態(tài)選擇的照明分量T。 通過小波變換和動態(tài)閾值法,可以將采集圖像中的低頻照明分量得到有效均衡,實現(xiàn)圖像增強;同時,可以根據(jù)不同圖像動態(tài)選取均衡照明分量T,因此具備很好的適應(yīng)性。 驗證過程采用不均勻照明下采集的三幅缺陷圖像,如圖2(a)所示,背景為暗像,目標缺陷為亮像。使用MATLAB平臺對提出的方法進行驗證。 通過大量實驗嘗試和對比,本文在小波中選用了sym4小波,并通過7次小波變換分解來提取出低頻分量,結(jié)果如圖2(c)所示,可近似認為是提取出的圖像照明分量i(x,y),值越高直觀說明照明強度越大,與實際照明情況一致。將提取出的低頻照明分量統(tǒng)一賦值為用動態(tài)灰度值T,然后依次進行逆向變換。最終,小波變換和動態(tài)閾值法優(yōu)化后的圖像如圖2(b)所示,優(yōu)化后圖像提取的低頻分量如圖2 (d)所示。通過對比2 (c)和2 (d)可知,圖像的低頻照明分量在使用小波變換和動態(tài)閾值法優(yōu)化后得到了有效的均衡。 圖2 (a) 光照不均勻的表面原圖像;(b) 小波變換和動態(tài)閾值法優(yōu)化后的圖像;(c) 從原圖中提取的低頻光照分量;(d) 從小波變換和動態(tài)閾值法優(yōu)化后的圖像中提取的低頻光照分量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 本文將小波變換和動態(tài)閾值法與其他三種現(xiàn)有方法進行了對比,分別是之前提到的同態(tài)濾波法、ACA法和Retinex法。 如圖3所示,(a)列為圖2中的三張原圖,(b)列~(e)列分別為用四種方法進行優(yōu)化處理后的結(jié)果。從整體優(yōu)化效果來看,Retinex法對于疵病圖像的光照均衡效果沒有文獻中對文字圖像的效果明顯,出現(xiàn)了較多噪點;從優(yōu)化后圖像的背景亮度來看,小波變換和動態(tài)閾值法、ACA法優(yōu)化后的圖像背景亮度適中,而同態(tài)濾波法、Retinex法優(yōu)化后的圖像背景亮度較低;從疵病還原細節(jié)來看,小波變換和動態(tài)閾值法還原的疵病數(shù)量最多、細節(jié)最清晰,其次是同態(tài)濾波法、ACA法。 圖3 (a)光照不均勻的表面原圖像;(b)小波變換和動態(tài)閾值法優(yōu)化后的圖像;(c)同態(tài)濾波法優(yōu)化后的圖像;(d)ACA法優(yōu)化后的圖像;(e) Retinex法優(yōu)化后的圖像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)列分別為從四種方法優(yōu)化后圖像中提取的低頻照明分量。與原圖照明分量相比,均有不同程度的改善,但是可以直觀發(fā)現(xiàn)小波變換和動態(tài)閾值法效果最優(yōu)。 如圖5所示,(a)列為對三張原圖進行二值化提取目標疵病區(qū)域的圖像,(b)列~(e)列分別為對四種方法優(yōu)化后圖像的二值化處理結(jié)果。通過對比可以看出,用小波變換和動態(tài)閾值法校正后的圖像,二值化提取目標缺陷時出現(xiàn)斷點的情況更少,并展現(xiàn)出更多缺陷數(shù)目和細節(jié)。 綜上所述,相對目前已有的幾種方法,本文提出的小波變換和動態(tài)閾值法有以下幾點優(yōu)勢: (1)可以在小波變換后直觀看出光照的不均勻的分布情況,便于對圖像進行光照均衡處理; (2)與已有方法對圖像光照均勻度的均衡效果對比,小波變換和動態(tài)閾值法的效果更優(yōu); (3)對增強后的圖像的分割提取目標缺陷區(qū)域,小波變換和動態(tài)閾值法產(chǎn)生空間區(qū)域斷點的情況更少,同時展現(xiàn)的目標細節(jié)更多; (4)小波變換和動態(tài)閾值法更方便快捷,可適用于更多情況,不需要通過實驗效果更改濾波器的具體系數(shù)。 但是,由于小波變換的數(shù)據(jù)處理量較大,因此運行時間較長。在本文中,對三張原圖分別采用以上四種方法進行優(yōu)化處理并計時,最后取三張圖像優(yōu)化執(zhí)行時間的平均值作為結(jié)果,如表1所示。 從表1中可以看出,同態(tài)濾波法耗時最少,僅有0.09 s,相對本文提出的小波變換和動態(tài)閾值法有近5倍速度優(yōu)勢。 為了解決小波變換和動態(tài)閾值法的速度劣勢,本文使用FPGA硬件設(shè)計了IP加速核,實現(xiàn)了對該算法的加速。 圖4 (a)原圖像提取的低頻光照分量;(b)通過小波變換和動態(tài)閾值法優(yōu)化的圖像的低頻照明分量;(c)通過同態(tài)濾波法優(yōu)化的圖像的低頻照明分量;(d)通過ACA法優(yōu)化的圖像的低頻照明分量;(e)通過Retinex方法優(yōu)化的圖像的低頻照明分量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) 小波變換和動態(tài)閾值法優(yōu)化后的二值化圖像;(c) 同態(tài)濾波法優(yōu)化后的二值化圖像;(d) ACA法優(yōu)化后的二值化圖像;(e) Retinex法優(yōu)化后的二值化圖像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 對比項小波變換和動態(tài)閾值法同態(tài)濾波法ACA法Retinex法優(yōu)化圖像背景亮度適中背景亮度較低背景亮度適中背景亮度較低照明均衡效果很好較好較差差目標區(qū)域提取疵病細節(jié)豐富,有少許疵病細節(jié)較少,有少許斷點疵病細節(jié)較少,有較多斷點有大量斷點執(zhí)行時間/s0.380.090.841.05 如圖6所示,本文使用ZYNQ平臺為PYNQ-Z2,以ZYNQ XC7Z020-1CLG400C芯片為核心,具有650 MHz雙核Cortex-A9的ARM處理器和Artix-7系列可編程邏輯,在ARM處理器中進行軟件部分設(shè)計,在可編程邏輯中進行硬件電路加速部分設(shè)計。 本文基于Vivado HLS開發(fā)環(huán)境完成了設(shè)計,基于軟件設(shè)計的C++程序作為Vivado HLS工具的輸入,自動分析產(chǎn)生一個按照順序執(zhí)行等效的RTL電路,這種電路的執(zhí)行效率和軟件算法計算效率相當,沒有發(fā)揮硬件資源的優(yōu)勢。Vivado HLS允許使用者添加約束指令對算法進行加速,產(chǎn)生更加流水、并行、性能更好的電路[13,14]。 圖6 ZYNQ平臺Fig.6 The structure of ZYNQ FPGA處理數(shù)據(jù)主要包括三個過程,分別是讀數(shù)據(jù)(R)、處理數(shù)據(jù)(C)和寫數(shù)據(jù)(W)。因此,對IP核的加速優(yōu)化也主要是針對數(shù)據(jù)的獲取、計算和輸出過程,并且主要包括兩個方面的優(yōu)化,分別是流水線優(yōu)化和數(shù)據(jù)流優(yōu)化。 1)流水線優(yōu)化。不同于ARM處理器要求在同一組操作中,調(diào)用下一個函數(shù)之前需要完全完成當前函數(shù)的調(diào)用要求,在FPGA器件可以實現(xiàn)流水線操作。 用流水線實現(xiàn)加速優(yōu)化的原理如圖7所示,讀數(shù)據(jù)(R)是指從FPGA的輸入行緩存中(Inline Buffer)讀取原始數(shù)據(jù);處理數(shù)據(jù)(C)通過FPGA設(shè)計硬件電路,可分為小波變換提取低頻分量(C1)、計算動態(tài)閾值(C2)、小波逆變換(C3)這三個階段;寫數(shù)據(jù)(W)是將處理后的數(shù)據(jù)結(jié)果寫入FPGA的輸出行緩存中(Outline Buffer)。 圖7(a)為優(yōu)化前按照順序的循環(huán)計算過程,每個時鐘周期內(nèi)僅進行一個步驟的計算;圖7(b)展示了流水線優(yōu)化后的計算過程,一個時鐘周期內(nèi)可進行多步驟并行運算,減小了循環(huán)初始間隔和循環(huán)延遲,因此可顯著提高整體運算的速度。 圖7 通過流水線進行加速Fig.7 Accelerate through the pipeline 在硬件設(shè)計中,使用流水線技術(shù)可避免數(shù)據(jù)依賴性、提高運行并行度。FPGA將硬件電路分為一系列在相同時鐘周期內(nèi)運行的獨立階段,唯一不同是每個階段的數(shù)據(jù)來源不同,是從上一個時鐘周期的計算結(jié)果接收的。原始數(shù)據(jù)、每個時鐘周期得到計算結(jié)果都寄存在由觸發(fā)器實現(xiàn)的寄存器中,每個寄存器之間相互獨立,從而使得獨立階段可以并行運行。因此,在已有的函數(shù)中加入加#pragma HLS PIPELINE II=1優(yōu)化指令,將整個函數(shù)進行流水線優(yōu)化,提高數(shù)據(jù)吞吐量。 2)數(shù)據(jù)流優(yōu)化。數(shù)據(jù)流優(yōu)化是在更高層面對函數(shù)進行流水線優(yōu)化,通過在函數(shù)之間加入緩存,降低函數(shù)之間數(shù)據(jù)的依賴程度,使得數(shù)據(jù)在函數(shù)層面進行并行執(zhí)行。R代表從ARM中讀取圖像數(shù)據(jù)至FPGA行緩存的過程,C代表從行緩存中讀取數(shù)據(jù)計算的過程,W代表從輸出行緩存中讀取數(shù)據(jù)返回至ARM的過程。 如圖8所示,為數(shù)據(jù)流優(yōu)化前后的數(shù)據(jù)流圖塊和執(zhí)行過程對比。如圖8(a)所示,在改進之前的數(shù)據(jù)流圖中,函數(shù)模塊之間的數(shù)據(jù)為單向順序傳遞;而改進后,兩個函數(shù)的模塊通過使用先進先出存儲器(FIFO)電路連接,提供模塊之間數(shù)據(jù)的緩存,因此在函數(shù)調(diào)用期間,兩個模塊可以并行執(zhí)行。在圖8(b)中,顯示的是數(shù)據(jù)流優(yōu)化前后的執(zhí)行過程對比示意圖,可以明顯看到優(yōu)化后的執(zhí)行更加高效。因此,在已有的函數(shù)中加入加#pragma HLS DATAFLOW優(yōu)化指令,將整個函數(shù)進行數(shù)據(jù)流優(yōu)化,以進一步提高吞吐量。 圖8 通過數(shù)據(jù)流進行優(yōu)化Fig.8 Accelerate through the data flow 3)生成IP核。經(jīng)過上述優(yōu)化過程,就可以使用Vivado HLS將綜合后的程序打包為IP核,如圖9所示。 圖9 生成的IP核Fig.9 Generated IP core 用實現(xiàn)的IP加速核實現(xiàn)小波變換和動態(tài)閾值法,對圖2(a)中第一張原圖進行不均勻光照的校正,結(jié)果如圖10所示。從運行的結(jié)果圖10(a)來看,該IP核可實現(xiàn)與軟件同樣的光照均衡效果;從運行時間圖10(b)來看,與單純的軟件算法相比,IP加速核可以將計算效率提高20倍,遠高于同態(tài)濾波法的運算效率(接近5倍)。因此,可以利用硬件來彌補該算法的運算速度劣勢。 圖10 IP核實現(xiàn)小波變換和動態(tài)閾值法Fig.10 IP core implements wavelet transform and dynamic threshold method 本文提出了一種對不均勻照明下缺陷圖像的光照校正方法,該方法通過小波變換將圖像中的低頻照明分量提取出來,并通過動態(tài)閾值法針對不同的圖像自動選擇不同的統(tǒng)一光照值,因此具備很好的普適性。利用MATLAB平臺對不均勻光照下缺陷圖像進行校正實驗,結(jié)果顯示該方法可以對不均勻照明條件下得到的缺陷圖像進行有效的光照均衡。與同態(tài)濾波法、基于改進二維伽馬函數(shù)自適應(yīng)亮度校正算法(ACA)、用于光照不均下文本識別的Retinex法進行對比,該方法在光照的均衡效果、圖像的普適性、光照分量的直觀性、后續(xù)目標區(qū)域的提取等方便有顯著優(yōu)勢,但是與同態(tài)濾波法相比,在運算耗時方面沒有優(yōu)勢。針對運算速度劣勢,本文使用Vivado HLS進行了IP加速核的設(shè)計,使用流水線優(yōu)化和數(shù)據(jù)流優(yōu)化提高了算法的并行性,經(jīng)過實驗驗證,在實現(xiàn)同樣校正效率的情況下,IP加速核相較軟件算法可以將計算效率提高20倍,有效彌補該方法的計算速度劣勢。 因此,綜合對比不均勻照明的均衡效果和硬件的加速實現(xiàn)效果,本文提出的小波變換和動態(tài)閾值法可以廣泛地應(yīng)用于不均勻照明下表面缺陷的識別。2 實驗與討論
2.1 小波變換和動態(tài)閾值法的驗證實驗
2.2 與其他方法的對比
3 基于FPGA硬件的加速實現(xiàn)
3.1 硬件環(huán)境
3.2 加速優(yōu)化
4 結(jié)論