精密PCB製造、高頻PCB、高速PCB、標準PCB、多層PCB和PCB組裝。
PCB新聞

PCB新聞 - 鏈碼表和線段錶在PCB中的應用

PCB新聞

PCB新聞 - 鏈碼表和線段錶在PCB中的應用

鏈碼表和線段錶在PCB中的應用

2021-11-03
View:341
Author:Kavie

Application of Chain Code Table and Line Segment Table in PCB Hole Position Detection
Abstract: This article studies 這個 positioning of printed circuit boards (Printed-Circuit Board) holes in the industry, 並達到對標的目的 PCB板 沖孔機. CCD採集影像的有效預處理, 使用鏈碼表和線段錶的組合準確快速地確定PCB孔位置的質心. 本文的方法可以精確地檢測到質心為0.001.點數級. 並找出該區域, 外緣, 形狀, 和孔的質心. This method runs successfully on the VC++6.0平臺, 程式設計速度快, 並且可以實現實时性, 精確的, 聰明的, 和批量檢驗, 這大大提高了 PCB板 視察.

印刷電路板


Introduction

Automated Optical Inspection (AOI, Automated Optical Inspection) is a visual inspection method that has emerged in recent years. 它通過CCD獲取影像, 並通過電腦處理和分析判斷缺陷和故障. 人工智慧在網絡中的應用 PCB生產 該線路具有檢測速度快的優點, 程式設計時間短, 以及對大量影像的智慧檢測和控制. 隨著工業技術的發展, 孔徑尺寸要求 PCB板 變得越來越精確, 對機器大規模生產的要求也越來越高. 本文來源於某公司生產孔計數機的項目. 科技要求是PCB孔位置的最小半徑為0.2毫米, 每個PCB上有多達2000個圓孔. 總處理時間不超過10s. 處理後得到結果. 圓心精確到0.01點數級, 每個圓心與範本中心的偏差不得超過25um. 如果80%的中心偏差超過該名額, 被視為不合格, 設備基準需要調整.


“邊緣”是指影像中點數灰度發生階躍變化或屋頂狀變化的點數集合. 它存在於目標和背景之間, 目標和目標, 地區和地區, 原始和原始. 他對圖像識別和分析非常有用. 邊緣可以勾勒出目標對象的輪廓, 以便觀察者一目了然, and contains abundant information [1]. 因此, 獲取孔位置資訊, 您必須首先執行邊緣檢測和輪廓跟踪. 使用freeman鏈程式碼跟踪邊緣輪廓, 並使用鏈碼表和線段錶來存儲和處理數據.


1 Image acquisition and preprocessing


(1) This article uses backlighting and high-resolution cameras to obtain high-contrast and high-quality images. The image resolution is 409*096. 影像源的質量非常重要, 它將直接影響後續的圖像處理.


(2) Use median filtering to smooth the image, 其目的是儘量減少或消除雜訊的影響,提高圖像品質. 中值濾波可以克服在某些條件下由線性濾波器(如最小均方濾波和平均值濾波)引起的影像細節模糊, 對於濾除脈衝干擾和影像掃描雜訊最有效. 對於本文中涉及的影像, the PCB板 孔細節有缺陷, 所以中值濾波更合適. 它的優點是可以在不破壞圖像邊緣的情况下消除雜訊.


(3) Use OSTU (Maximum Between-Class Variance Method) for threshold segmentation. 這種方法很簡單, 穩定有效. 它是一種二值化方法,在判斷最小函數和平方法原理的基礎上自動選擇閾值. 其思想是將影像分割長條圖按一定灰度分為兩組. 當分成兩組的方差最大時, the gray level is set to the best threshold [2].


2 Use chain code table and line segment table [3] to describe the data results of the image


(1) Use Freeman chain code contour tracking Freeman chain code [4] is divided into eight-connected and four-connected chain codes. 八連通鏈碼由中心點數指向其8個相鄰點數的方向定義, 四個連接鏈使用中心點數. 指向其4個鄰居的方向, 值為0 3. 本文使用了一個八連通鏈碼, 如下圖2所示, 8連接鏈碼順時針旋轉, 順時針旋轉45度時,鏈碼值减少1; 如果鏈碼的值新增4, 方向相反, 新增了8. 然後回到原始方向. 鏈碼值超過8或小於0時, 使用模8運算删除或添加8.


(2) Application of chain code table


For the tracking of a single hole in the PCB板, 本文使用Freeman鏈碼方法獲得目標對象的邊界鏈碼. 當在某個點上蒐索目標體的灰度時, 該點是目標物體的邊界點. 如果該點未編碼, 然後該點是某個孔位置的起點. 從這一點開始, 輪廓跟踪由Freeman鏈碼執行, 並且可以跟踪邊界上每個點的鏈碼值, 根據中心點和相鄰點座標的偏差值,如錶1所示. 每個邊界點的座標可以從起點的座標中獲得, which can be expressed as a two-dimensional array inc[8][2].


