(寶雞文理學(xué)院 計(jì)算機(jī)學(xué)院, 寶雞 721016)
鈦是一種結(jié)構(gòu)型金屬,具有導(dǎo)熱系數(shù)低、彈性模量小、化學(xué)活性高等特點(diǎn),是典型的難加工材料。加工過程中,由于生產(chǎn)刀具磨損嚴(yán)重,易發(fā)生偏差過大,給檢驗(yàn)人員帶來了大量的測(cè)量任務(wù)。當(dāng)前,大部分中小型鈦金屬加工企業(yè)在鈦工件測(cè)量上,主要使用卷尺、卡尺、千分尺等工具進(jìn)行人工測(cè)量,人工測(cè)量誤差不可控因素多、效率低、人易疲勞等特點(diǎn)。隨著建立在計(jì)算機(jī)圖像學(xué)基礎(chǔ)上的視覺檢測(cè)技術(shù)的長(zhǎng)足發(fā)展,基于機(jī)器視覺的測(cè)量系統(tǒng),與人工測(cè)量相比較,具有誤差小、柔性化程度高、不會(huì)創(chuàng)傷表面等特點(diǎn),得到了廣泛的應(yīng)用[1]。
視覺測(cè)量是將被測(cè)對(duì)象通過機(jī)器視覺產(chǎn)品轉(zhuǎn)換成圖像信號(hào),傳送給專用的圖像處理系統(tǒng),圖像處理系統(tǒng)根據(jù)像素分布和亮度、顏色等信息,轉(zhuǎn)變成數(shù)字化信號(hào),利用這些信號(hào)進(jìn)行各種運(yùn)算來抽取目標(biāo)進(jìn)行測(cè)量,再將其換算成實(shí)際測(cè)量物的尺寸[2-3]。測(cè)量的精度依賴于被測(cè)對(duì)象的成像效果和圖像處理的算法。成像效果和相機(jī)、光源選取及輔助傳動(dòng)裝置相關(guān),其設(shè)計(jì)主要依據(jù)對(duì)被測(cè)對(duì)象的精度要求、投入成本、測(cè)量現(xiàn)場(chǎng)環(huán)境和實(shí)施人員的經(jīng)驗(yàn),有成熟的選擇方案;圖像處理的算法則要根據(jù)測(cè)量對(duì)象的形狀、運(yùn)動(dòng)過程、照明、測(cè)量項(xiàng)目均需要選擇適宜的算法,是滿足測(cè)量要求的關(guān)鍵。因此當(dāng)前主流的視覺測(cè)量系統(tǒng)還是主要應(yīng)用于一些特定場(chǎng)合,針對(duì)具體的測(cè)量任務(wù)做定制化的二次開發(fā)[4]。中小型鈦加工企業(yè)生產(chǎn)的鈦工件產(chǎn)品規(guī)格、形狀差別大,測(cè)量項(xiàng)目多等特點(diǎn),很難開發(fā)出完成對(duì)多種規(guī)格鈦工件測(cè)量的通用視覺系統(tǒng),不同工件需要進(jìn)行定制化開發(fā)專用的視覺測(cè)量,對(duì)于中小企業(yè)的使用和維護(hù)成本很高,這是制約視覺測(cè)量系統(tǒng)在此類企業(yè)全面使用的主要瓶頸。本文就是采用面向接口的編程技術(shù)和設(shè)計(jì)模式的相關(guān)理念,針對(duì)抽象進(jìn)行編程,將圖像算法和被測(cè)對(duì)象在編碼時(shí)解耦,具體圖像處理算法實(shí)例的創(chuàng)建延遲到程序執(zhí)行時(shí)根據(jù)測(cè)量項(xiàng)目動(dòng)態(tài)匹配,開發(fā)通用的視覺測(cè)量系統(tǒng),以滿足多種規(guī)格測(cè)量項(xiàng)目的需要,降低中小型鈦加工企業(yè)的使用成本。
機(jī)器視覺測(cè)量系統(tǒng)由相機(jī)、光源、輔助設(shè)備及圖像處理軟件組成[5],典型測(cè)量執(zhí)行過程如圖1所示。

