謝 濤 李玉學 馬 奎
(1.貴州大學大數(shù)據(jù)與信息工程學院 貴陽 550025)(2.貴州航天計量測試技術研究所 貴陽 550025)
片式元件一直以來都是我們國家重點發(fā)展的電子信息產品,并且其封裝尺寸越來越微小化。在工業(yè)生產和使用過程中,經常需要對電子元器件進行實時計數(shù),由人工對這些微小片式元件計數(shù)不僅耗時耗力,效率低,并且還可能因為疲勞導致較大的計數(shù)誤差。這些微小片式元件的紋理、顏色、形狀等具有不同的特征,并且容易粘連,這給電子元器件的自動計數(shù)帶來極大的困難。
本文提出一種基于圖像處理的微小片式元件自動計數(shù)的算法,并設計了微小片式元件實時自動計數(shù)系統(tǒng)。該系統(tǒng)采用LED平行光源背面照射電子元器件,使得忽略電子元器件的表面差異的同時使成像更清晰,便于后期的圖像處理;其次引入輪廓回填消除圖像和根據(jù)輪廓判斷程序是否繼續(xù)機制有效地提高算法效率;最后對粘連電子元器件進行分割時,結合Canny算子進行分割,提高了分割的準確性,實現(xiàn)微小片式元件實時的自動計數(shù)。
微小片式元件實時自動計數(shù)系統(tǒng)主要包括攝像系統(tǒng)及圖像處理系統(tǒng)兩部分。攝像系統(tǒng)包括CCD相機、鏡頭、LED光源、可調支架、元器件盤,完成微小片式元件實時的圖像獲??;圖像處理系統(tǒng)包括計算機和圖像處理程序,控制實時獲取微小片式元件圖像,并對其進行一系列的圖像處理進行計數(shù)。微小片式元件實時自動計數(shù)系統(tǒng)的結構如圖1所示。
圖1 微小片式元件自動計數(shù)系統(tǒng)的結構
微小片式元件自動計數(shù)系統(tǒng)采用LED平行光背面照射電子元器件以獲得圖像為黑白圖像,忽略了電子元器件背面和反面的差異,圖像中單個片式元件呈現(xiàn)清晰的邊緣輪廓。微小片式元件原始圖像如圖2所示。
圖2 微小片式元件原始圖像
觀察圖2可知,基于圖像處理的微小片式元件計數(shù)算法的難點是對粘連的微小片式元件進行圖像分割。閾值分割、邊緣檢測、流域分割、分水嶺算法、極限腐蝕等算法是常用的粘連物體分割算法[1]。但這些算法對粘連的微小電子元器件都不能得到良好的分割效果,因此無法保證計數(shù)的準確性。為此,本文提出一種結合Canny算子的圖像分割方法,該方法充分利用了Canny算子邊緣檢測的優(yōu)良特性,結合輪廓提取,有效實現(xiàn)圖像分割,經過Canny算子處理以后,圖像分割更加精確,效果更好[2~3]。同時,為了提高計數(shù)效率,本文提出一種輪廓回填抹除圖像逐次分割方法,每進行一次分割以后,通過判斷輪廓數(shù)量決定是否繼續(xù)分割,若繼續(xù)分割,則將之前已經實現(xiàn)計數(shù)的微小片式元件從圖像中去除,并將這幅圖像用于下一步的處理。
2.2.1 Canny算法的步驟
1)用高斯濾波器平滑圖像
圖像在進行邊緣檢測時,首先要處理原始數(shù)據(jù),以便于更好地實現(xiàn)邊緣檢測圖像分割效果[4]。所以開始時就需要原始數(shù)據(jù)與高斯mask做卷積,處理后的圖像比原來模糊了一些,有利于圖像邊緣檢測的進行[5]。由于高斯函數(shù)經傅里葉變換后還是高斯函數(shù),能構成一個在頻域具有平滑性能的低通濾波器:
2)用一階偏導的有限差分計算梯度的幅值和方向
3)對梯度幅值進行非極大值抑制
僅僅得到全局的梯度并不足以確定邊緣,要確定邊緣,必須保留局部梯度最大的點,即非極大值抑制[6]。在此過程中,使用3×3大小串口從8個方向的鄰域對M[i , j]的所有元素沿梯度方向進行梯度幅值的插值。在每一個點中心元素 m[i , j]與沿梯度方向的2個梯度幅值的插值結果進行比較。如果鄰域中心點的閾值M[i , j]比梯度方向上的2個插值結果大。則將m[i , j]對應的邊緣保留,否則將該點的梯度值設為零。
4)邊緣連接
經過非極大值抑制處理后的邊緣梯度圖中,梯度值不為零的點可能為邊緣點。如果將所有的可能邊緣點連成邊緣,則檢測結果將包含很多虛假邊緣。所以為了去除虛假邊緣。引入雙閾值和邊緣連接,設高低閾值分別為Th、Tl,其中Th>Tl,對于所有可能的邊緣點,若其梯度值T(i , j)>Th,則點為邊緣點Te(i , j)[7~8]。但是,這樣得到的邊緣是非連續(xù)的,所以為了使邊緣連續(xù),對于處于邊緣端點處的點,采用遞歸邊界跟蹤方法,將八鄰城區(qū)域內梯度值大于Tl的點判定為邊緣點并連接。從而獲得去除了虛假邊緣點的連續(xù)邊緣。
2.2.2 Canny算法圖像分割效果
當兩個元器件之間存在很小的縫隙的時候,就會發(fā)生明顯的光的衍射現(xiàn)象[9],圖像上呈現(xiàn)出“虛邊”現(xiàn)象。直接對圖像進行閾值分割時[10~11],閾值取過小,分割不完全,如圖3(a)所示;閾值過大,會引起圖像劇烈變形,如圖3(b)所示。采用Canny邊緣檢測算法對圖像進行分割時,檢測到的邊緣點距離實際邊緣點位置最近,能夠檢測到足夠多的圖像中實際邊緣,減少真實邊緣的漏檢率和誤檢率[12~13]。采用Canny算子進行圖像處理后,使用相同的閾值進行分割后的效果如圖4(a)和圖4(b)所示。
圖3
圖4
圖5 輪廓回填消除圖像逐次分割基本過程
為了提高計數(shù)效率,本文提出一種輪廓回填抹除圖像逐次分割算法,每進行一次圖像處理計數(shù)以后,在進入下一圖像處理過程之前做一個判斷:除了本過程處理的輪廓中,是否還有別的輪廓存在,如果不存在,則輸出總的計數(shù)結果;若需要繼續(xù)進行圖像分割處理,則將已經實現(xiàn)計數(shù)的微小片式元件從圖像中去除之后再次進行圖像處理,并在進行圖像逐次分割的過程中對不同的粘連情況進行著色,每一種顏色代表一個分割過程,使計數(shù)結果更加準確[14~15]。輪廓回填消除圖像逐次分割基本過程如圖5所示。
本論文的算法采用圖像分割進行微小片式元件的計數(shù),不僅計數(shù)的效率高,其準確率也到了99.99%以上。算法的關鍵因素是二值化以及Canny雙閾值的選取,選取的基本原則就是使得該閾值可以很好地分離粘連的微小片式元件。文中圖像處理過程中采用了雙閾值Canny算法和輪廓回填消除圖像逐次分割,不僅可以提取邊緣特征進行有效的圖像分割,還提高了算法的執(zhí)行效率。
圖6 算法流程圖
微小片式元件自動計數(shù)系統(tǒng)利用OPENCV中的相關函數(shù)來實現(xiàn)上述的算法,用戶界面的設計采用的是Qt介面庫來實現(xiàn)的。為驗證算法的準確性,將2807只0402尺寸的片式電阻器無上下重疊的隨機放置片式元件盤上,采用計數(shù)系統(tǒng)進行計數(shù),計數(shù)50次的結果如表1所示。系統(tǒng)計數(shù)結果表明,本文算法可以高精度地實現(xiàn)微小片式元件的實時自動計數(shù),計數(shù)效率高,計數(shù)結果準確率高。
表1 系統(tǒng)計數(shù)結果及誤差率
本文提出一種基于圖像處理的微小片式元件的自動計數(shù)算法,較好地解決了人工計數(shù)低效、耗時且容易產生誤差的問題。該算法通過結合Canny算子的圖像分割方法,能有效地提高圖像分割的準確性,并且利用輪廓回填消除圖像和利用輪廓數(shù)量判斷算法是否繼續(xù)的機制有效地提高了算法的運行速度。設計的微小片式元件自動計數(shù)系統(tǒng)具有高效、高準確率的特點,具有一定的應用價值。