一,、 圖像采集" title="圖像采集">圖像采集卡的選擇
儀表盤(pán)的外形尺寸為220mm×82mm,要求測(cè)量精度不低于0.13mm,。綜合檢測(cè)精度,、檢測(cè)速度和成本要求,系統(tǒng)選擇NI 1394圖像采集卡,,配合SONY 1394 CCD彩色攝像機(jī)(分辨率為1024×768), 這樣視覺(jué)系統(tǒng)的視場(chǎng)范圍FOV=118mm×88.5mm,,像素精度pixel accuracy= 118÷1024=0.1152mm/pixel,完全滿足系統(tǒng)測(cè)量的尺寸精度要求,。
二,、 掃描區(qū)域劃分
根據(jù)儀表盤(pán)的尺寸、目標(biāo)特征的相關(guān)性和視覺(jué)系統(tǒng)FOV的范圍,,將儀表盤(pán)劃分為左,、中、右3個(gè)檢測(cè)區(qū)域,。加上起始位置共有4個(gè)位置,。攝像機(jī)在X/Z軸上運(yùn)動(dòng),被測(cè)儀表盤(pán)在Y軸上運(yùn)動(dòng),,X/Y軸的運(yùn)動(dòng)完成鏡頭對(duì)目標(biāo)的對(duì)準(zhǔn),,Z軸的運(yùn)動(dòng)完成對(duì)目標(biāo)的聚焦。在每個(gè)檢測(cè)位置采集的圖像分別以中間的LED窗口即AUTO LED,、OFF LED,、Defrost LED的中心為該幅圖像的坐標(biāo)原點(diǎn)。
三,、 系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)
以計(jì)算機(jī)系統(tǒng)來(lái)完成圖像的采集,、處理、判斷,、文件I/O" title="I/O">I/O和用戶使用界面,,同時(shí)作為上位計(jì)算機(jī)通過(guò)串口" title="串口">串口對(duì)PLC進(jìn)行控制;以PLC系統(tǒng)來(lái)完成運(yùn)動(dòng)控制,、I/O控制,。計(jì)算機(jī)系統(tǒng)的框圖如下:
![]() |
上位鏈接的參數(shù)設(shè)置:波特率:115200; 7位數(shù)據(jù)位;偶校驗(yàn),;2位停止位,。
PLC的系統(tǒng)框圖如下:
![]() |
通過(guò)計(jì)算機(jī)系統(tǒng)與PLC系統(tǒng)協(xié)同工作,各司其職,,充分發(fā)揮各自的特長(zhǎng),,使系統(tǒng)的性能得以優(yōu)化,。
四、 圖像采集
NI提供兩種標(biāo)準(zhǔn)的圖像采集vi程序,,用戶可以直接調(diào)用:
1.單幀圖像采集1394-snap-acquire:即每次只采集1幀圖像,。在本系統(tǒng)的全自動(dòng)測(cè)量過(guò)程中,共有三個(gè)被測(cè)區(qū)域,,每個(gè)區(qū)域又有三種照明模式,,所以一共需要運(yùn)行9次單幀圖像采集程序。
2.連續(xù)圖像采集1394-grab-acquire:即連續(xù)實(shí)時(shí)采集圖像,。在本系統(tǒng)的運(yùn)動(dòng)位置設(shè)置模塊里,,需要實(shí)時(shí)觀測(cè)鏡頭與被測(cè)目標(biāo)的相對(duì)位置及聚焦情況,然后保存各個(gè)位置,,所以使用了連續(xù)圖像采集模式,。
五、 圖像處理
如上所述,,在全自動(dòng)測(cè)量過(guò)程中,,共采集9幀圖像,每幅圖像都對(duì)應(yīng)一個(gè)圖像處理" title="圖像處理">圖像處理程序,,來(lái)完成對(duì)目標(biāo)特征的測(cè)量和判斷。步驟如下:
1.開(kāi)辟圖像緩沖區(qū)
在圖像處理中,,需要對(duì)圖像做多次變換,,因此需開(kāi)辟多個(gè)圖像緩沖區(qū)來(lái)存儲(chǔ)圖像數(shù)據(jù),。本系統(tǒng)中共設(shè)置100個(gè)圖像緩沖區(qū),,即image buffer0~buffer99, 其中buffer0為系統(tǒng)實(shí)時(shí)圖像緩沖區(qū),;buffer1~buffer51分別存儲(chǔ)9幀圖像的彩色原圖,、Intensity 圖層,、Red圖層、Green圖層,、Blue圖層,、Mask圖層、Overlay圖層等作為歷史圖像數(shù)據(jù),,可以和測(cè)量結(jié)果數(shù)據(jù)相對(duì)照,;其余為臨時(shí)圖像緩沖區(qū),為避免與歷史圖像緩沖區(qū)發(fā)生沖突,,從buffer99開(kāi)始向下使用,。本系統(tǒng)只使用了12個(gè)臨時(shí)buffer, 即buffer99~ buffer88,buffer52~buffer87未使用,。
2.定位原點(diǎn)并建立坐標(biāo)系
選取圖像上不發(fā)生變化的特征,,使用Match Pattern 或Detect Object來(lái)定位原點(diǎn)并建立坐標(biāo)系,。三個(gè)檢測(cè)區(qū)域分別以中間的LED窗口即AUTO LED,、OFF LED、Defrost LED的中心為該幅圖像的坐標(biāo)原點(diǎn),。
3.定義ROI區(qū)域
根據(jù)被測(cè)目標(biāo)不同的形狀,可以使用不同的ROI模型,,包括圓形、環(huán)形,、扇形,、矩形,、旋轉(zhuǎn)矩形,、任意多邊形等,。所有ROI區(qū)域都以坐標(biāo)原點(diǎn)為參考點(diǎn)。
4. 測(cè)量
通過(guò)抽取彩色圖像的Intensity plane,、Red Plane,、Green Plane、Blue Plan(均為8位深度的圖像),,對(duì)各目標(biāo)ROI區(qū)域分別測(cè)量光強(qiáng)分量Intensity,、顏色分量R/G/B,、鐳雕圖案模式匹配" title="模式匹配">模式匹配分?jǐn)?shù)、位置坐標(biāo)等,。
其中光強(qiáng)Intensity/R/G/B的范圍為0~255,,共256個(gè)灰階。
圖案模式匹配分?jǐn)?shù)的滿分為1000分,,得分大小表示目標(biāo)與標(biāo)準(zhǔn)模型的匹配程度,。對(duì)三組字符除了做模式匹配測(cè)量還做了OCR字符識(shí)別,即需要分別識(shí)別出AUTO,、ECON,、OFF。
位置坐標(biāo)需要進(jìn)行坐標(biāo)系變換,。對(duì)于一幅圖像來(lái)說(shuō),,默認(rèn)的坐標(biāo)原點(diǎn)位于圖像的左上角,測(cè)量的直接位置數(shù)據(jù)是相對(duì)于這個(gè)原點(diǎn)的,,和我們?cè)诓襟E2.中定義的原點(diǎn)位置不同,,坐標(biāo)系方向也不同,。參考下圖:
![]() |
變換后的坐標(biāo)仍是以像素為單位的,需要乘以像素精度pixel accuracy轉(zhuǎn)化為mm單位,,這樣才對(duì)產(chǎn)品檢驗(yàn)有意義,。
5.結(jié)果輸出界面
測(cè)量結(jié)果包括圖像和數(shù)據(jù),放在一個(gè)Table容器中,。Table的第一個(gè)Page用來(lái)存放圖像,。圖像以二維數(shù)組為容器,分為9行5列,,存放45幅圖像,,包含9幅采集的圖像和抽取的36幅分量圖層。Table的第2~11共10個(gè)Page用來(lái)存放測(cè)量數(shù)據(jù),,分別以10張表格形式輸出,,分別對(duì)應(yīng)9幅采集的圖像的測(cè)量數(shù)據(jù)和重要特征的全局比較。每個(gè)Page上有一個(gè)布爾量顯示控件,,用于指示當(dāng)前頁(yè)面的綜合判斷結(jié)果,。
![]() |
圖2 Middle area Function LED mode image
|
以下僅給出中部檢測(cè)圖像和數(shù)據(jù),請(qǐng)參考圖2-圖7
![]() |
圖3 Middle area Function mode measure data
|
![]() |
圖4 Middle area Night mode image
|
![]() |
圖5 Middle area Night mode measure data
|
![]() |
圖6 Middle area Day mode measure data
|
6.任務(wù)順序的優(yōu)化設(shè)計(jì)
在相鄰的兩次圖像采集之間需要完成幾項(xiàng)任務(wù),,包括圖像處理,、寫(xiě)全局變量、圖像輸出、測(cè)量結(jié)果輸出,、光源切換,、位置運(yùn)動(dòng)等,這些任務(wù)的執(zhí)行時(shí)間是不同的,。優(yōu)化這些任務(wù)的編排順序可顯著提高程序的執(zhí)行速度,。
采集圖像前要求所有運(yùn)動(dòng)靜止、光源穩(wěn)定發(fā)光,。由計(jì)算機(jī)向PLC發(fā)送運(yùn)動(dòng)觸發(fā)信號(hào)和光源切換觸發(fā)信號(hào)的指令完成時(shí)間是以10ms為數(shù)量級(jí)的,,而圖像處理、圖像輸出,、測(cè)量結(jié)果輸出,、寫(xiě)全局變量的完成時(shí)間是以100ms為數(shù)量級(jí)的。運(yùn)動(dòng)是否完成可通過(guò)讀取PLC中的標(biāo)志位來(lái)確定,,但光源是否穩(wěn)定發(fā)光,,只能依賴上電后的延遲時(shí)間。我們的經(jīng)驗(yàn)是LED光源從上電到穩(wěn)定發(fā)光至少需要500ms的延時(shí),。在一個(gè)產(chǎn)品的測(cè)試中需要9次光源切換,、4次位置運(yùn)動(dòng)。如果都用延時(shí)的方法,,那么將大大降低檢測(cè)速度,。所以我們不是在圖像采集后立刻對(duì)該幅圖像處理,而是先為下一次圖像采集做光源切換或運(yùn)動(dòng)觸發(fā),,然后再對(duì)本次采集的圖像做相對(duì)費(fèi)時(shí)的圖像處理等,,相當(dāng)于為光源切換或運(yùn)動(dòng)觸發(fā)作了延時(shí)處理,但又不占用額外的時(shí)間開(kāi)銷,。參考以下流程圖:
![]() |
7. Overlay的傳遞
Overlay是疊加在圖像上的一個(gè)特殊的圖層,,用于顯示ROI定義范圍、坐標(biāo)系定義和部分圖像處理的信息,。本系統(tǒng)中在同一位置采集的不同光源照明下的3幅圖像,,具有相同的坐標(biāo)系和像素精度,不必每次都做同樣的處理,,只需將第一幅圖像上的Overlay傳遞給其他兩幅圖像即可,。利用我們編寫(xiě)的Overlay傳遞vi,可以抽取任意image buffer的Overlay并傳遞到指定的image buffer中,。參考圖2,、圖4、圖6,,每幅圖像上的左上角紅色方框內(nèi)的原點(diǎn)坐標(biāo)位置及像素精度的文字信息和圖像中央位置的坐標(biāo)系標(biāo)志就是通過(guò)這種方法傳遞的,。
![]() |
8.ROI與Mask的組合應(yīng)用
利用ROI來(lái)定義感興趣區(qū)域,,利用Mask可以屏蔽掉不感興趣或者已測(cè)量過(guò)的區(qū)域,將ROI與Mask相結(jié)合可使一些復(fù)雜的測(cè)量變得簡(jiǎn)單而高效,。圖6中需要測(cè)量產(chǎn)品的外露面是否有劃傷,,經(jīng)過(guò)ROI和Mask的組合,只需兩步即可完成,。參考圖8、圖9,。
![]() |
圖8 Middle area Day mode mask1
|
![]() |
圖9 Middle area Day mode mask2
|
9.全局特征比較
在9個(gè)圖像處理子程序" title="子程序">子程序中,,部分測(cè)量數(shù)據(jù)需要進(jìn)行全局比較,已評(píng)定產(chǎn)品
整體區(qū)域的發(fā)光亮度的一致性,,因此需要在每個(gè)圖像處理子程序中將關(guān)心的數(shù)據(jù)寫(xiě)入全局變量,,最后在主程序中對(duì)這些全局變量進(jìn)行處理,請(qǐng)參考圖10,。
![]() |
圖10 Global compare parameters
|
六,、文件I/O
包括公差設(shè)置、讀取,、測(cè)量數(shù)據(jù)存儲(chǔ),,數(shù)據(jù)較多,因此采用表格文件方式,,將數(shù)據(jù)分類以二維數(shù)組的形式存取,。在圖像處理程序中對(duì)測(cè)量數(shù)據(jù)判斷時(shí),只需讀取公差設(shè)置相關(guān)的sub-array即可,。測(cè)量數(shù)據(jù)存儲(chǔ)的文件名中插入時(shí)間字符(精確到秒),,以避免文件名重復(fù)。
七,、上位鏈接和串口通訊
進(jìn)行上位鏈接通訊時(shí),,計(jì)算機(jī)和PLC之間使用命令(command)和響應(yīng)(response)進(jìn)行發(fā)送和接收。一次通訊送出的一組數(shù)據(jù)稱作一幀,,送出幀的權(quán)限稱為發(fā)送權(quán),。上位計(jì)算機(jī)持有發(fā)送權(quán),命令發(fā)送后,,響應(yīng)由PLC自動(dòng)返回,。由于PLC的響應(yīng)需要時(shí)間,因此在兩次命令之間必須插入延時(shí),。幀的格式如下:
@|機(jī)器號(hào)|頭碼|正文|FCS|終端
FCS稱為幀檢查序列,,把一幀的開(kāi)始到FCS前面的數(shù)據(jù)進(jìn)行邏輯異或的8位數(shù)據(jù)變成2個(gè)字符的ASCII碼,主要用于檢查數(shù)據(jù)錯(cuò)誤,。FCS的計(jì)算采用筆者以前用VB開(kāi)發(fā)的程序,,命令的傳送使用LabVIEW中的Instrument I/O assistant直接向串口發(fā)送,十分簡(jiǎn)單。Instrument I/O assistant提供三種類型的命令,,包括Write,,Query and parse,Read and parse,。
八,、 開(kāi)放性和擴(kuò)展性
本系統(tǒng)是針對(duì)帕薩特和速騰轎車的2種型號(hào)的溫控儀表盤(pán)的視覺(jué)檢測(cè)開(kāi)發(fā)的,但在軟硬件的設(shè)計(jì)中都充分考慮到系統(tǒng)的開(kāi)放性和擴(kuò)展性,,只需更換圖像處理子程序和各區(qū)域的位置設(shè)置,,即可以檢查任何二維平面上圖像信息。同時(shí)在Z軸上加裝接觸式測(cè)頭或非接觸式的激光測(cè)距傳感器,,即可以完成Z軸方向的尺寸測(cè)量,。三軸的行程X、Y,、Z為:200mm×200mm×150mm.
選擇的PLC上有4路脈沖輸出,,選用的光學(xué)鏡頭可以連續(xù)變倍,這樣在Zoom上加裝一個(gè)步進(jìn)電機(jī)和傳動(dòng)機(jī)構(gòu),,即可以實(shí)現(xiàn)變放大倍數(shù)的檢測(cè),,對(duì)尺寸精度和圖像質(zhì)量要求高的區(qū)域可使用高放大倍數(shù)測(cè)量。
同時(shí)系統(tǒng)還有4路AD輸入和2路DA輸出,,為向更復(fù)雜,、更靈活的系統(tǒng)擴(kuò)展提供了必要的硬件資源。
九,、 結(jié)論
本項(xiàng)目軟件預(yù)計(jì)開(kāi)發(fā)時(shí)間為三個(gè)月,,實(shí)際上不到兩個(gè)月就完成了,目前機(jī)器運(yùn)行十分穩(wěn)定,、高效,,得到客戶的贊譽(yù)。NI Vision豐富的圖像處理功能和LabVIEW靈活易用的編程環(huán)境是我們獲得成功的主要原因之一,。
筆者以前主要使用VB和C++做程序開(kāi)發(fā),,這次是第二次使用LabVIEW做項(xiàng)目。相比之下,,LabVIEW圖形化編程語(yǔ)言使程序員不必過(guò)分關(guān)注代碼和函數(shù)格式,,而是把主要精力放在功能設(shè)計(jì)和結(jié)構(gòu)設(shè)計(jì)上,從而節(jié)省了寶貴的開(kāi)發(fā)時(shí)間,。此外,,LabVIEW的幫助功能和大量的實(shí)例程序非常方便程序員的自學(xué)提高??傊?,我們認(rèn)為L(zhǎng)abVIEW作為測(cè)試測(cè)量領(lǐng)域的首選開(kāi)發(fā)平臺(tái)是當(dāng)之無(wú)愧的,。