圖1 典型的機(jī)器視覺測(cè)量軟件處理過程
在軟件處理過程中影響視覺測(cè)量精度主要有圖像預(yù)處理、測(cè)量項(xiàng)ROI區(qū)域圖像提取、區(qū)域圖像增強(qiáng)、圖像測(cè)量及根據(jù)相機(jī)標(biāo)定將圖像測(cè)量結(jié)果轉(zhuǎn)換為物理尺寸等環(huán)節(jié)。首先根據(jù)被測(cè)對(duì)象的成像特點(diǎn),采用適當(dāng)?shù)膱D像增強(qiáng)、去噪、畸形矯正算法對(duì)采集的圖像進(jìn)行預(yù)處理;其次,遍歷測(cè)量項(xiàng),提取測(cè)量項(xiàng)感興趣的區(qū)域圖像,并根據(jù)測(cè)量項(xiàng)區(qū)域圖像成像特點(diǎn)和測(cè)量要求,進(jìn)行如:進(jìn)行邊緣增強(qiáng)、圖像細(xì)化等增強(qiáng)處理;再次,提取特征對(duì)象輪廓或端點(diǎn),依據(jù)端點(diǎn)或輪廓特征點(diǎn)的坐標(biāo),即可得到圖像上的測(cè)量結(jié)果。如:線段長(zhǎng)度測(cè)量,首先獲取線段兩個(gè)端點(diǎn),再使用數(shù)學(xué)方法,計(jì)算兩坐標(biāo)之間的距離;最后,依據(jù)圖像測(cè)量結(jié)果和相機(jī)標(biāo)定確定的物理尺寸和像素間換算關(guān)系,得到被測(cè)物體的物理尺寸。
圖像測(cè)量技術(shù)關(guān)鍵點(diǎn)
基于機(jī)器視覺的測(cè)量系統(tǒng)是應(yīng)用圖像處理技術(shù),對(duì)形成圖像的灰度進(jìn)行分析處理,提取相應(yīng)的邊緣測(cè)量項(xiàng)的輪廓和線條,完成測(cè)量任務(wù)的軟件系統(tǒng),其關(guān)鍵技術(shù)是根據(jù)圖像處理算法的選擇和相機(jī)的標(biāo)定[6]。當(dāng)前,對(duì)于某一類問題的圖像處理算法很多,但每種算法均具有一定的使用條件和場(chǎng)景,同類的處理算法之間是開放的,無強(qiáng)制約束,在運(yùn)行過程中可以相互替換。如:圖像增強(qiáng)就有直方圖均衡化、對(duì)數(shù)變換、伽馬變換等方法,直方圖均衡化對(duì)對(duì)比度較低的圖像適合;而對(duì)數(shù)變換對(duì)比度偏低并且灰度值偏低的圖像增強(qiáng)效果好;伽馬變換對(duì)體亮度值偏高情況下的圖像增強(qiáng)效果明顯。在程序開發(fā)階段基于算法類型進(jìn)行編碼,將具體算法的執(zhí)行延遲到程序執(zhí)行階段進(jìn)行,將很好的解決圖像算法選擇問題。
相機(jī)標(biāo)定是圖像測(cè)量非常關(guān)鍵環(huán)節(jié),用于確定物理尺寸和像素間的換算關(guān)系,是求解相機(jī)的內(nèi)參數(shù)以及畸變參數(shù)的過程。相機(jī)標(biāo)定過程比較規(guī)范,一般使用棋盤板或具有白色背景的黑圓圈,被標(biāo)定的攝像機(jī)需要從不同的角度對(duì)特殊模式圖像拍攝 10-15張照片,然后通過標(biāo)定算法找到最優(yōu)的攝像機(jī)內(nèi)部參數(shù)和畸變向量[7-9]。系統(tǒng)采用張定友平面標(biāo)定法,使用OpenCV提供的算法嵌入在程序中,獲得相關(guān)計(jì)算參數(shù)。
根據(jù)以上分析,將通用測(cè)量軟件分為測(cè)量配置模塊和測(cè)量執(zhí)行模塊兩部分,前者用于完成相機(jī)標(biāo)定、算法優(yōu)選的輔助分析軟件,及記錄參數(shù)、閾值及處理結(jié)點(diǎn)上圖像算法的選擇的結(jié)果;后者根據(jù)配置模塊記錄的相應(yīng)信息完成測(cè)量任務(wù)。將每種測(cè)量任務(wù)定義一個(gè)測(cè)量工程,某規(guī)格型號(hào)鈦板的測(cè)量就是一個(gè)測(cè)量工程;每個(gè)測(cè)量工程可設(shè)置一個(gè)或多個(gè)測(cè)量項(xiàng),如:鈦板測(cè)量包括寬度、長(zhǎng)度、厚度尺寸的測(cè)量等。將完成測(cè)量任務(wù)需要對(duì)圖像做各種處理活動(dòng)成為測(cè)量結(jié)點(diǎn),每個(gè)測(cè)量結(jié)點(diǎn)包含了一個(gè)最適合此圖像處理的算法及相應(yīng)的參數(shù)。按照測(cè)量結(jié)點(diǎn)的執(zhí)行順序,將完成測(cè)量任務(wù)的結(jié)點(diǎn)連接起來的鏈稱為測(cè)量鏈,一個(gè)測(cè)量任務(wù)對(duì)應(yīng)一個(gè)唯一的測(cè)量鏈。測(cè)量配置模塊對(duì)每個(gè)工件的測(cè)量任務(wù)定義一個(gè)測(cè)量工程,在測(cè)量工程下對(duì)每一個(gè)應(yīng)用圖像處理的活動(dòng)定義成測(cè)量結(jié)點(diǎn),根據(jù)采集的現(xiàn)場(chǎng)圖片,進(jìn)行圖像處理算法的比較分析,和相關(guān)參數(shù)、閾值的率定。測(cè)量執(zhí)行模塊按照測(cè)量工程將測(cè)量鏈中各個(gè)結(jié)點(diǎn)的數(shù)據(jù)取出,寫入對(duì)列,順序執(zhí)行對(duì)列中的任務(wù),按照每個(gè)測(cè)量結(jié)點(diǎn)約定執(zhí)行相應(yīng)的算法、參數(shù)、閾值等,完成測(cè)量任務(wù)。
基于機(jī)器視覺通用測(cè)量軟件是在開源計(jì)算機(jī)視覺庫(kù)OPENCV提供算法庫(kù)的基礎(chǔ)上,對(duì)其算法進(jìn)行二次封裝,形成具有通用性強(qiáng)、擴(kuò)展性好的基礎(chǔ)部件庫(kù)。利用Visual stdio2013開發(fā)工具,完成測(cè)量配置模塊和測(cè)量運(yùn)行模塊的開發(fā)。配置模塊和執(zhí)行模塊相互獨(dú)立,配置模塊將參數(shù)、算法等信息存入輕量級(jí)的SQLite數(shù)據(jù)庫(kù)中,和執(zhí)行模塊通過數(shù)據(jù)庫(kù)的信息,經(jīng)過類的反射或工廠模式,動(dòng)態(tài)創(chuàng)建和運(yùn)行算法實(shí)例。總體架構(gòu)設(shè)計(jì)如圖2所示。

