導讀
作為衆多元件和電路信号傳輸的平台,印刷電路闆(PCB)一直被視為電子資訊産品的關鍵部分,其品質決定了最終産品的品質和可靠性。随着電子元器件的微小化、複雜化趨勢,以及制造行業整體對智能化變革的需求, AOI檢測系統将在智能制造行業占據越發重要的位置。
PCB産品AOI檢測,需要将模版與實際圖像對齊,是以需要定位功能。定位功能就需要選取定位核,定位核的提取方法分為手動和自動。基于人眼視覺特征對區域敏感度判斷的手動提取法存在很大的局限性,且當需要較多定位核時模組化複雜,是以目前廣泛應用的是自動提取法。
PCB由于高精度成像和高标準檢測需求,決定了一個料号可能需要幾百甚至上千個定位核,是以需要實作自動選取定位核的功能;檢測時料号是未知的,且切換比較頻繁,是以無法離線選取定位核,是以算法要求滿足實時性。
01
功能說明
自動定位核選取子產品主要功能如下:
1)支援多個互相獨立的全功能型定位核選取
圖1 全功能型定位核示範
2)支援組合定位核的選取
圖2 組合型定位核示範
3)支援單向(任意方向)定位核的選取
圖 3 單向定位核示範
4)增加局部唯一性驗證,支援兩種不同的定位模式,NCC和Shape
02
算法設計
根據常見的定位算法的原理可知,選取定位核應選擇:
1)梯度資訊豐富的地方,并且該梯度資訊在水準和垂直方向都有分量;
2)在一定範圍内滿足唯一性。
圖 4 彩色圖及對應的梯度圖
PCB産品的模闆圖像一般由Gerber或ODB++檔案解碼生成,是以自動標明位核的輸入圖像一般為二值圖,圖案由直線和弧形組成,其所對應梯度資訊如下圖所示:
圖5 PCB二值圖及對應的梯度圖
可見,适合選取定位核的位置如下圖所示:
圖6 可選為定位核的位置
2.1設計概要
在定位核的選取過程中,遵循的原則如下:
- 優先選擇滿足條件的全功能型定位核;
- 若無全功能型定位核,則篩選出滿足條件的組合定位核;
- 若無組合定位核,則篩選出單向定位核。
2.2 算法流程
2.2.1 圖像降采樣
圖像降采樣,即采樣點數減少。對于一幅N*M的圖像來說,如果降采樣系數為k,則即是在原圖中每行每列每隔k個點取一個點組成一幅圖像。
采取降采樣的目的是為了降低處理時間。
2.2.2 提取亞像素輪廓XLD
降采樣後的圖像
亞像素輪廓圖
XLD代表亞像素精度的邊緣輪廓和多邊形,并不是沿着像素與像素交界的地方,而是經過插值之後的位置。
2.2.3 獲得備標明位核
全功能型定位核
單方向定位核
實作流程:
- 将亞像素輪廓XLD轉為多邊形輪廓XLD(Ramer算法);
亞像素輪廓XLD
多邊形輪廓XLD
- 周遊多邊形輪廓XLD,依次擷取多邊形輪廓對應的N個離散點、N-1個角度,并計算目前離散點即拐點對應的夾角Angle。這些離散點就是各個疑似定位核的中心點;
離散點即拐點圖示
- 通過拐點夾角Angle計算各自的正交值Orthogonality,超過設定的分值加入待選的全功能型定位核中,否則加入到單向定位核中,其中:
Orthogonality = abs(Angle-ORTHANGLE)/ ORTHANGLE。其中:ORTHANGLE = PI/2;
2.2.4 全功能型定位核選取
實作流程:
- 按照正交分值從大到小排序;
- 依次驗證唯一性(在一定範圍内進行模闆比對,判斷找到的數目是否為1),找到要求的數目即傳回;
2.2.5 組合型定位核選取
若沒有找到符合條件的全功能型定位核,或找到的數目不夠,則選取滿足條件的組合型定位核。
實作流程:
- 對剩餘的定位核進行排序(全功能型定位核按照正交值從大到小排序,單向定位核按照水準、垂直、任意方向的類别依次排序);
- 找到所有符合組合型定位核條件的定位核組(兩個),滿足以下條件之一即可:
1 定位核組中至少有一個全功能型定位核;
2 若均是單向定位核,則根據兩者的方向角度差計算正交分值,大于等于設定的正交值。
- 依次驗證唯一性(在一定範圍内進行模闆比對,判斷找到的數目是否為1),找到要求的數目即傳回;
單向定位核判斷是否滿足組合條件的流程如下:
Step1:單向定位核按照水準、垂直、任意方向的類别依次排序,類别相同則按照歸一化後的角度從小到大排序;
Step2:去除相鄰角度相同的定位核(僅保留一個),得到不同方向的定位核組;
Step3:周遊定位核組,兩兩計算對應的夾角,篩選出滿足正交分值的定位核組對(兩個);
Step4:按照每組對的正交分值進行排序;
Step5:周遊所有的組對,每組找到對應的所有的單向定位核,依次計算定位核的距離是否滿足最小值,若滿足直接傳回,否則找到為止。
2.2.6 單向定位核選取
實作流程:
單向定位核按照水準、垂直、任意方向的類别依次排序,傳回第一個。
03
子產品輸出
可将子產品封裝成獨立的dll,接口函數如下:
類型 | 函數名 | 功能說明 |
參數設定 | SetSampleStep | 設定抽樣步長 |
SetOffset | 設定搜尋範圍 | |
SetLocationRotate | 設定旋轉相關參數(驗證定位核局部唯一性) | |
SetKernelNum | 設定找到定位核的最大數目 | |
SetLocationSize | 設定定位核的尺寸 | |
SetMinScore | 設定找到定位核的最小分數 |
運作 | Execute | 執行定位核的搜尋 |
結果 | GetMainKer | 獲得找到的定位核相關資訊 |
參數界面如下所示:
—THE END—
下載下傳1:Pytorch常用函數手冊
在「OpenCV與AI深度學習」公衆号背景回複:Pytorch函數手冊,即可下載下傳學習全網第一份Pytorch函數常用手冊,包括Tensors介紹、基礎函數介紹、資料處理函數、優化函數、CUDA程式設計、多處理等十四章内容。
下載下傳2:145個OpenCV執行個體應用代碼
在「OpenCV與AI深度學習」公衆号背景回複:OpenCV145,即可下載下傳學習145個OpenCV執行個體應用代碼(Python和C++雙語言實作)。