LabVIEW實現(xiàn)PCB電路板坐標定位(實戰(zhàn)篇—2)
1
項目背景
在機器視覺實際工程實踐中,有時使用NI Vision定義的默認坐標系進行測量控制并不是很直接。例如,檢測目標并不總在固定的位置出現(xiàn),而是在ROI區(qū)域內(nèi)平移或旋轉(zhuǎn),甚至有些時候必須通過平移、旋轉(zhuǎn)工作面上的檢測目標或通過移動相機,對部件上的幾個不同部位分別進行檢測才能完成任務(wù)。
這樣進行圖像識別、處理是非常麻煩的,此時就需要對圖像進行坐標校準。
使用機器視覺系統(tǒng)進行測控時,各種計算結(jié)果都需要基于坐標系來表示。平面坐標系可以使用坐標原點(Original)、橫軸的角度(Angle)以及縱軸的方向(Axis Direction)來表示。
當使用NI Vision提供的VI對所建立的機器視覺系統(tǒng)進行校準后,所得到的像素和世界坐標之間的映射關(guān)系是建立在默認校準坐標系基礎(chǔ)之上的。默認情況下NI Vision的系統(tǒng)校準VI按照以下原則定義校準坐標系:
1、坐標原點。若手工輸入一系列校準點,則坐標原點被置于用戶定義的坐標原點,通常是兩個方向上坐標值均為最小的點中心。若使用校準點陣,則以左上角點中心為坐標原點;
2、橫軸的角度為0。亦即橫軸由點陣首行各點確定的矢量而定;
3、縱軸的方向為間接方向(Indirect)。縱軸方向與笛卡兒直角坐標系的縱軸方向(Direct)相反。
下圖給出了NI Vision確定默認坐標系的示意圖,其中左圖為校準點陣的世界坐標系,右圖為某種可能的圖像像素坐標系:
舉個例子,下圖中的3個工件在視場中分別位于不同的位置并且有旋轉(zhuǎn)。為了能準確測量小孔的位置和大小,可以對每個工件自動檢測其左邊緣和上邊緣,并以它們的交點為坐標原點,以上邊緣為x軸,定義間接類型的坐標系。這樣一來,雖然每個工件在視場中的位置不同,但合格工件中的小孔相對于每個自動定義的坐標系位置具有一致性。如果機器視覺算法相對于每個自定義的坐標系放置檢測小孔的ROI,無論工件如何在視場中變化,都能實現(xiàn)自動檢測,直接返回測量結(jié)果。
為檢測過程自動定義參考坐標系
2
坐標校準原理
機器視覺系統(tǒng)實現(xiàn)坐標校準有3種方法:
1、角度法
角度法適合沒有畸變且新坐標原點仍位于圖像中的機器視覺系統(tǒng),它通過設(shè)定新坐標系的坐標原點、橫軸與原坐標系橫軸之間的旋轉(zhuǎn)角以及新坐標系縱軸的方向來設(shè)置新坐標,如下圖所示:
2、雙點法
雙點法適合有畸變且可以直接從圖像中確定新坐標原點位置的機器視覺系統(tǒng)。它通過指定新坐標原點和一個位于坐標系橫軸正方向上的點以及坐標系的類型(直接或間接)來設(shè)定新坐標系。坐標原點和橫坐標上的點所構(gòu)成的直線與圖像水平方向的夾角指明了新坐標系的旋轉(zhuǎn)角。
例如,下圖中A、B兩點確定了坐標系的橫軸,且A點為坐標原點。由于坐標系為間接類型,因此,Y'軸與X'軸夾角為270°。由于在畸變的系統(tǒng)中,當被測目標沿著水平或垂直方向移動時,仍能相對準確地確定其上的邊緣,而基于兩個邊緣點就可以確定穩(wěn)定的坐標系,所以這種方法比角度法對畸變系統(tǒng)有更強的適應(yīng)性。
3、三點法
有時候機器視覺系統(tǒng)不僅有畸變,而且被測目標還會在圖像中平移、旋轉(zhuǎn)。這種情況下可以使用多點法來設(shè)置新坐標系。多點法先使用兩個點確定一條坐標軸及其方向,但并不將這兩點中的一點作為坐標原點,而是用第三點與前兩點所成直線的垂直交點來確定坐標原點。獲得坐標原點后,再基于坐標系的類型,就可確定另一坐標軸,如下圖所示:
舉個例子,下圖中(左圖)的坐標系以標尺1cm處的點為原點,7cm處的兩點作為橫軸正方向上的一點來確定坐標系橫軸。由于指定坐標系的縱軸為間接方向,因此坐標系位置可以被唯一確定。在右圖中很難直接找到合適的坐標原點,因此先檢測左側(cè)和頂端的目標邊緣,隨后用頂端邊緣線段的起止點AB確定橫軸,而左側(cè)邊緣中的C點或D點與橫軸的垂直交點O為原點,最后根據(jù)縱軸的方向就可以唯一確定坐標系。
雙點法和三點法確定坐標系
3
坐標校準方法
Nl Vision使用IMAQ Set Calibration Axis Info 2函數(shù)為圖像重新設(shè)置坐標系。該函數(shù)位于LabVIEW的視覺與運動→Vision Utilities→Calibration函數(shù)選板中,如下圖所示:
函數(shù)說明及使用可參見幫助手冊:
NI Vision使用位于視覺與運動→Machine Vision→Analytic Geometry函數(shù)選板中的IMAQ Build CoordSys(Points)封裝了雙點法和三點法,開發(fā)時可直接根據(jù)目標上的特征點,調(diào)用該VI來確定參考或測量坐標系,如下圖所示:
具體使用可參見幫助手冊。
4
環(huán)境搭建
基礎(chǔ)環(huán)境搭建請參見:LabVIEW軟件、驅(qū)動安裝及編程方法(理論篇—2)
除此之外,還需要安裝:OpenG Libraries驅(qū)動,OpenG庫是由OpenG社區(qū)創(chuàng)建并根據(jù)BSD-3-Clause許可證(獲得Open Source Initiative批準)共享的數(shù)百個開源VI的集合。
可直接在VI Package Manage中進行安裝,如下所示:
5
項目實踐
接下來根據(jù)過孔和PCB邊角實現(xiàn)下圖PCB電路板坐標定位,達到無論在任何角度,均可定位PCB的效果。
程序設(shè)計思路如下:
程序一開始先使用IMAQ Create分別在內(nèi)存中為電路板一個角的模板圖像(對應(yīng)corner.png圖像文件)、電路板上的小孔模板圖像(對應(yīng)hole.png圖像文件)以及應(yīng)用程序處理過程中需要的臨時緩沖分配空間,并由IMAQ ReadFile把相應(yīng)圖像文件中的數(shù)據(jù)讀入內(nèi)存。
緊接著使用IMAQ Learn Pattern 4對兩個模板的特征進行學(xué)習。
由于Angle Range參數(shù)被設(shè)置為0~360°,因此,無論目標圖像在平面上旋轉(zhuǎn)多少度,函數(shù)都能按照學(xué)習到的特征準確地將模板與目標匹配。
IMAQ Set Simple Calibration 2以從文件Roundcard01.tif中讀入的圖像為模板,指定了縱橫兩個方向上像素間距分別代表世界坐標中的0.15mm。
當然,此時假定相機垂直于觀測目標,且鏡頭畸變可忽略不計。
一旦上述準備工作就緒,F(xiàn)or循環(huán)就逐一對roundcard文件夾中的各個文件所保存的目標圖像進行分析。
在讀入目標圖像后,IMAQ Match Pattern 4會先根據(jù)學(xué)習到的特征匹配電路板的一角。
Parameters參數(shù)指定了匹配時只需要找到一個目標,且假定目標圖像相對模板來說只在±45°范圍內(nèi)旋轉(zhuǎn)。
找到電路板一角后,OverlayPatternMatchingResults會在目標圖像中標注出所匹配到的電路板一角的中心,并用矩形無損圖層框出匹配結(jié)果。
為了能在后續(xù)測試過程中,無論圖像在視場中做何變化,都能直接得到電路板小孔相對于其一角的距離,需要重新設(shè)置以電路板一角為參照的系統(tǒng)校準坐標系。
IMAQ Set Calibration Info將之前基于RoundCard01.tif中的圖像設(shè)置的校準信息應(yīng)用到For循環(huán)正在處理的目標圖像中。
IMAQ Set Calibration Axis Info用來重新指定校準坐標系。
新的坐標系原點設(shè)定在所匹配到的電路板一角中心處。
x軸旋轉(zhuǎn)角度由模板匹配過程中,識別到的目標圖像旋轉(zhuǎn)角度確定。
需要注意的是,當坐標系縱軸設(shè)定為直接坐標方向時,x軸相對于默認坐標系縱橫的旋轉(zhuǎn)角度為負值,反之為正值。
設(shè)定好新的校準坐標系和校準信息后,就可以使用IMAQ Match Pattern 4匹配需要在電路板上尋找的小孔位置。
與之前匹配電路板一角的情況類似,當匹配過程找到小孔的位置后,Overlay Coordinate System和Overlay Pattern Matching Results將在圖像中繪制新定義的坐標系縱軸和橫軸,標記出小孔的位置并框出對小孔的匹配結(jié)果。
一旦得到小孔在圖像中的位置,就可以依據(jù)校準信息和像素坐標計算得到小孔在校準坐標系中的世界坐標。
這一工作由IMAQ Convert Pixel to Real World來完成。
程序?qū)崿F(xiàn)如下所示:
下面顯示了對幾個目標圖像進行檢測時的圖像顯示情況,以及某一目標圖像中測量得到的小孔像素位置坐標和其在校準坐標系中的世界坐標。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)