圖2 通用測(cè)量系統(tǒng)總體架構(gòu)
1. 基礎(chǔ)算法處理庫(kù)設(shè)計(jì)
基礎(chǔ)庫(kù)算法處理庫(kù)是在開源的計(jì)算機(jī)視覺庫(kù)基礎(chǔ)上,增加中間層。設(shè)置模塊和執(zhí)行模塊是基于基礎(chǔ)庫(kù)中的算法進(jìn)行編碼,和OpenCV中的算法不直接發(fā)生耦合,使用自定義算法或更換OpenCV中的算法為其他算法提供了良好的擴(kuò)展性[10]。
2. 設(shè)置控件設(shè)計(jì)
設(shè)置模塊是在實(shí)際的測(cè)量環(huán)境下采集一副圖像,基于該圖像設(shè)置測(cè)量鏈,進(jìn)行測(cè)量項(xiàng)目、測(cè)量區(qū)域ROI及根據(jù)區(qū)域圖像成像特點(diǎn)選擇最適合的執(zhí)行算法和執(zhí)行使用的參數(shù)[11]。按照操作和算法的功能進(jìn)行分類,將所使用的操作封裝成控件,每個(gè)控件帶有一個(gè)圖標(biāo)和一個(gè)屬性窗口,屬性窗口是與之配套的閾值或參數(shù)等屬性,設(shè)置完成后將其存入數(shù)據(jù)庫(kù)中。圖標(biāo)支持用戶通過拖、拉、拽完成測(cè)量任務(wù)的設(shè)置。
3. 圖像算法封裝
圖像處理算法是視覺測(cè)量系統(tǒng)軟件部分的關(guān)鍵[12],圖像算法封裝是利用設(shè)計(jì)模式中的策略模式,首先按照功能對(duì)算法進(jìn)行分類,再抽象出每類算法的接口,將每個(gè)算法獨(dú)立的封裝成具有共同接口的類,使得它們可以相互替換。封裝時(shí)將算法使用的參數(shù)、閾值等內(nèi)容封裝在類內(nèi)部。例如:將直方圖均衡化、拉普拉斯、對(duì)數(shù)變換、伽馬變換等圖像增強(qiáng)算法設(shè)計(jì)為具有同一接口的、互不關(guān)聯(lián)的獨(dú)立類,其設(shè)計(jì)類圖如圖3所示。

