慎 正 胡 超
1(江西理工大學(xué)電氣工程與自動(dòng)化學(xué)院 贛州 341000)
2(浙大寧波理工學(xué)院信息科學(xué)與工程學(xué)院 寧波 315100)
隨著工業(yè)生產(chǎn)自動(dòng)化水平的提高,對(duì)工件自動(dòng)化檢測(cè)的需求也在不斷增長(zhǎng)。機(jī)器視覺測(cè)量技術(shù)因具有非接觸、精度高、速度快的優(yōu)點(diǎn),被廣泛地運(yùn)用于生產(chǎn)線上的工件測(cè)量中。由于工件物體本身具有的剛性和規(guī)則性,工件圖像的輪廓能有效地體現(xiàn)目標(biāo)物體的特征。但工業(yè)現(xiàn)場(chǎng)的工件堆疊遮擋會(huì)導(dǎo)致提取的工件輪廓缺失和斷裂。因此,對(duì)局部工件輪廓進(jìn)行檢測(cè),已成為研究熱點(diǎn)。
Ianni 等[1-2]在 1996 年時(shí)將部分輪廓在模板輪廓上的匹配問題描述為一個(gè)組合優(yōu)化問題,并使用基于模擬退火算法和遺傳算法的改進(jìn)搜索算法對(duì)其進(jìn)行求解。之后,van Kaick 等[3]在此基礎(chǔ)上提出了基于蟻群算法的局部形狀匹配方法,對(duì)局部輪廓匹配的組合優(yōu)化問題求解得到概率最優(yōu)路徑,同時(shí)獲得最佳的匹配結(jié)果。此后,各種利用形狀特征描述子的局部輪廓匹配方法也被相繼提出。主要包括基于輪廓點(diǎn)區(qū)域分布直方圖的形狀上下文描述子(Shape Context)[4]、基于輪廓內(nèi)距離的形狀上下文描述子(Inner-Distance Shape Contex)[5]和融合了全局與局部輪廓信息的精確型高度函數(shù)描述子(Exact Height Function 1)[6]。王燕妮等[7]在針對(duì)建筑輪廓的識(shí)別中,提出了基于各種矢量描述和輪廓局部特征的局部輪廓識(shí)別算法。該算法根據(jù)不同建筑的矢量信息,制定了任意形狀輪廓匹配相似度準(zhǔn)則及映射函數(shù),能有效解決局部輪廓的匹配問題。黃浩等[8]提出了利用形狀描述子將各輪廓轉(zhuǎn)換為信號(hào)數(shù)據(jù),訓(xùn)練反向傳播神經(jīng)網(wǎng)絡(luò),對(duì)復(fù)雜的管道網(wǎng)絡(luò)圖像完成了識(shí)別。文獻(xiàn)[9-10]利用物體的局部輪廓大多為開輪廓的特性,提出一種基于輪廓點(diǎn)內(nèi)間距的特征描述子。該描述子有旋轉(zhuǎn)、尺度和平移不變性,而且具有很好的仿射不變性。Yang等[11]在 2018 年提出三角形內(nèi)間距(Triangular Centroid Distances,TCDs)算子。TCDs 算子對(duì)于平移、旋轉(zhuǎn)、縮放,以及相當(dāng)大的形狀變形都有可靠的不變性。孫國(guó)棟等[12]對(duì) TCDs 描述子和EHF1(Exact Height Function 1)描述子進(jìn)行融合,利用 EHF1 算子對(duì)輪廓全局信息與局部信息融合的優(yōu)點(diǎn),提出新的 TCDs 描述子。但為了有效地描述輪廓,TCDs 描述子需要在輪廓處密集地取采樣點(diǎn),在和模板輪廓匹配時(shí),局部輪廓按采樣點(diǎn)次序依次在模板輪廓上滑動(dòng),并進(jìn)行相似度計(jì)算。這存在算法匹配時(shí)計(jì)算時(shí)間過長(zhǎng),且要處理采樣點(diǎn)起點(diǎn)不變的問題。針對(duì)以上問題,本文根據(jù)工件輪廓的角點(diǎn)特性,使用角點(diǎn)數(shù)量對(duì)模板輪廓進(jìn)行初步劃分,獲取模板圖像中的疑似輪廓段,再根據(jù)角點(diǎn)位置重新選取采樣點(diǎn),解決采樣點(diǎn)的起點(diǎn)不變性。最后再將局部輪廓和模板的疑似輪廓進(jìn)行匹配,完成局部輪廓的識(shí)別。結(jié)果表明,在相同取樣點(diǎn)的情況下,本文算法的識(shí)別率高于傳統(tǒng) TCDs 算法,并且算法耗時(shí)減少了 86%。
對(duì)于輪廓的角點(diǎn)提取,傳統(tǒng)方法是提取輪廓上每一點(diǎn)的曲率,而輪廓的角點(diǎn)一般是輪廓上曲率值極大的點(diǎn),所以可以通過提取輪廓上的曲率極值點(diǎn)來提取輪廓圖像的角點(diǎn)。本文采用構(gòu)建輪廓點(diǎn)前后三角形的方式計(jì)算輪廓曲線上每一點(diǎn)的曲率值。具體方法是,將輪廓上每一點(diǎn)和其前后一定距離的兩點(diǎn)組成一個(gè)三角形,計(jì)算每個(gè)前后三角形中輪廓點(diǎn)所在角的角度,作為該點(diǎn)的曲率值。這種計(jì)算曲率值的方法用時(shí)短,對(duì)于輪廓的細(xì)小突起也能起到明顯的平滑作用。該算法的原理如圖 1 所示。
圖1 輪廓點(diǎn)曲率原理圖Fig. 1 Schematic diagram of contour point curvature
獲取每個(gè)輪廓點(diǎn)所組成三角形的 后,便可獲得如圖 2 所示局部輪廓的曲率值序列。其中,曲率值序列的局部極大值點(diǎn)便是該輪廓的角點(diǎn)。
圖2 輪廓點(diǎn)曲率值序列Fig. 2 Contour point curvature value sequence
TCDs 描述子于 2018 年提出[11],能很好地描述二維形狀。該作者在文中還提出了局部輪廓和模板輪廓的匹配方法,其原理如圖 3 所示。
圖3 TCDs 算法原理圖Fig. 3 TCDs algorithm principle diagram
首先,假設(shè)圖 3 中紅色段為總輪廓的局部輪廓段,記為輪廓P,隨后計(jì)算輪廓P的質(zhì)心G,在P上均勻地取N個(gè)采樣點(diǎn),對(duì)于每個(gè)采樣點(diǎn)Pi來說,都可以與其他采樣點(diǎn) 和質(zhì)心G組成N-1 個(gè)三角形,記為 。接著計(jì)算出每個(gè) 的質(zhì)心,記為gij。其次,對(duì)于采樣點(diǎn)Pi,計(jì)算Pi與gij之間的歐氏距離,獲得一組長(zhǎng)度為N-1 的特征向量,該特征向量就是采樣點(diǎn)Pi的 TCDs 特征向量,記為li。最后,按照輪廓點(diǎn)的次序提取輪廓P上所有采樣點(diǎn)的TCDs 特征向量,記為 。至此,輪廓P的 TCDs 描述子提取完成。而對(duì)于局部輪廓和模板輪廓的匹配問題,首先根據(jù)輪廓P的長(zhǎng)度,在模板輪廓上取相同長(zhǎng)度的輪廓段;然后,在模板輪廓上滑動(dòng)輪廓段,計(jì)算每次滑動(dòng)后輪廓段的 TCDs 特征矩陣,并計(jì)算特征矩陣與L的相似度;最后,選取模板輪廓中相似度最大的輪廓段作為匹配結(jié)果。
一般 TCDs 描述子提取的采樣點(diǎn)是在輪廓段上均勻地采樣,同時(shí)為了準(zhǔn)確地描述輪廓,采樣點(diǎn)的間距不能過大。而這樣的采樣方式將導(dǎo)致在模板輪廓匹配的過程中模板輪廓段滑動(dòng)次數(shù)過多,計(jì)算量較大。此外,在計(jì)算 TCDs 描述子時(shí),局部輪廓采樣點(diǎn)起始點(diǎn)的改變會(huì)造成特征矩陣的變化,故一般會(huì)對(duì)提取的特征矩陣的每一行進(jìn)行離散傅里葉變換,然后忽略傅里葉變換后的相位信息,只使用系數(shù)的大小,保證了描述子的起點(diǎn)不變性。但這樣會(huì)導(dǎo)致提取 TCDs 描述子的時(shí)間變長(zhǎng),而且起點(diǎn)不變性主要運(yùn)用在兩個(gè)完整封閉形狀的匹配,在局部輪廓的匹配中實(shí)用性不強(qiáng)。
本文提出使用角點(diǎn)特征對(duì)模板輪廓段進(jìn)行篩選,然后使用角點(diǎn)坐標(biāo)對(duì)采樣點(diǎn)進(jìn)行鎖定,再對(duì)局部輪廓提取 TCDs 特征矩陣,減少了計(jì)算量和計(jì)算步驟,具體方法如下。
之后根據(jù)采樣點(diǎn)集L獲得輪廓P的 TCDs 特征矩陣。首先提取輪廓P的質(zhì)心 ,為了簡(jiǎn)化計(jì)算量,使用采樣點(diǎn)的坐標(biāo)來計(jì)算質(zhì)心。計(jì)算公式如下:
圖4 采樣點(diǎn)分布Fig. 4 Distribution of sampling points
至此,TCDs 特征矩陣的提取基本完成。隨后根據(jù)局部輪廓的角點(diǎn)信息在模板輪廓上提取疑似的輪廓段。由于本文的描述子算法簡(jiǎn)化了方向不變性,所以從一開始就要對(duì)局部輪廓進(jìn)行方向上的判定。局部輪廓的起點(diǎn)和末點(diǎn),其他點(diǎn)為局部輪廓的角點(diǎn),(xi,yi)為對(duì)應(yīng)角點(diǎn)ji在圖像中的二維坐標(biāo)。設(shè)參數(shù)F為:
圖5 工件的局部輪廓Fig. 5 Partial contour of the workpiece
若F>0,則局部輪廓的遍歷方向?yàn)槟鏁r(shí)針;若F<0,則局部輪廓的遍歷方向?yàn)轫槙r(shí)針;若F=0,則表示局部輪廓為一條直線。
獲得局部輪廓的遍歷方向后,便可以按照局部輪廓的方向在模板輪廓上生成疑似輪廓段。記模板輪廓為D、角點(diǎn)個(gè)數(shù)為M、局部輪廓P、角點(diǎn)個(gè)數(shù)為N,那么顯然N≤M。這樣模板輪廓就能分成M組,每組包含N個(gè)角點(diǎn)的疑似輪廓段。圖 5 所示的局部輪廓上有 4 個(gè)角點(diǎn),記輪廓起點(diǎn)A與第 1 個(gè)角點(diǎn)的距離為L(zhǎng)1,輪廓末點(diǎn)B與最后 1個(gè)角點(diǎn)的距離為L(zhǎng)2。在模板輪廓上選取任意角點(diǎn)為起點(diǎn),并按照公式(6)確定的遍歷方向,在模板輪廓上依次選取包含 4 個(gè)角點(diǎn)的輪廓段,并在輪廓段的第 1 個(gè)角點(diǎn)和最后 1 個(gè)角點(diǎn)處,分別在模板輪廓上順延L1與L2的距離,獲得模板輪廓的一個(gè)疑似輪廓段。然后依次按確定的遍歷方向移動(dòng)起始的角點(diǎn),獲得剩下的疑似輪廓段,組成該模板的疑似輪廓段集合,具體如圖 6 所示。
疑似輪廓段集合按照上文方法提取 TCDs 特征矩陣,并與局部輪廓P的 TCDs 特征矩陣計(jì)算差異度,其中差異度最小的輪廓段便是局部輪廓P與該模板輪廓的匹配結(jié)果。
圖6 模板輪廓疑似輪廓段Fig. 6 Template contour suspected contour segment
提取模板的疑似輪廓后,需要考慮一種特殊情況:當(dāng)局部輪廓的L1、L2過長(zhǎng)時(shí),某些模板的疑似輪廓段的長(zhǎng)度會(huì)超出整個(gè)模板輪廓的長(zhǎng)度。如圖 7 所示,顯然這些疑似輪廓段不是最相似的。為了節(jié)省計(jì)算時(shí)間,本文直接計(jì)算疑似輪廓段的長(zhǎng)度,若疑似輪廓段長(zhǎng)度超出整個(gè)模板輪廓的長(zhǎng)度,則可直接剔除。
圖7 特殊的輪廓段Fig. 7 Special contour segment
圖8 相似零件的匹配結(jié)果Fig. 8 Matching results of similar parts
圖 8(a)中標(biāo)紅輪廓段為待檢測(cè)的目標(biāo)輪廓段,圖 8(b、c)為兩個(gè)形狀類似但尺寸不同的模板輪廓匹配結(jié)果。其中,圖 8(b)為正確的匹配結(jié)果,但目標(biāo)輪廓段與圖 8(c)的匹配結(jié)果也非常相似。為了正確區(qū)分不同尺寸的工件,本文根據(jù)輪廓的長(zhǎng)度特征對(duì)兩輪廓的計(jì)算公式加以修正。設(shè)輪廓P的長(zhǎng)度為lP、輪廓C的長(zhǎng)度為lC,那么修正后的輪廓相似度 為:
其中,δ為長(zhǎng)度差異的控制系數(shù),主要是為了控制長(zhǎng)度差異對(duì)輪廓相似度的影響,一般δ的取值范圍在[0, 1],主要體現(xiàn)形狀輪廓相似的優(yōu)先性。經(jīng)過多次實(shí)驗(yàn)驗(yàn)證,δ取 0.1 時(shí)實(shí)驗(yàn)效果最為理想。本文的算法流程如圖 9 所示。
圖9 算法流程圖Fig. 9 Algorithm chart
圖10 工件圖像的拍攝環(huán)境Fig. 10 The shooting environment of the workpiece image
本文從檢測(cè)速度和檢測(cè)精度兩方面來驗(yàn)證檢測(cè)算法的性能。首先,選取 6 種形狀和大小不同的工件,每種工件取不同角度、不同視角下的輪廓圖各 11 張。圖 10 為工件圖像的拍攝環(huán)境。每張工件圖中隨機(jī)選取 6 段工件的局部輪廓,共提取出 600 張工件的局部輪廓樣本,并給每一個(gè)工件使用不同視角的 3 張圖片作為模板,取 3 張模板中相似度值最接近的輪廓段作為模板的匹配結(jié)果,具體流程如圖 11 所示。
圖11 匹配流程圖Fig. 11 Matching flowchart
圖12 局部工件輪廓的匹配結(jié)果Fig. 12 Matching result of partial workpiece contour
圖 12 為實(shí)驗(yàn)匹配結(jié)果。其中,圖 12 第 1 列標(biāo)紅的輪廓為待配結(jié)果,綠色框表示和待檢測(cè)輪廓最相似的工件輪廓。對(duì)于待檢測(cè)的部分輪廓,即便不是對(duì)應(yīng)的正確工件,也能在相應(yīng)的工件輪廓中找到最相似的疑似輪廓段,很好地體現(xiàn)了TCDs 描述子對(duì)形狀的敏感性??梢姡瑢?duì)于形狀相似但大小不同的工件局部輪廓,本文算法也能正確完成識(shí)別。
圖 13 為本文算法在堆疊工件圖像的匹配結(jié)果。其中,不同顏色分別表示不同的識(shí)別結(jié)果。例如,工件輪廓標(biāo)注為紫色,那就說明該工件被識(shí)別為下方為紫色的模板工件,并在模板工件上給出匹配的輪廓段和相似度。
圖13 局部工件輪廓的匹配結(jié)果Fig. 13 Matching result of partial workpiece contour
在堆疊情況比較復(fù)雜時(shí),如圖 14 所示被標(biāo)紅的輪廓段為工件堆疊較為嚴(yán)重的區(qū)域,堆疊物體的輪廓線互相覆蓋,局部輪廓段的角點(diǎn)位置和個(gè)數(shù)被改變,造成該輪廓段不能識(shí)別或者識(shí)別錯(cuò)誤的情況。在輪廓線影響不嚴(yán)重的區(qū)域,一般忽略重疊輪廓線的影響,將重疊輪廓段作為獨(dú)立的目標(biāo)輪廓段進(jìn)行匹配,匹配結(jié)果如圖 15 所示。而對(duì)于堆疊物體的輪廓線影響較嚴(yán)重的圖片,本文算法很難識(shí)別提取出來的局部輪廓段,這是本文算法的不足之處。
圖14 復(fù)雜的堆疊工件圖像Fig. 14 Complex stacked workpiece image
圖15 復(fù)雜的堆疊工件匹配結(jié)果Fig. 15 Complex stack matching results
從公式(2)可知,對(duì)于一段待檢測(cè)的局部輪廓,本文算法的采樣點(diǎn)選取是通過對(duì)輪廓段進(jìn)行角點(diǎn)分割,然后在角點(diǎn)分割段中均勻取樣。這樣的采樣方法能充分利用角點(diǎn)間輪廓段平滑的特性,少量取點(diǎn)也能很好地描述輪廓。角點(diǎn)輪廓段內(nèi)不同采樣點(diǎn)個(gè)數(shù)對(duì)識(shí)別正確率的影響如圖 16所示。
圖16 采樣點(diǎn)個(gè)數(shù)對(duì)準(zhǔn)確率的影響Fig. 16 The influence of the number of sampling points on accuracy
從圖 16 可知,當(dāng)每個(gè)角點(diǎn)間的采樣點(diǎn)數(shù)為 6 個(gè)時(shí),識(shí)別率達(dá)到了較高值,且采樣點(diǎn)個(gè)數(shù)最少。因此本文算法對(duì)輪廓的采樣點(diǎn)個(gè)數(shù)為(n+1)×6(n為局部輪廓上的角點(diǎn)個(gè)數(shù))。
表1 為不同局本輪廓匹配算法在單一模板的匹配時(shí)間,由于本文算法的采樣點(diǎn)數(shù)量和輪廓內(nèi)角點(diǎn)數(shù)量相關(guān),而傳統(tǒng) TCDs 算法都為固定數(shù)目的采樣點(diǎn),為了保證算法比較的公平性,TCDs算法的采樣點(diǎn)數(shù)目限定為(n+1)×6 個(gè)。從表1可以看出,與傳統(tǒng)的 TCDs 輪廓匹配方法相比,本文算法的計(jì)算效率有明顯的提升。
表1 算法計(jì)算時(shí)間Table 1 Algorithm calculation time
為了體現(xiàn)本文算法的識(shí)別精度,將傳統(tǒng)TCDs 匹配算法、形狀上下文(Shape Context)匹配算法、基于 Shape Context 描述子的 BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)算法和本文算法,在不同遮擋比例下的識(shí)別率進(jìn)行計(jì)算。根據(jù)上文所提到的,由于本文算法是根據(jù)目標(biāo)局部輪廓的角點(diǎn)個(gè)數(shù)來形成采樣點(diǎn)個(gè)數(shù),所以 TCDs 匹配算法和 SC(形狀上下文)匹配算法的采樣點(diǎn)個(gè)數(shù)均為(n+1)×6 個(gè),而 SC+BP 神經(jīng)網(wǎng)絡(luò)算法則使用固定的采樣點(diǎn)個(gè)數(shù)進(jìn)行網(wǎng)絡(luò)的訓(xùn)練和識(shí)別,大小和本文算法的數(shù)量級(jí)相同。實(shí)驗(yàn)對(duì)比結(jié)果如表 2所示。從表 2 可知,本文算法在不同的局部輪廓比例的識(shí)別率均優(yōu)于以上 3 種算法。在采樣點(diǎn)數(shù)量較少的情況下,本文算法根據(jù)輪廓角點(diǎn)位置的采樣方法對(duì)輪廓的描述精度有明顯的提升。
表2 不同遮擋比例的識(shí)別率Table 2 Recognition rate of different occlusion ratios
本文針對(duì)工件被遮擋只能提取局部輪廓的問題,提出一種基于 TCDs 描述子的改進(jìn)局部輪廓匹配算法。首先,利用局部輪廓的角點(diǎn)信息在模板輪廓上尋找到相對(duì)應(yīng)的疑似輪廓,這大大縮短了傳統(tǒng) TCDs 算法在模板匹配上滑動(dòng)匹配的計(jì)算時(shí)間。其次,在描述子的采樣點(diǎn)上,根據(jù)輪廓的角點(diǎn)分布,在輪廓段的角點(diǎn)間均勻取樣,充分利用了角點(diǎn)間輪廓段平滑的特性,大大減少了采樣點(diǎn)的數(shù)量。而且,本文簡(jiǎn)化了傳統(tǒng) TCDs 算法解決起點(diǎn)不變性的步驟。最后,通過統(tǒng)一局部輪廓和模板輪廓的遍歷方向,保證了局部輪廓和模板輪廓中疑似輪廓方向的一致性。通過對(duì)工件局部輪廓和模板輪廓疑似輪廓段的相似度比較,獲得局部輪廓在不同模板輪廓的匹配結(jié)果,實(shí)現(xiàn)局部工件輪廓的目標(biāo)匹配。實(shí)驗(yàn)結(jié)果表明,與傳統(tǒng)的TCDs 算法相比,本文算法時(shí)間效率有明顯的提升。在不同的局部輪廓比例和少量采樣子的情況下,本文算法對(duì)局部輪廓的識(shí)別率均優(yōu)于傳統(tǒng)算法。其中,當(dāng)局部輪廓的比例為 60% 時(shí),本文算法的識(shí)別率依然高于 90%。但本文算法也存在不足之處:當(dāng)堆疊物體的輪廓線影響較嚴(yán)重時(shí),由于局部輪廓段的角點(diǎn)信息被破壞,算法難以識(shí)別該局部輪廓。