林磊,臧鐵鋼
(南京航空航天大學 機電學院,江蘇 南京 210016)
隨著我國近視人口不斷增加,眼鏡產業有著良好的市場前景。我國鏡片制造行業的生產自動化水平已有一定提高,但是鏡片的質量檢驗仍停留在人工檢驗階段[1]。人工檢驗采用目視法檢測鏡片,其最大問題在于產品的判別標準完全取決于檢驗人員的經驗和水平,受人為因素和個體差異的影響,誤檢率相對較高。此外,人工檢驗還存在人力成本高,檢測效率低,人眼易疲勞等問題。因此,樹脂鏡片的自動化檢測已成為眼鏡片制造行業技術發展的瓶頸。
國外在20世紀末已開始研究基于機器視覺的光學元件缺陷檢測方法,國內對樹脂鏡片的表面疵病檢測也有一些研究。文獻[2]基于顯微散射暗場成像,對不同大小和形狀的球面鏡片缺陷進行了檢測研究;文獻[3]采用暗場散射成像法采集光學元件表面疵病的圖像,設計了基于圖像處理的表面元件檢測系統;文獻[4]利用光刻投影原理設計了一套基于亮場照明的顯微成像表面疵病檢測系統;文獻[5]對鏡片中存在的疵病提取特征,研究了基于直線擬合和圓度判斷的分類方法;文獻[6]運用改進型歸一法對疵病目標進行自動計數,為自動化分級系統的計數模塊提供了數據支持;文獻[7]基于機器視覺和Halcon圖像處理軟件完成了對鏡片圖像的采集和檢測軟件設計。但是鏡片疵病檢測研究應用到工業實際還存在檢測效率不高、準確率不達標的問題。其原因是鏡片中疵病明暗不一、形態大小不同,高質量圖片的處理效率低。因而本文在基于邊緣算子的劃痕檢測[8]研究基礎上,主要研究如何提高鏡片檢測的圖像處理效率和識別疵病邊界的準確性。
常見光學鏡片的表面疵病包括點雜質、劃痕、毛絮、氣泡、凹坑和破邊[9]。本文在Canny邊緣檢測算法的基礎上,優化機器視覺檢測算法,采用局部窗口最佳閾值法提取疵病邊緣,對不同明暗和形態的目標疵病實現準確分割。
鏡片疵病視覺檢測總體方案分為硬件圖像采集模塊和軟件算法模塊,如圖1所示。

圖1 疵病檢測方案設計
硬件裝置指圖像采集系統,包括樹脂鏡片的照明系統、成像系統和輔助裝置,采集鏡片圖像,進行圖像處理;軟件系統以圖像處理算法為核心,包含了圖像預處理、疵病邊緣檢測算法等。
本文研究對象為直徑75 mm的常用樹脂鏡片,基于暗場成像原理,采用環形光源0°角照射鏡片邊緣,如圖2所示。入射光線因疵病發生散射被成像系統接收,獲得暗背景下的明亮疵病圖像。

圖2 暗場成像
鏡片圖像如圖3所示,呈現黑暗的背景和明亮的疵病。對圖像提取圓形待檢測區域,選擇濾波器進行混合濾波處理;提出一種基于局部窗口最佳閾值的改進Canny邊緣檢測算法,準確分離疵病邊界。

圖3 鏡片圖像
感興趣區域(region of interest, ROI)是圖像處理中選擇的一個圖像區域,這個區域是圖像處理和分析關注的重點。鏡片邊緣因粗糙不平發生光的散射,其在圖像中呈現一圈明顯的亮圈,利用霍夫(Hough)圓變換檢測鏡片輪廓,提取感興趣區域。本文依據隨機Hough變換算法[10],設計一種改進的快速Hough圓檢測算法。具體思路如下:
1) 對每個像素行掃描,若該像素值大于灰度閾值T0,則存入圓邊界點存儲隊列D。
2) 從D中隨機取3個邊界點,計算該邊界點的候選圓心和半徑,對圓心進行投票。
3) 對D中剩下點集重復2)過程,得到所有邊界點計算的候選圓心。
4) 根據候選圓心投票結果的能量圖,對同一連通區域的候選圓心區域進行非極大值抑制,得到最有可能圓心位置。若該圓心投票結果大于閾值Tc時, 認為該圓為真圓,否則舍棄。
Tc=kcπRc
(1)
式中:Rc為候選圓半徑;kc為真圓判別系數。
圖像中的亮點多為圓邊界,采用灰度閾值比較,將邊界點存入隊列D中,如圖4所示,間隔選取D中3個邊界點,圓上非共線的3點計算圓心,如圖5所示。每3個邊界點確定1個候選圓參數,對所有邊界點計算候選圓參數,并對候選圓心作證據積累。

圖4 邊界點存取形式