圖3 圖像增強(qiáng)算法封裝示例
在圖中,圖像增強(qiáng)接口(IImageEnhance)是抽象出的圖像增強(qiáng)接口,定義了一個(gè)圖像增強(qiáng)方法(Enhance),該方法包括增強(qiáng)前圖像(imageIn)和增強(qiáng)后的圖像(imageEnhance)兩個(gè)參數(shù)。直方圖均衡、拉普拉斯變換、伽馬變換、對(duì)數(shù)變換是實(shí)現(xiàn)了該接口針對(duì)每一個(gè)具體算法封裝的類,每個(gè)具體類對(duì)應(yīng)著OPENCV算法庫(kù)中的算法,算法的相關(guān)執(zhí)行參數(shù)閾值則通過訪問數(shù)據(jù)庫(kù)中配置參數(shù)獲得。數(shù)據(jù)庫(kù)訪問工具是服務(wù)于數(shù)據(jù)庫(kù)連接和數(shù)據(jù)存取封裝的類,與具體的算法構(gòu)成關(guān)聯(lián)關(guān)系。
4. 測(cè)試運(yùn)行
通過鈦工件尺寸測(cè)量對(duì)系統(tǒng)進(jìn)行驗(yàn)證。在驗(yàn)證過程中,增加了圖像定位功能,實(shí)現(xiàn)工件隨意放置也可以檢測(cè)尺寸。系統(tǒng)首先通過對(duì)測(cè)量項(xiàng)及測(cè)量區(qū)域進(jìn)行設(shè)置,然后設(shè)置角度測(cè)量任務(wù)的測(cè)量鏈和測(cè)量節(jié)點(diǎn),如圖像增強(qiáng)部分由二值化、均值濾波(1次)、伽馬變換(2次)4個(gè)測(cè)量節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)設(shè)置對(duì)應(yīng)的參數(shù)。應(yīng)用該系統(tǒng)對(duì)10組規(guī)格為φ85 mm鈦工件的直徑進(jìn)行測(cè)量,其標(biāo)準(zhǔn)差最大值為0.009 mm,測(cè)量速率為300 ms/個(gè),其精度和定制化開發(fā)系統(tǒng)的精度一致,速率略小于定制化開發(fā)系統(tǒng),完全滿足鈦工件在線測(cè)量的要求。
本文設(shè)計(jì)了一款通用的鈦工件測(cè)量軟件系統(tǒng),可完成對(duì)不同規(guī)格鈦工件尺寸角度的測(cè)量,解決了傳統(tǒng)視覺測(cè)量系統(tǒng)專用性強(qiáng),通用性差、擴(kuò)展困難等問題,降低了視覺測(cè)量系統(tǒng)的開發(fā)成本和應(yīng)用成本。降低了中小型鈦金屬生產(chǎn)企業(yè)基于機(jī)器視覺測(cè)量系統(tǒng)的使用門檻,對(duì)這些企業(yè)的生產(chǎn)技術(shù)改造、提高自動(dòng)化水平具有一定的促進(jìn)作用。