王宏松,李杰
(上海常良智能科技有限公司,上海 201108)
摘要:針對現今工業薄膜生產過程中薄膜幅寬更大且生產更快的問題,提出一種基于FPGA的快速薄膜瑕疵檢測系統方案。系統首先采用相關系數法準確求出薄膜灰度圖像的最小重復周期,根據最小重復周期確定兩個比對圖像塊并求出差值圖像,其次將差值圖像二值化再進行形態學處理,最后經過面積約束條件找出薄膜瑕疵所在位置。其中充分利用FPGA并行處理的優勢,提高了圖像處理的速度。實踐結果表明,該系統能夠在300 m/min的薄膜生產線上成功檢測出瑕疵面積僅10個像素的瑕疵,在滿足實時薄膜瑕疵檢測的需求方面具有實際應用效果。
關鍵詞:機器視覺;瑕疵檢測;FPGA;相關系數;圖像匹配
0引言
現代薄膜被大量地用于生產生活。在薄膜的生產過程中,由于生產工藝及現場環境等因素影響,容易造成薄膜表面出現墨點、劃傷、破洞、褶皺、蚊蟲等瑕疵。為了在生產過程中及時檢出薄膜表面的各種瑕疵,控制和提高薄膜產品的質量,企業從傳統的人工目視抽檢逐漸發展為使用基于計算機軟件的在線瑕疵檢測系統[12]。隨著薄膜表面檢測質量要求的日益提高,以及幅寬更寬、生產速度更快等更為嚴格的工藝要求出現,單純依靠軟件來實現瑕疵檢測已經不能滿足實際工程的需要[3]。
本文采用現場可編程門陣列(Field-Programmable Gate Array,FPGA)作為瑕疵檢測的核心處理單元,設計并實現了一種實時的瑕疵檢測系統。該系統具有檢測速度快、穩定性好并容易配置新瑕疵種類等優點,可大大提高生產效率和降低制造成本。
1薄膜瑕疵檢測系統
目前薄膜瑕疵檢測系統大多采用工業計算機、線掃描相機、旋轉編碼器和線型光源的方案。在生產時,由高亮LED組成的線型聚光冷光源采用透射或反射的方式照射在薄膜表面,通過與薄膜運行同步的旋轉編碼器觸發,使架設在生產線上的線掃描相機同步掃描,將相機采集到的薄膜圖像通過工業計算機上的采集卡實時傳送給圖像處理系統軟件進行瑕疵識別處理。由于瑕疵圖像的灰階分布與正常圖像的灰階分布存在明顯差異,從而使系統能夠發現瑕疵,同時對瑕疵進行有效的判定、分類及后續處理。
在實際生產中,對于幅面較寬的薄膜,可以采用多個線掃描相機并行采集圖像,同時傳送給工業計算機的方式。然而隨著幅寬增寬,生產運行速度更快,單位時間內采集得到的圖像數據量更大,目前常見的基于軟件的圖像處理方式越來越不能滿足實時性的要求。本文設計了一種基于FPGA的薄膜瑕疵檢測系統,將主要的圖像瑕疵識別和處理交給以FPGA為核心的圖像處理單元,處理結果傳送給工業計算機,這樣可以更好地適應高速、高質量生產的要求。圖3FPGA及主要接口電路
2系統硬件設計
系統硬件由光源單元和圖像處理單元兩部分組成。光源單元包括LED線型光源和光源控制器,圖像處理單元則由線掃描相機、FPGA圖像處理板以及旋轉編碼器組成。總體框圖如圖1所示。
2.1光源單元電路
光源采用高亮大功率LED組成線陣分布,由光源控制器產生PWM信號,通過高速雙金屬氧化物場效應三極管(Metal Oxide Semiconductor Field Effect Transistor,MOSFET)驅動器芯片MC34151放大,驅動線型光源發光。LED在電路結構上采用串并式排列,每一路串聯LED電路由一路PWM信號驅動,光源控制器可以輸出多個獨立的PWM信號,分別驅動多路LED電路。當需要調節線型光源不同位置的亮度時,只需獨立調整相應位置對應的LED串聯電路的PWM信號即可。PWM信號驅動電路如圖2所示。
2.2圖像處理單元電路
圖像處理單元的核心采用ALTERA公司的Cyclone III系列FPGA,該系列FPGA采用TSMC的65 nm低功耗(Low Power,LP)工藝,提供豐富的邏輯、存儲器和數字信號處理器(Digital Signal Processor,DSP)功能,含有5 K~120 K邏輯單元(Logical Element,LE),288個數字信號處理(DSP)乘法器,存儲器容量達到4 Mbit。Cyclone III器件針對圖像處理應用進行了優化,采用專業顯示I/O接口低電壓差分信號[4](LowVoltage Differential Signaling,LVDS),包括低擺幅差分信號和點對點差分信號,每個鎖相環(Phase Locked Loop,PLL)可動態配置,支持可變刷新率,以增強提高圖像處理功能和質量。
圖像處理單元的主要電路包括FPGA集成電路、圖像數據輸入電路、DDR存儲器控制電路、圖像輸出接口電路等,其中Cyclone III FPGA及主要I/O接口電路如圖3所示。
3瑕疵檢測算法
薄膜瑕疵檢測算法流程如圖4所示。首先將采集到的長L寬W的原始薄膜圖像進行預處理,其中包括彩色圖像灰度化處理和對比度拉伸處理;其次,通過相關系數法求出薄膜圖片的最小重復周期t并獲得(L-t)×W參考圖像塊和相同大小的待檢測圖像塊,求出兩個圖像塊的差值圖像。之后將差值圖像轉為二值圖像并進行形態學處理操作,獲得檢測結果圖像。最后,在檢測結果圖像中,當其中有白色塊的面積大于所設定的閾值w時,則該白色塊為薄膜瑕疵。
3.1模塊劃分
根據上述檢測算法流程,FPGA中應主要包含圖像預處理[5]、檢測核心算法、存儲控制器和主控制器等功能模塊,如表1所示。表1模塊劃分模塊名稱功能主控制器負責器件整體功能的控制圖像預處理包括圖像格式轉換、對比度拉伸檢測核心算法對圖像計算相關系數、形態學處理等存儲控制器對存儲器進行讀寫控制,以實現圖像數據的暫存和更新其他模塊I/O接口(數據、控制信號等)、顯示輸出等
根據前述瑕疵檢測處理流程,整個圖像處理采用并行加流水線結構,分為8個步驟,對應8個子模塊,如圖5所示。其中圖像預處理包括灰度變換、對比度拉伸,分別采用并行處理結構,以保證實時性;瑕疵檢測在圖像分塊的基礎上采用6級流水線,包括相關系數計算、差值處理、形態學處理、面積約束、瑕疵標記和圖像拼接顯示,在時間上重疊復用各級流水線模塊,進一步增加了處理的并行度,大大縮短了圖像處理的時間。
3.2圖像預處理
在圖像的采集和預處理過程中,需要改善圖像的質量,增強有用信息。本系統中用到了彩色圖像灰度化處理和對比度拉伸處理。其中,圖像灰度化處理能夠減少后續圖像處理的運算量,減少FPGA硬件的面積,從而降低應用成本。本系統采用加權平均法對圖像進行灰度化處理[6],其原理較為簡單,不再贅述。典型數學表達式及實際應用公式如式(1)、(2)所示:
圖像對比度拉伸[8]是一種簡單且非常有效的空域增強方法。通過實驗發現,在原始薄膜圖像的灰度圖像上進行恰當的對比度拉伸是一種很好的圖像增強方式,可有效地增強薄膜瑕疵圖像,提高薄膜瑕疵檢測的精度。該方法由兩個基本步驟組成:(1)直方圖統計,通過設定直方圖兩端的像素個數和占整個圖像像素個數的百分比來確定兩個端點a1和a2,灰度值小于a1的更改為0,灰度值大于a2的更改為255,本系統將這里的占比設定為0.005。(2)灰度值映射,在直方圖中,兩個端點之前的像素灰度值根據式(3)進行像素灰度值的映射。映射原理是將原圖的灰度函數由一個變換規則映射成新的圖像函數,即:
其中f(x, y)為原圖的灰度函數,g(x, y)為增強后的灰度函數,N為變換規則,即將a1~a2之間的像素灰度值按線性關系一一映射到0~255之間。
3.3核心檢測算法
核心檢測算法流程如圖6所示。
待檢測圖片經預處理后獲得算法處理圖像。薄膜為固定周期的重復印刷制品。計算出薄膜的最小重復周期t。在L×W的算法處理圖像中,從首行開始選取T×W(其中T<L)的感興趣區域作為目標模版T(a, b),再從第二行開始每隔一行確定一個T×W的感興趣區域作為候選模版G(x+a,y+b),選取若干個候選模版。
本文采用去均值的歸一化相關函數(式(4))來判斷兩個模版的相似程度:
r(x,y)=
當目標模版T(a,b)和候選模版G(x+a,y+b)完全一樣時,相關系數r(x,y)取最大值1。使r(x,y)取最大值的候選模版所在的行數即最小重復周期t。根據(L-t)×W參考圖像塊和相同大小的待檢測圖像塊,求出兩個圖像塊的差值圖像。
將差值圖像轉為二值圖像[9]并進行形態學開操作。為了去除生產中左右偏移和拉伸的干擾,將差值圖像進行固定閾值二值化。為了有效計算單獨的白色塊面積,對二值圖像進行形態學開操作,即腐蝕和膨脹處理[10]。處理之后得到檢測結果圖像。
采用白色塊中白點(灰度值為255的像素)的個數等效描述白色塊的面積大小。如果白點的8鄰域中有其他白點,則兩白點為同一白色塊。只要有白色塊的面積滿足瑕疵閾值,即為薄膜瑕疵。
3.4主控制器模塊
主控制器模塊負責控制圖像數據的輸入輸出、圖像在DDR中的暫存、流水線控制等過程,還包括了參數的配置控制。本模塊主要由有限狀態機構成。三段式的狀態機由組合邏輯的狀態變化、時序邏輯的狀態切換及輸出邏輯組成。
為了提高瑕疵檢測處理流程中各個步驟的易控制性,將每個步驟都定義成3個狀態,分別是“步驟x開始”、“步驟x等待”、“步驟x結束”。因此,主狀態機的狀態歸納為:空閑、初始化、圖像數據輸入輸出、圖像在DDR中的暫存、圖像瑕疵檢測流水線、顯示輸出等狀態,主狀態圖如圖7所示。
4實驗結果與分析
為了驗證系統的實時性以及檢測性能,采用3組不同花色的薄膜進行實驗,每組2 000 m,其中分別有油污、蚊子、水印以及刀絲等瑕疵,為不合格薄膜產品。測試結果如圖8和圖9所示。
在3組薄膜產品的現場檢測實踐中,大于檢測閾值的瑕疵都能成功被檢測到。在薄膜瑕疵都能夠成功檢測出的條件下,薄膜瑕疵檢測速度達到300 m/min。因此,本文所設計的系統其檢測速度和檢測成功率都能夠滿足實際工業薄膜生產的需求。
5結論
本文通過分析薄膜瑕疵的圖像形態,利用FPGA特有的高集成度、高速實時處理的特點,設計了一種薄膜瑕疵檢測系統。設計了并行的圖像預處理功能以適應更大幅寬的薄膜。將瑕疵檢測核心算法優化為6級流水線結構,大大提高了資源利用率和并行度,在實踐中比傳統基于計算機的瑕疵檢測具有更低的硬件成本和更高的檢測速度,為大規模推廣提供了應用參考。
參考文獻
[1] 樊向黨,林波,沈文和. 塑料薄膜表面疵點檢測及識別方法研究[J]. 工業控制計算機, 2011, 24(5):7475.
[2] 鐘球盛,胡廣華,李靜蓉. 光學薄膜表面微細缺陷在線檢測方法研究[J]. 機械設計與制造, 2011(10):102104.
[3] 胡廣華,鐘球盛. 一種基于多目機器視覺的光學薄膜瑕疵檢測系統[J]. 機械設計與制造, 2012(4):162164
[4] 焦文喆,翟正軍,任嵐昆.基于FPGA的圖像數據采集卡及其驅動設計 [J]. 國外電子測量技術, 2010, 29(3):5659.
[5] 李長莉,基于FPGA的CCD掃描缺陷檢測實時數據處理技術的研究[D]. 哈爾濱:哈爾濱理工大學, 2008.
[6] 溫杰,李錦明.基于FPGA的實時圖像邊沿檢測系統的實現[J].電子技術應用, 2015,41(10):6567.
[7] 許蓓蕾,莊奕琪,湯華蓮,等.基于對象的多級圖像增強法[J].計算機應用, 2011,31(6):15561559.
[8] 李杰,周浩,張晉,等.基于粒子群優化的模版匹配跟蹤算法[J].計算機應用, 2015, 35(9):26562660.
[9] 陳強,朱立新,夏德深.結合Canny算子的圖像二值化[J].計算機輔助設計與圖形學學報,2005, 17(6):13021306.
[10] 孫繼平,吳冰,劉曉陽.基于膨脹/腐蝕運算的神經網絡圖像預處理方法及其應用研究[J].計算機學報,2005,28(6):985990.