劉翰林,張榮福
(上海理工大學 光電信息與計算機工程學院,上海 200093)
隨著科學技術的不斷發(fā)展,過去人們在焊接電路板過程中通過人眼直接觀察識別印刷電路板(PCB) 焊點及被焊芯線的方式逐漸被現代人工智能技術所取代,焊接質量也逐漸受到人們的重視[1]。焊點和被焊接芯線的識別精度直接影響著最終的焊接質量,焊點和芯線端頭識別方法因實際情況而異。本文對同一視野內不同位置的焊點和芯線端頭的顏色、形狀等特征信息的分析進行識別算法思路的構建。為了提高效率,達到實時性要求,本文視覺系統(tǒng)硬件采用LED 光源、工業(yè)鏡頭、顯微鏡和計算機組成。軟件主要利用計算機視覺庫OpenCV 配置VS2017 完成圖像算法處理[2]?;谠摥h(huán)境下提出基于顏色閾值分割的焊點識別算法和基于灰度特征的芯線端頭識別算法。焊點和芯線端頭皆通過預處理、圖像分割、特征提取等完成識別過程。但由于焊點和芯線端頭不同的特征信息,細節(jié)處理算法也有所差異。
目前已有對焊點及芯線相關識別算法的研究,比如朱文杰等[3]以機器視覺為基礎對焊點進行定位,通過Hough 圓檢測擬合焊點邊緣輪廓并確定中心點位置;張玉登等[4]采用基于HSV 顏色空間下的焊點檢測技術,通過選取HSV 空間下的V 通道結合大津法(Otsu)完成焊點分割。楊懿[5]采用大津法計算圖像焊點閾值轉為二值圖像,對輪廓進行有效提取,改進Hough 變換精確計算焊點圓心對應位置。本文焊點識別是基于HSV 空間下的處理,根據HSV空間下的色系設定上下限閾值進行閾值分割,相較于已有的采用HSV 單通道焊點的分割算法而言,本文的焊點識別方法更直觀、快速且識別準確率相對較高。
通過圖像采集設備采集到的是RGB 空間下的彩色圖像,環(huán)境干擾、光照不均勻等原因使采集到的圖像不可避免地存在噪聲[6],從而影響人們對圖像信息的接收。因此在提取待測物特征信息之前需進行噪聲的抑制。平滑濾波處理能有效地抑制圖像中的噪聲,圖像的空間域中進行的圖像處理操作即為空間濾波。圖像濾波既可以在空域濾波也可以在頻域濾波。頻域濾波算法計算復雜且實時性較差,而空域濾波不需要任何變換便可直接對像素點進行處理,大大縮短處理時間,性能也得到了很好的提升,因此本文選用空域濾波算法完成去噪過程。
去噪作為一種重要的預處理,其效果好壞直接影響后續(xù)的圖像處理工作[7]。常見的空域濾波方法有均值濾波、中值濾波、高斯濾波[8-9]。均值濾波是用一片圖像區(qū)域的各個像素值的均值來代替原圖像的像素值,需對目標像素給出一個內核模板,用模板中全體像素的平均值來代替目標像素。中值濾波是將模板對應的鄰域像素的灰度值先進行統(tǒng)計排序,然后將統(tǒng)計結果作為模板中心對應像素的輸出值。高斯濾波是對圖像進行加權平均的過程,每一個像素點的值都由其本身和鄰域內的其他像素值加權平均后得到,不同位置的像素賦予的權重比例不同。高斯分布函數決定其濾波模板。為分析不同濾波算法去噪效果,本文統(tǒng)一采用大小為5 的模板作為內核參數設定。圖1 和圖2 分別為焊點和芯線端頭濾波效果圖。
圖2 芯線端頭原圖及濾波效果圖Fig.2 Images of original core wire end and filtering effect
從結果可以看出不同濾波算法的處理效果各有差異,對于焊點而言三種濾波效果差別細微,而對于芯線端頭則有較為明顯的區(qū)別。中值和高斯濾波處理后的端頭模糊程度較高,輪廓識別度降低,不利于后續(xù)分割。在實際應用時,應根據期望的圖像和邊緣特征等來選擇合適的濾波方法,這樣才能發(fā)揮圖像濾波的最大優(yōu)點。因此結合實驗結果,本文選擇保邊效果較好的中值濾波對焊點進行預處理,對芯線端頭采用均值濾波,為后續(xù)感興趣區(qū)域提取及識別提供基礎。
去噪完成后需對目標進行特征分析方便后續(xù)特征提取和分割處理。彩色圖像的分割關鍵在于如何利用豐富的色彩信息來達到分割目的[10],所以本文從焊點及芯線端頭特征入手。
張熊楚等[11]通過大津法(Otsu)分別對RGB顏色空間下的2G-R-B 分量的灰度圖像進行閾值分割。劉波等[12]將圖像轉換至其他顏色空間下,將該顏色空間各分量分離出來,并對其進行二值化處理。對彩色圖像進行分割,選擇符合人眼視覺特性的顏色空間對于后續(xù)分割至關重要。HSV 顏色空間在用于指定顏色分割時作用比較大,運行速度較快且其三要素相互獨立,是比較接近人眼對色彩感知的顏色空間。因此,為了便于色彩處理和識別感興趣區(qū)域(ROI)的目標焊點,本文將在HSV 空間下對焊點進行圖像算法的處理。
焊點在H、S、V 顏色通道模型中會呈現不一樣的圖形基本特性[13]。HSV 是Alvy Ray Smith 根據顏色的直觀特性創(chuàng)建的一種顏色空間。這種顏色空間在各種圖像分析任務中多有應用,例如可以用來作膚色區(qū)域分割[14]等。RGB空間與HSV 空間的轉換關系如下:
式 (1) 中H的值在0°~360°之間,S和V的值在0~1 范圍內變化。如圖3 所示,HSV 模型可用圓柱坐標系中的一個圓錐形子集來表示。
圖3 HSV 顏色空間模型Fig.3 HSV color space model
根據原圖對感興趣區(qū)域的焊點進行空間轉換,得到HSV 空間下單個焊點的顏色分布情況,如圖4 所示。
圖4 ROI 單個焊點HSV 圖Fig.4 HSV image of ROI single solder joint
根據圖4 結果可知,HSV 空間下的焊點色系易辨別,其色系之間相對分明,能較好體現其顏色特征。所以本文考慮基于OpenCV 的HSV顏色體系結合HSV 顏色參數列表完成焊點后續(xù)分割及識別。
同樣對芯線端頭進行HSV 空間的轉換,結果如圖5 所示。根據結果可知,HSV 下的芯線端頭顏色信息相對混雜且所屬色系不易區(qū)分,在這種情況下對其顏色特征進行分析比較困難,若直接根據HSV 顏色參數列表進行閾值分割可能會出現芯線端頭區(qū)域存在部分缺失的情況,給后續(xù)識別帶來不便。
圖5 ROI 芯線端頭HSV 圖Fig.5 HSV image of ROI core wire end
由于HSV 空間下的顏色分析對于芯線端頭難度較大,因此可根據其他特征對芯線端頭進行分析。假設將芯線當作前景,其余部分為背景,則從原圖可以看出芯線與背景之間的顏色及形態(tài)差異比較大,所以考慮依照灰度特征的變化來提升前后背景對比度差異,從而實現芯線端頭分割。
每一張圖片都是由紅色(Red),綠色(Green),藍色(Blue)三原色組合而成,不同顏色在這三個分量上的分布特點是不一樣的,顏色差異直接影響其在分量間的分布規(guī)律。為體現出顏色分量間的差異性,本文基于OpenCV 下的split 函數對RGB 空間下芯線端頭原圖進行分離得到R、G、B 單通道圖。芯線端頭單通道顯示如圖6 所示。
圖6 RGB 單通道圖Fig.6 RGB single channel images
對比圖6 結果可知,G 通道下的芯線與背景灰度差異較大。為了更直觀地感受圖像對比度差異,突顯芯線端頭有用的特征信息并提高辨識度,本文提出一種基于RGB 單通道下圖像增強的方法完成芯線端頭的后續(xù)分割及識別。
綜上所述,通過對焊點及芯線端頭的顏色等特征進行分析,制定了較為合理的分割前預處理方案,有利于后續(xù)的分割及識別過程。
通過上一節(jié)對焊點和芯線端頭的顏色特征分析及分割方案的制定,本節(jié)主要描述焊點和芯線端頭的詳細分割過程及后續(xù)識別算法。
基于HSV 空間的焊點識別算法流程如圖7所示。首先通過顏色空間轉換對照HSV 顏色參數列表完成對焊點的閾值分割,可以分割出焊點所在區(qū)域,然后根據分割后圖像中的噪點位置結合原圖像特征,利用掩膜方式去掉噪點部分,再通過輪廓檢測算法完成對焊點輪廓的檢測及提取,最后對焊點輪廓所在位置顯示其中心點像素坐標,完成焊點的識別過程。
圖7 焊點識別算法流程Fig.7 Process of the soldering joint recognition algorithm
焊點識別算法步驟如下。
1)對預處理后的焊點圖像進行顏色空間轉換并結合HSV 顏色空間參數列表進行閾值分割。在OpenCV 算法實現過程中,H被量化為0~180,V和S被量化為0~255。觀察焊點感興趣區(qū)域,根據焊點顯示的暗黃色顏色特征,結合HSV 顏色參數列表進行目標焊點顏色提取,選定合適的閾值。HSV 顏色空間參數列表如表1所示。篩選顏色特征可參照表上各顏色參數分布情況及實驗獲得,確定待識別的焊點顏色范圍在橙色和黃色之間,分割效果如圖8 所示。
表1 HSV 顏色空間參數列表Tab.1 HSV color space parameter list
圖8 焊點分割結果圖Fig.8 Image of soldering joint segmentation result
2)觀察分割結果可知白色噪點主要位于PCB板和背景的交界處及其左邊部分區(qū)域,且原圖像板子與背景交界處涇渭分明,如圖9(a)所示。考慮利用掩膜對白色噪點進行抑制。首先對預處理后的原圖像進行灰度二值化處理,再進行形態(tài)學濾波處理。二值化閾值為人工調試結合分割效果得到,如圖9(c)所示。
圖9 Mask 圖實現步驟Fig.9 Implementation steps of mask image
形態(tài)學濾波基本操作有膨脹、腐蝕、開啟和閉合[15]。膨脹是通過結構元掃描方式對邊界進行外擴,腐蝕則是對邊界進行收縮。兩者用公式可表示為
其中B為結構元,E是被處理空間。通過B對E中的每一點像素進行掃描,膨脹的結果就是B掃描后與E的交集非空的點構成的集合,腐蝕就是B掃描后包含于E的所有點構成的集合。結構元參數選取根據所要提取物體的形狀特征來設定,本文算法選取矩形結構元。形態(tài)學方式選擇閉操作,即先膨脹后腐蝕,目的是去除圖9(c)中存在的小型黑洞。濾波后生成的mask圖用于掩膜,完成對白色噪點的抑制,圖9 為mask 圖的實現步驟。
3)圖像掩膜是用選定的圖像、圖形及物體對被處理圖像進行全局或局部的遮掩,使圖像處理的區(qū)域被控制的過程,通過位之間的相“與”運算實現感興趣區(qū)域的提取。其主要應用于對感興趣區(qū)域的提取、屏蔽效果、結構特征的提取及特殊形狀的圖像制作方面。掩膜運算過程示意圖如圖10 所示。
圖10 圖像掩膜Fig.10 Mask image
形態(tài)學濾波次數N的取值會不同程度地影響掩膜結果,結果對比如圖11 所示
圖11 掩膜結果Fig.11 Mask results
實驗結果表明N的取值大于或等于4 時對白色噪點區(qū)域抑制效果較好,且隨著次數增加處理效果無明顯差異,因此該部分算法選取N=10作為濾波次數參數設定。
4)對掩膜后的圖像進行輪廓檢測。首先通過輪廓查找結合內循環(huán)進行遍歷檢測,獲得檢測到的輪廓上的所有點的最大最小橫縱坐標值(xmax,xmin,ymax,ymin),最大最小橫縱坐標的中值近似為閉合輪廓的中心點坐標。圖12 所示為確定中心點的示意圖。
圖12 輪廓中心點示意圖Fig.12 Schematic of contour center point
然后用紅色實心圓點來標記輪廓中心點,最后顯示識別到的中心點的像素坐標。以原圖左上角的4 個焊點為例,識別結果如圖13 所示。
圖13 焊點識別結果Fig.13 Solder joint recognition results
從識別結果來看,基于HSV 顏色空間的焊點識別算法能有效地識別出焊點大致位置并顯示中心點像素坐標。
基于RGB 單通道處理的芯線端頭識別算法框圖如圖14 所示。首先單通道處理后獲得G 通道下圖像,然后通過圖像增強算法結合對比度增強結果,從人眼直觀角度來選擇合適的通道作為基礎進行后續(xù)處理,接著通過形態(tài)學濾波對圖像細節(jié)進行處理,根據實驗得到的閾值完成芯線端頭分割,最后通過連通域分析結合芯線形態(tài)特征完成芯線端頭的識別過程。
圖14 芯線端頭識別算法框圖Fig.14 Flowchart of core wire end recognition algorithm
芯線端頭識別算法步驟如下。
1)原圖經預處理后,首先分離得到單通道下的圖像,然后通過圖15 所示的A、B 兩圖像自乘方法實現對比度增強,增大亮暗圖像像素點之間的差距。圖16 為三個通道的圖像自乘后的結果,考慮到乘積溢出情況,該算法使用飽和運算機制將小于0 的通道值置位0,大于255 的置位255。
圖15 圖像乘法運算Fig.15 Image multiplication
圖16 對比度增強效果圖Fig.16 Contrast enhancement effect
對比R、G、B 通道下的對比度增強處理,可看出在G 通道下對芯線端頭圖像處理后的灰度變化較大,可看出明顯的差異性。傳統(tǒng)圖像增強方法直方圖均衡化也可達到圖像增強目的,其原理是通過原灰度直方圖求出每個像素點發(fā)生的概率,對于每個像素點概率乘以動態(tài)范圍向下取整后得到均衡化后的圖像。直方圖均衡化處理效果如圖17 所示。
圖17 直方圖均衡化Fig.17 Histogram equalization
對比兩種圖像增強算法的實驗結果,可以看出直方圖均衡化對于芯線端頭與背景區(qū)域的對比度區(qū)分效果不太理想,處理后仍有些許噪點,不利于后續(xù)分割。而基于RGB 單通道處理再進行圖像自乘后的處理效果能明顯體現出芯線端頭與背景的對比度差異。
2)圖像增強后進行灰度形態(tài)學濾波。這是對灰度圖像的形態(tài)學濾波操作,處理形式與二值化后的形態(tài)學濾波操作相同,通過開或閉操作來對芯線端頭的邊緣細節(jié)進行擴大或縮小,目的是盡量得到較為完整的輪廓邊緣信息。結構元根據芯線端頭形態(tài)特征選擇矩形核,圖18 為形態(tài)學濾波中開閉運算處理效果圖。
圖18 形態(tài)學濾波Fig.18 Morphological filtering
從形態(tài)學處理效果來看,開運算處理后的感興趣區(qū)域的芯線端頭圖像邊緣特征較閉運算而言更為完整,有利于后續(xù)的輪廓提取。因此使用形態(tài)學濾波算法中的開運算完成芯線端頭的細節(jié)處理。
3)形態(tài)學濾波后進行閾值分割。通過實驗調試結合分割效果進行閾值參數thresh 的設定,參考閾值最大值maxval 設置為255(白色),選擇合適的閾值分割類型結合式(3)完成二值化處理:
式(3)表示大于設定閾值的像素灰度值為0,其他像素點值為最大值255。不同參數設定分割效果差異性較大,經多次實驗后對比不同閾值下分割效果可選定閾值為40 進行二值化處理,效果較為理想。二值化分割與HSV 閾值分割及自適應算法分割結果相比較,如圖19 所示。
圖19 分割結果比較Fig.19 Comparison of segmentation results
對比分割結果可看出,HSV 閾值分割使感興趣區(qū)域的芯線端頭部分區(qū)域缺失,自適應閾值分割削弱了芯線端頭輪廓特征,而二值化分割結果與前兩種方式相比,感興趣區(qū)域的芯線端頭的邊緣特征保留相對完整。
4)通過連通域分析對分割后的圖像進行輪廓提取、面積判斷并排序,最后識別芯線端頭的像素坐標。連通區(qū)域一般是指圖像中具有相同像素值且位置相鄰的前景像素點組成的圖像區(qū)域,連通區(qū)域分析是指將圖像中的各個連通區(qū)域找出并標記,通常對二值化后的圖像進行處理。
該部分算法流程如圖20 所示,首先通過輪廓函數查找所有邊緣輪廓,然后提取連通域的邊緣,再對連通域面積大小排序,找出最大面積連通域并標記,接著保留最大面積連通域邊緣輪廓點的值,取右側較大的3~5 個點求其坐標的平均值,忽略干擾。與傳統(tǒng)的冒泡排序法相比,為了優(yōu)化時間性能,提升運算速度,提高效率,此處使用直接排序法,實現類型為升序。
圖20 連通域分析算法框圖Fig.20 Flowchart of connected domain analysis algorithm
芯線端頭識別結果如圖21 所示。
圖21 芯線端頭識別結果Fig.21 Core wire end recognition result
為了驗證本文算法的焊點和芯線端頭識別結果與人工識別結果的有效性與準確性,需事先進行定標。定標是以標準物件來確定其誤差。為了確保數據測量的精確性和可靠性,本文選用高精度圓點標定板進行定標,對焊點及芯線端頭識別結果進行驗證與誤差分析。標定板規(guī)格參數如表2 所示,定標結果如圖22 所示。
圖22 定標結果Fig.22 Calibration results
表2 標定板規(guī)格參數Tab.2 Calibration plate specification parameters
首先將本文焊點識別算法中焊點輪廓的提取部分與文獻[16]中的電路板焊點分割部分進行整理。本文算法在閾值類型選取及設定方面有所變化,但兩者的焊點分割部分都是基于HSV 空間下的閾值分割。現將本文與文獻[16]中的閾值分割算法進行同一焊點的測試,結果如圖23 所示。
根據圖23 的對比結果可知,本文焊點識別算法相較于文獻中的識別算法準確率更高,且對于焊點的輪廓提取更為完整,有利于輪廓中心點的確定。
圖23 算法對比Fig.23 Algorithm comparison
本文通過基于HSV 顏色空間的圖像處理算法完成焊點的識別,分別對同一視野內不同位置的焊點樣本進行該算法實驗,識別結果如圖24所示。
圖24 不同情況的焊點識別效果Fig.24 Solder joint recognition results of different cases
為了實驗的完整性及算法有效性驗證,再將本文識別算法與相機SDK 下人工實測結果進行對比,結果如圖25 所示。
圖25 兩種方式的焊點識別效果Fig.25 Solder joint recognition results of two methods
限于篇幅,為了方便后續(xù)數據整理分析,按照圖26 所示的焊點區(qū)域分布及命名方式來獲取同一圖片下本文識別算法與人工實測的焊點像素坐標數據。
圖26 焊點分布和命名方式示意圖Fig.26 Schematic of solder joint distribution and naming method
為確定焊點識別精度及與PCB 板上焊點之間的實際尺寸的量化關系,方便后續(xù)將芯線端頭與焊點的實際空間位置聯(lián)系起來,假設本文焊點識別算法所識別到的焊點像素坐標為(x1,y1),人工識別的焊點像素坐標為(x2,y2),則歐氏距離D可表示為
數據獲取方式是以PCB 板區(qū)域左上角第一個區(qū)域(a 區(qū)域)的焊點圓心a(0,0)開始,依次按照“a 區(qū)域→b 區(qū)域→c 區(qū)域→d 區(qū)域”的順序進行,對獲取的16 組樣本數據進行分析,根據式(4)計算相同位置下兩種方法得到的焊點像素坐標之間的歐氏距離,整理結果如表3 所示。
表3 本文識別算法與人工識別的焊點坐標對比Tab.3 Comparison of coordinates between algorithm recognition and manual recognition of solder joint
根據事先得到的定標結果,結合識別到的焊點中心點像素坐標及表2 數據,可計算出這4 個區(qū)域內共8 組左右圓心距與上下圓心距的值,對本文算法與人工實測的圓心距測量值進行分析比較,結果如表4 和表5 所示。
根據實驗要求的±0.1 mm 的測量誤差范圍,結合表4 和表5 的數據分析可知,本文算法結果與焊點識別結果的測量值誤差均能達到最初實驗要求且識別準確率達90%以上,因此采用基于HSV 顏色空間的PCB 焊點識別算法能有效地識別焊點及其位置信息,可為自動測試提供坐標數據。
表4 焊點圓心距測量值對比(左右)Tab.4 Comparison of measured values of center distance of solder joint circle(left and right)
表5 焊點圓心距測量值對比(上下)Tab.5 Comparison of measured values of center distance of solder joint circle(upper and lower)
本文通過基于RGB 單通道處理的相關算法完成了芯線端頭的識別。圖27 為4 組不同情況下本文算法與人工實測的芯線端頭識別效果,同組左邊為本文算法識別結果,右邊為人工實測結果。
圖27 兩種方式的芯線端頭識別結果Fig.27 Core wire end recognition results of two methods
為了驗證識別結果的有效性和準確性,選取10 組圖片數據進行整理分析,對本文算法與人工實測的數據進行比較,結果如表6 所示。
表6 本文識別算法與人工實測的芯線端頭坐標對比Tab.6 Comparison of coordinates between recognition algorithm and manual measurement of core wire end
通過定標結果計算可知一個像素大小為3.41 μm,根據0.1 mm 的測量誤差所對應的像素距離范圍,結合表6 中歐氏距離計算結果可知,本文芯線端頭識別誤差均在允許的測量誤差范圍之內,并且識別準確率可達95%以上。因此本文基于RGB 單通道處理的芯線端頭識別算法能準確地識別芯線端頭所在位置,可為自動焊接過程芯線端頭的識別提供有效的方法。
本文通過對焊點和芯線端頭的圖像采集、圖像增強、閾值分割、識別算法等一系列處理過程,完成了對焊點和芯線端頭的識別,并成功提取到其像素坐標。識別結果表明:與人工焊點識別算法相比,本文基于HSV 空間的焊點識別算法準確率更高;同時基于RGB 單通道處理的芯線端頭識別算法高效快捷,焊點和芯線端頭識別誤差都較小。這為自動焊接過程中PCB 板的焊點和被焊芯線的檢測提供了較為有效的方法,后續(xù)可應用到實際工程中。