王宜結(jié),井 田
(淮南師范學(xué)院 電子工程學(xué)院,安徽 淮南 232038)
印刷電路板(Printed circuit board, PCB)貼片焊盤坐標(biāo)提取的目的是提供給自動點錫膏機(jī)使用,為后續(xù)人工貼片或機(jī)器貼片做準(zhǔn)備。如果電路板不便或不能通過現(xiàn)有設(shè)計軟件獲取貼片焊盤的坐標(biāo),可通過攝像頭對電路板進(jìn)行圖像采集,并對圖像進(jìn)行修剪校正處理,去掉除焊盤圖像之外的所有不需要的圖像, 如文字圖形信息及帶鉆孔的焊盤等,再通過特定的算法可將其坐標(biāo)提取出來。
焊盤坐標(biāo)的提取關(guān)鍵在于正確地識別出焊盤。圖像識別以圖像的主要特征為基礎(chǔ),分為特征提取和識別兩個過程[1]。 本文涉及的圖像處理較簡單,在對圖像進(jìn)行灰度化后, 通過閥值分割成二值圖像?!坝嬎愣祱D像特性的算法非常簡單,容易理解和實現(xiàn),并且計算速度很快”[2]。邊緣檢測常用于提取特征圖像,“圖像的邊緣包含了大量重要的信息,邊緣檢測算法通常基于它的一階或二階導(dǎo)數(shù)算子進(jìn)行”[3], 邊緣檢測法能較準(zhǔn)確地提取圖像但計算量較大。
本文先灰度化圖像再二值化,把明亮的印刷字符圖形及較暗的背景色清除,再進(jìn)行適當(dāng)?shù)男螒B(tài)學(xué)方法處理,最后提取出貼片焊盤圖像并求出質(zhì)心坐標(biāo),避免了復(fù)雜的邊緣檢測算法。
圖1 貼片焊盤坐標(biāo)提取流程圖
系統(tǒng)實現(xiàn)過程: 通過攝像頭獲得PCB 圖像,PCB 可能是自己實驗室自制的,也可能是工廠打樣后的。 圖像通過下位機(jī)采集后由USB 接口送到上位機(jī)處理。 上位機(jī)軟件首先要對圖像進(jìn)行預(yù)處理,通過四周剪切操作得到只含電路板區(qū)域的圖像,然后再對圖像進(jìn)行后續(xù)處理,識別出貼片焊盤并提取坐標(biāo)(處理流程如圖1 所示)。
第1 步:拍照。 通過高清攝像頭對電路板進(jìn)行拍照,以獲得清晰的照片,并進(jìn)行四周剪切,如圖2(a)所示。 在攝像過程中盡量使攝像頭的中心對著電路板的中心,以減少圖像變形。 圖像的質(zhì)量直接影響到識別的效果,因此要盡可能提高圖像的對比度及清晰度。
圖2 電路板原圖及其灰度化和校正后圖
第2 步:對電路板原始圖像(圖2(a)進(jìn)行預(yù)處理。在拍照時,由于各種主客觀原因,圖像不可能拍得十分清晰,因此需要修補(bǔ)圖像缺陷,如有些焊盤拍照時太暗了,需要增強(qiáng)亮度,或人為添加焊盤,還要去掉非帶孔的焊盤??捎玫? 方軟件去除照片中不必要的信息并對圖像缺陷進(jìn)行修補(bǔ)及裁剪。由于上面的圖片較大, 這里只取局區(qū)域敘述預(yù)處理過程。 圖3(a)為截取的部分原圖,該圖中部分焊盤拍照時太暗,修補(bǔ)后得到圖3(b)。 圖3(c)為去掉通孔焊盤的圖像。
圖3 部分原圖及處理后的圖
第3 步: 將預(yù)處理后的PCB 彩色圖像變換成灰度圖像。 對于彩色圖像而言,灰度化處理就是使彩色圖像的三基色R、G、B 分量值相等的過程。 灰度化處理的主要方法有3 種。 第1 種是最大值法:使 R、G、B 的值等于 3 值中最大的一個, 即 R=G=B=max(R,G,B),最大值法得到的灰度圖像亮度較高;第2 種是平均值法:取R、G、B 的平均值作為灰度值,即R=G=B=(R+G+B)/3,平均值法可得到相對柔和的灰度圖像;第3 種是加權(quán)平均值法:根據(jù)重要性或其他指標(biāo)給R、G、B 賦予不同的權(quán)值, 并使R、G、B 的值加權(quán)平均,R=G=B=xR+yG+zB,其中 x、y、z 分別表示權(quán)重。 大量實驗結(jié)果發(fā)現(xiàn),人眼對綠色的敏感度最高,其次為紅色,而對藍(lán)色的敏感度最低, 因此x> y>z。 實驗和理論證明當(dāng)x=0.30,y=0.59,z=0.11 時,能得到最合理的灰度圖像。 但常見的印刷電路板的背景顏色為綠色、 藍(lán)色、 黑色、紅色、黃色、白色等,根據(jù)PCB 的背景顏色特征,可用下述方法將彩色圖像處理成區(qū)分度較好的灰度圖像。 以藍(lán)色電路板為例,藍(lán)色電路板的背景色是藍(lán)色,通過matlab 軟件分析,發(fā)現(xiàn)其三基色RGB 的R分量中,圖像中各區(qū)域的區(qū)分度很明顯,藍(lán)色背景色區(qū)域的R 分量值在50 以下,焊盤的R 分量值主要分布在80~130 之間,而白色字體的R 分量值分布在150~255 之間,據(jù)此,可將R 分量作為灰度值得到灰度圖像,用此法可得到原圖2(a)的灰度圖像,如圖2(b)所示。 其它顏色的電路板也容易找到有明顯灰度區(qū)分度的特征。
第4 步:對進(jìn)行圖像校正。 由于拍照時圖像不可能拍得特別正, 因此需要對圖像進(jìn)行位置校正。圖像傾斜矯正關(guān)鍵在于根據(jù)圖像特征自動檢測出圖像傾斜方向和傾斜角度。目前常用的檢測傾斜角度的方法有:基于投影的方法、基于Hough 變換和基于線性擬合的方法,還有進(jìn)行傅里葉變換到頻域來進(jìn)行檢測的方法[4]。這里僅介紹Radon 變換算法實現(xiàn)。
利用Radon 變換檢測直線傾斜角度的具體步驟如下。
(1)用edge 函數(shù)計算圖像的邊緣二值圖像,檢測出原始圖像中的直線。
(2)計算邊緣圖像的 Radon 變換,對每一個象素為1 的點進(jìn)行運算 (0 ~ 179°方向上分別做投影)。
(3)檢測出Radon 變換矩陣中的峰值,這些峰值對應(yīng)原始圖像中的直線。 Radon 變換矩陣中的這些峰值的列坐標(biāo)θ 就是與原始圖像中的直線垂直的直線的傾斜角度,所以圖像中直線的傾角為 90°。
受版面限制,這里取圖2(a)中的很小一部分(圖4(b))詳細(xì)描述圖像灰度化及后續(xù)處理過程。設(shè)圖像文件名為I_part.jpg, 該圖對應(yīng)的原始設(shè)計圖如圖 4(a)所示。
圖4 部分PCB 設(shè)計圖、部分原圖和灰度化圖
圖5 清除絲印層圖及去除噪點的圖像
通過下列matlab 代碼提取R 分量處理 [圖4(b)],可得到圖 4(c)所示的灰度圖像。 灰度化代碼如下:
img_part= imread ('D:I_part.jpg'); %讀取RGB格式的彩色圖像
ipg=img_part(:,:,1); %取 R 分量作為灰度值得到灰度圖像ipg
第5 步:除去圖像中背景、白色絲印字體和圖形及白色小噪點。去掉背景及白字絲印字體和圖形的具體做法是, 先將灰度值大于200 或小于80 的像素變成黑色。 這兩個值可在軟件中進(jìn)行動態(tài)調(diào)節(jié),以獲得最佳效果。 代碼如下:
圖5(a)是對圖4(c)去除背景及絲印層后的圖像。 從圖5(a)中可以看出,圖中絲印字體及焊盤四周的圖形的邊緣由于灰度值較低,沒有除去,可通過下面的算法除去。 從圖5(a)中可不難發(fā)現(xiàn),這些白色邊緣較細(xì),并且其上下或左右都是黑色,據(jù)此特征,可對圖像中的全部像素進(jìn)行掃描,若發(fā)現(xiàn)某點存在上述情況,則將其變成黑色。 具體處理代碼如下:
圖5(b)是經(jīng)過上述代碼處理后進(jìn)一步去除絲印層后的圖像。 圖5(b)中一些絲印白色字體及圖像尚有殘留,形成很多小噪點,這些殘留所構(gòu)成的連通域相對于焊盤區(qū)域面積都不大, 可以通過bwareaopen 函數(shù)清除這些小噪點。該函數(shù)的調(diào)用格式如:BW2 = bwareaopen(BW,P,conn),其作用是刪除二值圖像BW 中面積小于P 的對象, 默認(rèn)情況下,conn =8, 即 8 鄰域。 上述圖像通過 “img2 =bwareaopen(img,32,8)”處理后,再使用填充函數(shù)imfill(img2)對封閉區(qū)域的空洞進(jìn)行填充,可得到如圖5(c)所示圖像。
第6 步:平滑圖像。 腐蝕膨脹是形態(tài)學(xué)圖像處理的基礎(chǔ), 腐蝕在二值圖像的基礎(chǔ)上做 “收縮”或“細(xì)化”操作,膨脹在二值圖像的基礎(chǔ)上做“加長”或“變粗”的操作。 先腐蝕后膨脹的過程稱為開運算,其作用是清除圖像邊緣周圍非邊緣的細(xì)小的點,用來消除小物體、在纖細(xì)點處分離物體、平滑較大物體的邊界的同時并不明顯的改變其面積。平滑過程可根據(jù)需要添加,本文中未進(jìn)行平滑處理。
第7 步:提取坐標(biāo)及標(biāo)注焊盤中心位置。 通過函數(shù)bwlabel 及plot 對焊盤坐標(biāo)提取和標(biāo)注。
bwlabel 函數(shù)的調(diào)用格式如:“[L,n]=bwlabel(I_bw,8);”, 它返回一個和 I_bw 大小相同的 L 矩陣,包含標(biāo)記了I_bw 中每個連通區(qū)域的類別標(biāo)簽;獲取二值圖像I_bw 中8 連通域的個數(shù)n。 代碼如下:
上面求得的坐標(biāo)值單位為像素,還要進(jìn)行標(biāo)度變換。圖 3(b)的大小為 331×310 像素,對應(yīng)的 PCB實際尺寸為 19.05×17.78 mm。 19.05/331=0.575 5;17.78/310=0.537 2; 平均:0.055 64 mm/像素。
本文中的電路板是作者用PADS 軟件設(shè)計并交工廠打樣得到的。通過PADS 軟件可以提取各貼片元件焊盤的坐標(biāo)值。 表1 列出了圖3(b)中部分貼片元件的實際坐標(biāo)及通過前述算法進(jìn)行圖像處理后得到的坐標(biāo)。 從表1 中可以看出,坐標(biāo)值有一定的誤差,但大部分誤差都小于0.2 mm,對于點錫膏焊接而言,這個誤差是比較小的。 而最大誤差為0.38 mm,對焊接也不會有明顯影響,因為錫膏熔化后由于自身張力會自動找正元件。圖6 給出了坐標(biāo)誤差分布情況。
表1 貼片焊盤坐標(biāo)
圖6 坐標(biāo)誤差分布圖
引起焊盤識別誤差的原因有如下幾點:由于拍照時光線不均勻,導(dǎo)致焊盤與絲印層邊緣灰度區(qū)分度不高;部分焊盤絲印時不準(zhǔn)確,絲印圖形太貼近焊盤,有的幾乎與焊盤其連成一體;還有圖像像素密度不夠高??赏ㄟ^提高拍照質(zhì)量及圖像分辨率來減小誤差。
本文主要分析了貼片焊盤坐標(biāo)的提取方法并進(jìn)行了實驗驗證。 在具體操作時,由于圖像拍攝質(zhì)量不穩(wěn)定,導(dǎo)致在識別過程中對灰度的閥值取值上波動范圍較大,以至于造成二值圖像的處理難度較大。 當(dāng)圖像質(zhì)量好、焊盤與背景顏色或亮度區(qū)分度大并且失真較小時,識別效果較好,產(chǎn)生的誤差很小。但當(dāng)圖像質(zhì)量較差時,識別難度明顯加大,錯誤率偏高,因此在識別前要對圖像進(jìn)行修正和缺陷修復(fù)處理。 如果直接從PCB 軟件輸出焊盤圖像,則提取坐標(biāo)的準(zhǔn)確率可以接近100%。 總之,該算法在具體實現(xiàn)的效果上還存在一些不足,需要在以后的研究中找出更理想的方案和算法。