具體編碼過程是:將目標物體的灰度設定為G1,背景灰度設定為G2. 蒐索整個 PCB板. 當某個點a滿足G1的灰度時, 它被視為邊界點. 從A開始, 順時針蒐索孔位置的邊界, 初始值定義為鏈碼值等於4,蒐索方向上的下一個點. 如果下一個點的灰度值等於G1, 這是下一個邊界點. 否則, 蒐索方向順時針旋轉45度, 鏈碼值為3,繼續搜索點, 囙此,第一個點總是找到一個滿足等於G1的灰度值的點B. 然後將B設定為新的邊界點, 並將跟踪結束標誌設定為0. 如果在相鄰點中未找到邊界點, 將跟踪結束標誌設定為1, 表明它是一個孤立點.


點B作為新的邊界點. 將其鏈碼值作為起始鏈碼的方向. 順時針重複上述跟踪,直到最後一個邊界點為點A. 跟踪單孔點陣圖, 並用顏色填充標記該區域, 也就是說它已經被蒐索過了, 跟踪的鏈碼值存儲在鏈碼表中. 在本文中, the chain code table is stored in a one-dimensional integer array code[ ], 下標為0和1的存儲內容分別是起始邊界點的座標X和Y, 總鏈碼號存儲在組織中,下標2為數位N, 從下標為3的單元開始, 存儲第一個邊界點的鏈碼值, 第二個邊界點的鏈碼值 直到最後第n個邊界點的鏈碼值.


3 Line segment table


(1) Definition of line segment table


Since the chain code table can only represent the boundary of the target body, 但不是邊界的內部和外部, 鏈碼表不能表示目標體的內部點數, 但事實上, 除了獲取影像的邊界點和周長之外, 它還可用於其他參數, 例如本文獲得的孔中心數據和面積, 為了實現內部點數的處理和計算, 需要另一種結構-線段錶.


該區域也可以被視為由水准線段組成. 每條線段可以由其兩個端點表示. 根據掃描平滑排列區域中所有水准線段的端點錶稱為線段錶. 線段錶的每個點由兩部分組成. 偶數點表示左端點的座標, 奇數點表示右端點的座標. 如果定義結構點來表示線段錶, use a one-dimensional array dot[ ], let i represent the line segment The left end of this line segment can be expressed as dot[2*i], and the right end point is dot[2*i+1].


(2) Application of line segment table


The line segment table obtains each line segment and the endpoint value of the line segment, 囙此,可以通過計算輕鬆獲得該區域的內部點數, 可以獲得影像的其他重要參數, 如本文要求的參數:計算面積的面積, the center of gravity; Quickly fill a certain area (to avoid repeated searches and improve efficiency); the shape parameter of the area, 公式表示為:F=L*L*L/4 πS


The purpose of this project is to detect the center of the circular hole, 囙此,對區域的形狀檢測尤為重要. 在上述公式中, L是周長,S是面積. 通過該比率獲得的形狀參數F是圓的形狀參數. 1. 與1的差值越大, 與圓形狀的差异越大. 為了計算PCB孔和圓心中的孔數, 該形狀參數可用於判斷. 如果接近1, 可以近似為加工圓孔, 否則直接用非圓孔顏色標記填充,不會記錄在結果中.


(3) Conversion of chain code table to line segment table [5]


Use the line segment table to indicate that other important parameters of the image can be obtained, 鏈碼表到線段錶的轉換可以按照錶2進行.


Specific steps are as follows:


After the conversion of the table, the chain code obtains three types [6]: middle point, 類型編號0; 左端點, 類型1; 右端點, 類型2; 奇异點, 類型3. 根據鏈碼表中的數據, 可以知道傳入鏈碼值和傳出鏈碼值, 這一點的類型可以確定為兩個方向. 在程式設計中, 可根據錶3判斷點類型. 如果是左右端點, 座標存儲在臨時數組中. 奇點可以視為相同左右點的重合, 那就是, 應儲存兩次, 中間不要存放積分. 線段錶中的端點按Y座標的大小排序, 並在同一行中按X座標的大小排序.


4 Experimental results


This experiment takes a screenshot of the PCB影像 該項目的, 截圖並處理填充影像.


使用本文中的算灋和程式處理螢幕截圖, 並使用鏈碼表和線段錶存儲數據, 您可以獲得PCB孔位置的一些參數資訊.


5 Conclusion


In this paper, 背光源用於獲得高品質 PCB影像, 採用OSTU閾值分割方法穩定、簡單地獲得源影像的二值圖像, 掃描並執行輪廓跟踪, 並使用向右跟踪下一個點的原則. 它準備得更充分,也更省時. 鏈碼表和線段錶存儲數據和資料處理, 獲得周長非常方便和準確, 孔的面積和孔質心 PCB板, 並成功解决了 PCB板 是穿孔的. This experiment has been run and verified on the Visual C++ software platform. 它可以在31秒內檢測和處理216個圓孔, 並獲得本項目所需的速度和精度. 結果表明,該方法是可行的.