博客專欄

EEPW首頁 > 博客 > LabVIEW實現(xiàn)PCB電路板坐標(biāo)定位(實戰(zhàn)篇—2)

LabVIEW實現(xiàn)PCB電路板坐標(biāo)定位(實戰(zhàn)篇—2)

發(fā)布人:美男子玩編程 時間:2022-06-22 來源:工程師 發(fā)布文章

1


項目背景


在機(jī)器視覺實際工程實踐中,有時使用NI Vision定義的默認(rèn)坐標(biāo)系進(jìn)行測量控制并不是很直接。例如,檢測目標(biāo)并不總在固定的位置出現(xiàn),而是在ROI區(qū)域內(nèi)平移或旋轉(zhuǎn),甚至有些時候必須通過平移、旋轉(zhuǎn)工作面上的檢測目標(biāo)或通過移動相機(jī),對部件上的幾個不同部位分別進(jìn)行檢測才能完成任務(wù)。


這樣進(jìn)行圖像識別、處理是非常麻煩的,此時就需要對圖像進(jìn)行坐標(biāo)校準(zhǔn)。


使用機(jī)器視覺系統(tǒng)進(jìn)行測控時,各種計算結(jié)果都需要基于坐標(biāo)系來表示。平面坐標(biāo)系可以使用坐標(biāo)原點(Original)、橫軸的角度(Angle)以及縱軸的方向(Axis Direction)來表示。


當(dāng)使用NI Vision提供的VI對所建立的機(jī)器視覺系統(tǒng)進(jìn)行校準(zhǔn)后,所得到的像素和世界坐標(biāo)之間的映射關(guān)系是建立在默認(rèn)校準(zhǔn)坐標(biāo)系基礎(chǔ)之上的。默認(rèn)情況下NI Vision的系統(tǒng)校準(zhǔn)VI按照以下原則定義校準(zhǔn)坐標(biāo)系:

1、坐標(biāo)原點。若手工輸入一系列校準(zhǔn)點,則坐標(biāo)原點被置于用戶定義的坐標(biāo)原點,通常是兩個方向上坐標(biāo)值均為最小的點中心。若使用校準(zhǔn)點陣,則以左上角點中心為坐標(biāo)原點;

2、橫軸的角度為0。亦即橫軸由點陣首行各點確定的矢量而定;

3、縱軸的方向為間接方向(Indirect)。縱軸方向與笛卡兒直角坐標(biāo)系的縱軸方向(Direct)相反。


下圖給出了NI Vision確定默認(rèn)坐標(biāo)系的示意圖,其中左圖為校準(zhǔn)點陣的世界坐標(biāo)系,右圖為某種可能的圖像像素坐標(biāo)系:


圖片


舉個例子,下圖中的3個工件在視場中分別位于不同的位置并且有旋轉(zhuǎn)。為了能準(zhǔn)確測量小孔的位置和大小,可以對每個工件自動檢測其左邊緣和上邊緣,并以它們的交點為坐標(biāo)原點,以上邊緣為x軸,定義間接類型的坐標(biāo)系。這樣一來,雖然每個工件在視場中的位置不同,但合格工件中的小孔相對于每個自動定義的坐標(biāo)系位置具有一致性。如果機(jī)器視覺算法相對于每個自定義的坐標(biāo)系放置檢測小孔的ROI,無論工件如何在視場中變化,都能實現(xiàn)自動檢測,直接返回測量結(jié)果。


圖片

為檢測過程自動定義參考坐標(biāo)系



2


坐標(biāo)校準(zhǔn)原理



機(jī)器視覺系統(tǒng)實現(xiàn)坐標(biāo)校準(zhǔn)有3種方法:


1、角度法


角度法適合沒有畸變且新坐標(biāo)原點仍位于圖像中的機(jī)器視覺系統(tǒng),它通過設(shè)定新坐標(biāo)系的坐標(biāo)原點、橫軸與原坐標(biāo)系橫軸之間的旋轉(zhuǎn)角以及新坐標(biāo)系縱軸的方向來設(shè)置新坐標(biāo),如下圖所示:


圖片


2、雙點法


雙點法適合有畸變且可以直接從圖像中確定新坐標(biāo)原點位置的機(jī)器視覺系統(tǒng)。它通過指定新坐標(biāo)原點和一個位于坐標(biāo)系橫軸正方向上的點以及坐標(biāo)系的類型(直接或間接)來設(shè)定新坐標(biāo)系。坐標(biāo)原點和橫坐標(biāo)上的點所構(gòu)成的直線與圖像水平方向的夾角指明了新坐標(biāo)系的旋轉(zhuǎn)角。


例如,下圖中A、B兩點確定了坐標(biāo)系的橫軸,且A點為坐標(biāo)原點。由于坐標(biāo)系為間接類型,因此,Y'軸與X'軸夾角為270°。由于在畸變的系統(tǒng)中,當(dāng)被測目標(biāo)沿著水平或垂直方向移動時,仍能相對準(zhǔn)確地確定其上的邊緣,而基于兩個邊緣點就可以確定穩(wěn)定的坐標(biāo)系,所以這種方法比角度法對畸變系統(tǒng)有更強(qiáng)的適應(yīng)性。


圖片


3、三點法


有時候機(jī)器視覺系統(tǒng)不僅有畸變,而且被測目標(biāo)還會在圖像中平移、旋轉(zhuǎn)。這種情況下可以使用多點法來設(shè)置新坐標(biāo)系。多點法先使用兩個點確定一條坐標(biāo)軸及其方向,但并不將這兩點中的一點作為坐標(biāo)原點,而是用第三點與前兩點所成直線的垂直交點來確定坐標(biāo)原點。獲得坐標(biāo)原點后,再基于坐標(biāo)系的類型,就可確定另一坐標(biāo)軸,如下圖所示:


圖片


舉個例子,下圖中(左圖)的坐標(biāo)系以標(biāo)尺1cm處的點為原點,7cm處的兩點作為橫軸正方向上的一點來確定坐標(biāo)系橫軸。由于指定坐標(biāo)系的縱軸為間接方向,因此坐標(biāo)系位置可以被唯一確定。在右圖中很難直接找到合適的坐標(biāo)原點,因此先檢測左側(cè)和頂端的目標(biāo)邊緣,隨后用頂端邊緣線段的起止點AB確定橫軸,而左側(cè)邊緣中的C點或D點與橫軸的垂直交點O為原點,最后根據(jù)縱軸的方向就可以唯一確定坐標(biāo)系。


圖片

雙點法和三點法確定坐標(biāo)系



3


坐標(biāo)校準(zhǔn)方法



Nl Vision使用IMAQ Set Calibration Axis Info 2函數(shù)為圖像重新設(shè)置坐標(biāo)系。該函數(shù)位于LabVIEW的視覺與運動→Vision Utilities→Calibration函數(shù)選板中,如下圖所示:


圖片


函數(shù)說明及使用可參見幫助手冊:


圖片


NI Vision使用位于視覺與運動→Machine Vision→Analytic Geometry函數(shù)選板中的IMAQ Build CoordSys(Points)封裝了雙點法和三點法,開發(fā)時可直接根據(jù)目標(biāo)上的特征點,調(diào)用該VI來確定參考或測量坐標(biāo)系,如下圖所示:


圖片


具體使用可參見幫助手冊。



4


環(huán)境搭建



基礎(chǔ)環(huán)境搭建請參見:LabVIEW軟件、驅(qū)動安裝及編程方法(理論篇—2)


除此之外,還需要安裝:OpenG Libraries驅(qū)動,OpenG庫是由OpenG社區(qū)創(chuàng)建并根據(jù)BSD-3-Clause許可證(獲得Open Source Initiative批準(zhǔn))共享的數(shù)百個開源VI的集合。


可直接在VI Package Manage中進(jìn)行安裝,如下所示:


圖片



5


項目實踐



接下來根據(jù)過孔和PCB邊角實現(xiàn)下圖PCB電路板坐標(biāo)定位,達(dá)到無論在任何角度,均可定位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對兩個模板的特征進(jìn)行學(xué)習(xí)。

    由于Angle Range參數(shù)被設(shè)置為0~360°,因此,無論目標(biāo)圖像在平面上旋轉(zhuǎn)多少度,函數(shù)都能按照學(xué)習(xí)到的特征準(zhǔn)確地將模板與目標(biāo)匹配。

  • IMAQ Set Simple Calibration 2以從文件Roundcard01.tif中讀入的圖像為模板,指定了縱橫兩個方向上像素間距分別代表世界坐標(biāo)中的0.15mm。

    當(dāng)然,此時假定相機(jī)垂直于觀測目標(biāo),且鏡頭畸變可忽略不計。

  • 一旦上述準(zhǔn)備工作就緒,F(xiàn)or循環(huán)就逐一對roundcard文件夾中的各個文件所保存的目標(biāo)圖像進(jìn)行分析。

    在讀入目標(biāo)圖像后,IMAQ Match Pattern 4會先根據(jù)學(xué)習(xí)到的特征匹配電路板的一角。

    Parameters參數(shù)指定了匹配時只需要找到一個目標(biāo),且假定目標(biāo)圖像相對模板來說只在±45°范圍內(nèi)旋轉(zhuǎn)。

    找到電路板一角后,OverlayPatternMatchingResults會在目標(biāo)圖像中標(biāo)注出所匹配到的電路板一角的中心,并用矩形無損圖層框出匹配結(jié)果。

  • 為了能在后續(xù)測試過程中,無論圖像在視場中做何變化,都能直接得到電路板小孔相對于其一角的距離,需要重新設(shè)置以電路板一角為參照的系統(tǒng)校準(zhǔn)坐標(biāo)系。

    IMAQ Set Calibration Info將之前基于RoundCard01.tif中的圖像設(shè)置的校準(zhǔn)信息應(yīng)用到For循環(huán)正在處理的目標(biāo)圖像中。

    IMAQ Set Calibration Axis Info用來重新指定校準(zhǔn)坐標(biāo)系。

    新的坐標(biāo)系原點設(shè)定在所匹配到的電路板一角中心處。

    x軸旋轉(zhuǎn)角度由模板匹配過程中,識別到的目標(biāo)圖像旋轉(zhuǎn)角度確定。

    需要注意的是,當(dāng)坐標(biāo)系縱軸設(shè)定為直接坐標(biāo)方向時,x軸相對于默認(rèn)坐標(biāo)系縱橫的旋轉(zhuǎn)角度為負(fù)值,反之為正值。

  • 設(shè)定好新的校準(zhǔn)坐標(biāo)系和校準(zhǔn)信息后,就可以使用IMAQ Match Pattern 4匹配需要在電路板上尋找的小孔位置。

    與之前匹配電路板一角的情況類似,當(dāng)匹配過程找到小孔的位置后,Overlay Coordinate System和Overlay Pattern Matching Results將在圖像中繪制新定義的坐標(biāo)系縱軸和橫軸,標(biāo)記出小孔的位置并框出對小孔的匹配結(jié)果。

    一旦得到小孔在圖像中的位置,就可以依據(jù)校準(zhǔn)信息和像素坐標(biāo)計算得到小孔在校準(zhǔn)坐標(biāo)系中的世界坐標(biāo)。

    這一工作由IMAQ Convert Pixel to Real World來完成。


程序?qū)崿F(xiàn)如下所示:


圖片


下面顯示了對幾個目標(biāo)圖像進(jìn)行檢測時的圖像顯示情況,以及某一目標(biāo)圖像中測量得到的小孔像素位置坐標(biāo)和其在校準(zhǔn)坐標(biāo)系中的世界坐標(biāo)。


*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


關(guān)鍵詞: LabVIEW

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