陶欣然,葛愛明
(復旦大學光源與照明工程系,上海 200433)
在表面缺陷檢測的過程中,需要對采集的圖像進行預處理,增強目標缺陷與背景之間的對比,方便之后進行目標與背景的區域分割[1,2]。在采集圖像時,由于目標表面的光照不均勻,需要先對圖像進行光照的均勻校正處理[3-6]。
圖像的增強方法包括空域和頻域增強。空域增強是對圖像像素點的灰度進行改變,以改善圖像的對比度[7],對圖像的局部光照均衡效果不好,仍然會出現局部亮度過高的情況,導致局部細節的丟失。頻域增強是通過改變圖像某個變換域內的變換系數,然后通過逆變換實現增強[8-10]。由于圖像中的光照分量和圖像細節分量頻率不同,因此頻域處理方法更適用于均衡照明。在目前常見的方法中,同態濾波法需要針對不同照明條件和檢測目標進行濾波器的選擇和具體系數的設定,不具備很好的普適性[4];基于改進二維伽馬函數自適應亮度校正算法(adaptive correction algorithm,ACA)是根據光照分布調整二維伽馬函數的參數,從而實現光照的均衡,但是效果依賴于二維伽馬函數的選擇[5];Retinex法具有很好的色彩保持特性,但是會在光照亮度突變的地方產生光暈現象,放大噪聲,常用于文字提取、人臉識別的預處理,但不太適合疵病檢測[6]。
本文提出了一種基于小波變換和動態閾值的校正方法,適用于不均勻照明下采集缺陷圖像的增強,不僅可以有效均衡照明分量,而且可以直觀地對比校正前后的光照均衡效果,并具備良好普適性。針對該方法計算耗時長的問題,本文使用Vivado HLS設計了加速IP核,并在PYNQ-Z2開發版上進行了性能測試,實現了20倍的加速。
首先介紹照明在圖像中的表現方式。設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(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 本文將小波變換和動態閾值法與其他三種現有方法進行了對比,分別是之前提到的同態濾波法、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 如圖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 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 本文提出了一種對不均勻照明下缺陷圖像的光照校正方法,該方法通過小波變換將圖像中的低頻照明分量提取出來,并通過動態閾值法針對不同的圖像自動選擇不同的統一光照值,因此具備很好的普適性。利用MATLAB平臺對不均勻光照下缺陷圖像進行校正實驗,結果顯示該方法可以對不均勻照明條件下得到的缺陷圖像進行有效的光照均衡。與同態濾波法、基于改進二維伽馬函數自適應亮度校正算法(ACA)、用于光照不均下文本識別的Retinex法進行對比,該方法在光照的均衡效果、圖像的普適性、光照分量的直觀性、后續目標區域的提取等方便有顯著優勢,但是與同態濾波法相比,在運算耗時方面沒有優勢。針對運算速度劣勢,本文使用Vivado HLS進行了IP加速核的設計,使用流水線優化和數據流優化提高了算法的并行性,經過實驗驗證,在實現同樣校正效率的情況下,IP加速核相較軟件算法可以將計算效率提高20倍,有效彌補該方法的計算速度劣勢。 因此,綜合對比不均勻照明的均衡效果和硬件的加速實現效果,本文提出的小波變換和動態閾值法可以廣泛地應用于不均勻照明下表面缺陷的識別。
2 實驗與討論
2.1 小波變換和動態閾值法的驗證實驗

2.2 與其他方法的對比




3 基于FPGA硬件的加速實現
3.1 硬件環境

3.2 加速優化




4 結論