圖5 計算候選圓心
由于鏡片圖像中圓的數量單一,整體圖形簡單,可以在候選圓參數投票過程中忽略候選圓半徑,只對候選圓心作證據積累,得到投票能量圖。投票最高處即可能性最大的圓心位置,計算其投票閾值Tc。若投票數大于閾值則為真圓。為了便于展示,將投票結果歸一化到[0,255]區間,對應的候選圓心投票能量圖局部放大結果如圖6所示。

圖6 候選圓心投票能量局部圖
當圖像中混合有不同類型的噪聲時,單一的濾波器無法達到同時降噪的要求[11]。鏡片圖像中存在混合噪聲,采用改進的帶噪聲選擇的混合濾波方法,如圖7所示,對圖像中的脈沖噪聲和高斯噪聲進行選擇性濾波。

圖7 混合濾波
對輸入原圖像進行脈沖噪聲檢測,脈沖噪聲判別準則為
(2)
式中count[N(x,y)]為鄰域像素個數。
設計兩個閾值:Tυ用作判斷鄰域間像素灰度值的差別是否足夠大,Tn用作判斷灰度值差別大的像素數量是否足夠多。
脈沖噪聲檢測判別采用5×5的檢測窗口,若窗口中央的像素值滿足式(2),認為該像素點為脈沖噪聲,對該窗口進行快速中值濾波處理。傳統的中值濾波是取5×5窗口內所有的像素值進行中值排序。為了提高此處中值濾波的效率,采用如圖8所示的模板進行快速中值濾波,取模板內9個像素值排序后的中間值替代原像素值。

圖8 快速中值濾波模板
對于非脈沖噪聲的像素值,采用雙邊濾波消除高斯噪聲的干擾,然后將兩個結果合并得到去噪輸出圖。
Canny邊緣檢測算法是JOHN Canny于1986年提出的邊緣檢測算法[12]。其應用廣泛,在邊緣精確定位和抗噪兩方面平衡得很好,同時存在一些不足。在濾波處理中使用高斯函數進行平滑,影響平滑標準差σ的選取與具體的圖像細節有關;閾值需要人為憑經驗設定;基于全局的閾值,難以對不同形態的目標疵病進行檢測,邊緣的分割不夠準確等。本文基于Canny算法[13]提出一種改進的局部窗口閾值邊緣檢測算法。
首先采用Sobel算子對去噪后圖像進行邊緣檢測,對得到的梯度圖選取較小的初始閾值T0,對梯度圖進行閾值分割,確定大致的目標疵病的位置和數量。統計圖像中的目標疵病并對每個目標劃分局部矩形窗口。對于梯度圖中的每個局部矩形窗口進行最大類間方差法自動閾值分割,如圖9所示。然后對邊緣進行非極大值抑制和邊界跟蹤,確定完整的目標疵病邊緣。算法流程如圖10所示。

圖9 局部窗口選取最佳閾值

圖10 局部窗口閾值的Canny邊緣檢測
本文采用的是某圖像公司的ALLied Vision系列的Manta G504工業數字相機,軟件處理采用VS2015和OpenCV圖像處理庫。
分別采用OpenCV庫中的霍夫梯度圓檢測法和本文中改進的快速Hough圓檢測算法,對圖3所示的鏡片灰度處理后提取圓形感興趣區域,實驗結果如表1所示。

表1 不同圓檢測算法對比
從表1可以看出,本文算法與霍夫梯度法檢測的圓數值上十分接近,但是霍夫梯度圓檢測時間為1 239.67 ms,本文算法檢測圓的檢測時間為37.92 ms,對于單一的鏡片圖像圓檢測任務而言,采用本文算法效率更高。
圖11和圖12分別是Canny邊緣檢測算法和局部窗口閾值Canny邊緣檢測算法分割圖像,由于鏡片的表面疵病形態不一,散射明暗不同,Canny邊緣檢測算法提取的疵病邊緣不夠完整,本文算法對每個疵病局部窗口選取最佳分割閾值,能很好地實現疵病邊緣的精確提取。

圖11 Canny邊緣檢測結果

圖12 局部窗口閾值的Canny邊緣檢測結果
本文針對樹脂鏡片表面疵病缺陷檢測中的效率和分割準確性的問題進行了研究。設計了一種改進的快速Hough圓檢測方法獲取鏡片圖像感興趣區域,選擇混合濾波消除脈沖噪聲和高斯噪聲。同時提出基于局部窗口閾值的改進Canny邊緣檢測算法,對預處理后的疵病圖像劃分局部窗口,在局部窗口內選擇最佳閾值以完成邊緣的精確提取,獲得的疵病邊界清晰準確。本文在鏡片視覺檢測算法的效率和準確性兩方面進行了優化,滿足鏡片疵病自動化檢測的需求。