趙 琴,王明喆,嚴(yán) 楠,王鵬飛,陳雨青,王 碩
(1.西安工程大學(xué) 機(jī)電工程學(xué)院,陜西 西安 710600;2.寧波職業(yè)技術(shù)學(xué)院,浙江 寧波 315800)
筒子紗作為現(xiàn)代紡織行業(yè)中絡(luò)筒工序的終端產(chǎn)品,是通過絡(luò)筒機(jī)上紗線纏繞而形成的,表面為致密的紗線[1-2]。隨著機(jī)器視覺技術(shù)的興起,許多紡紗企業(yè)通過將3D 視覺與工業(yè)機(jī)器人相結(jié)合來代替人工,將料斗里的紗筒放到紗架的上紗過程[3]。點(diǎn)云聚類分割作為3D 視覺技術(shù)中較為關(guān)鍵的步驟,分割的結(jié)果將會(huì)直接影響視覺系統(tǒng)對(duì)料斗里紗筒識(shí)別定位及位置估計(jì)的準(zhǔn)確性。
針對(duì)傳統(tǒng)歐式聚類分割算法在處理堆疊紗筒點(diǎn)云數(shù)據(jù)分割過程中出現(xiàn)的過分割和欠分割等問題,本研究在紗筒點(diǎn)云數(shù)據(jù)預(yù)處理的基礎(chǔ)上,剔除邊緣接觸點(diǎn),將其轉(zhuǎn)換為分散點(diǎn)云,再基于歐式聚類算法進(jìn)行聚類分析,補(bǔ)齊邊緣點(diǎn)云信息,保證堆疊紗筒點(diǎn)云的完整性。
3D 點(diǎn)云數(shù)據(jù)可以不受光照強(qiáng)度的限制,點(diǎn)云具有的深度信息可以更加真實(shí)準(zhǔn)確地表達(dá)紗筒的幾何形狀,且點(diǎn)云數(shù)據(jù)可提供紗筒目標(biāo)更為全面的6DOF 位置信息。本研究以Kinect V2 傳感器獲取的原始紗筒點(diǎn)云如圖1(a)所示。
圖1 紗筒點(diǎn)云數(shù)據(jù)
由圖1(a)可知,多個(gè)紗筒隨機(jī)散放在盒體中,紗筒處于堆疊狀態(tài),此外場(chǎng)景中還存在工作臺(tái)、盒體等無關(guān)點(diǎn)云數(shù)據(jù)。為了有效提取堆疊的紗筒信息,研究通過直通濾波、擬合平面、統(tǒng)計(jì)濾波及降采樣等點(diǎn)云進(jìn)行預(yù)處理算法,結(jié)果如圖1(b)所示,消除了盒體及工作臺(tái)的干擾,堆疊紗筒目標(biāo)特征明顯。
由圖1(b)可知,經(jīng)過預(yù)處理算法后的紗筒點(diǎn)云數(shù)據(jù)為一個(gè)整體,多個(gè)紗筒點(diǎn)云間存在堆疊的現(xiàn)象,點(diǎn)云無任何分布特征。為了將堆疊紗筒點(diǎn)云劃分為若干個(gè)獨(dú)立的點(diǎn)云子集,實(shí)現(xiàn)對(duì)單個(gè)紗筒點(diǎn)云的數(shù)據(jù)處理,本研究采用基于歐式距離的聚類算法對(duì)堆疊紗筒點(diǎn)云進(jìn)行分割。
歐式聚類的本質(zhì)是通過區(qū)分點(diǎn)的鄰里關(guān)系的遠(yuǎn)近,以近鄰點(diǎn)之間的距離為評(píng)判標(biāo)準(zhǔn),從而實(shí)現(xiàn)點(diǎn)云的聚類分割的一種算法,其分割流程如下。
第一步,對(duì)于預(yù)處理后的點(diǎn)云集P,先確定一個(gè)查詢點(diǎn)Pi,設(shè)定閾值r=0.2,通過KD-Tree 近鄰搜索找到點(diǎn)云數(shù)據(jù)中k 個(gè)Pi點(diǎn)的近鄰點(diǎn)Pi(j=1,2,L,k)。
第二步,計(jì)算近鄰點(diǎn)Pi到查詢點(diǎn)Pi間的歐式距離d。
第三步,將距離小于閾值的點(diǎn)劃到類M 中,直至類M 中的點(diǎn)數(shù)不再增加時(shí),則分割完成。
傳統(tǒng)歐氏聚類算法對(duì)單獨(dú)的紗筒點(diǎn)云具有較好的分割效果,而對(duì)堆疊在一起的紗筒目標(biāo),則會(huì)產(chǎn)生過分割和欠分割。
2.2.1 基于法線夾角的邊緣點(diǎn)去除方法
第一步,建立紗筒目標(biāo)點(diǎn)云集P 的KD-Tree。
第二步,構(gòu)建一個(gè)紗筒點(diǎn)云模板,設(shè)定其鄰域內(nèi)法向夾角均值的閾值?th,并確定其鄰域半徑r。
第三步,對(duì)點(diǎn)云集P 中的任意點(diǎn)Pi,計(jì)算其近鄰點(diǎn)的法線夾角的均值?Pi,若滿足?Pi>?th,則定義該點(diǎn)為邊緣點(diǎn),反之則為非邊緣點(diǎn)。
第四步,剔除邊緣點(diǎn)。
去除邊緣點(diǎn)后的紗筒點(diǎn)云集已經(jīng)不存在目標(biāo)間粘連的情況,將其視為分散狀態(tài)下的多個(gè)紗筒點(diǎn)云,采用基于歐式聚類的方法對(duì)其進(jìn)行點(diǎn)云分割處理。
2.2.2 邊緣點(diǎn)補(bǔ)齊
經(jīng)過去邊緣點(diǎn)的分割后,點(diǎn)云集P 被聚類為多個(gè)不同的子集,每個(gè)子集代表一個(gè)獨(dú)立的紗筒目標(biāo),但紗筒目標(biāo)都存在邊緣信息缺失的問題,因此要將分割前剔除的邊緣點(diǎn)再補(bǔ)齊各紗筒點(diǎn)云子集中。算法流程如下。
第一步,構(gòu)建每個(gè)子集Ppart-j的KD-Tree,并設(shè)定其最近鄰點(diǎn)距離閾值?th。
第二步,計(jì)算邊緣點(diǎn)到子集Ppart-j中最鄰近點(diǎn)的歐氏距離di,若di<?th,則將該點(diǎn)歸類到子集Ppart-j中。
第三步,重復(fù)第二步,直至遍歷所有邊緣點(diǎn),并將其補(bǔ)齊到對(duì)應(yīng)的子集Ppart-j中。
為驗(yàn)證本算法的有效性和可靠性,以塔形和圓柱形兩種不同規(guī)格的紗筒為實(shí)驗(yàn)對(duì)象,采用微軟的Kinect V2 視覺傳感器獲取實(shí)驗(yàn)紗筒點(diǎn)云數(shù)據(jù),Intel i5-4210H CPU8G 內(nèi)存配置的PC 作為實(shí)驗(yàn)平臺(tái),工具軟件為Matlab R2020a。采用傳統(tǒng)歐式聚類分割算法和改進(jìn)算法對(duì)兩種紗筒進(jìn)行處理。
將9 個(gè)塔型紗筒隨機(jī)堆疊擺放,原始點(diǎn)云進(jìn)行預(yù)處理的點(diǎn)云數(shù)據(jù)為6020 個(gè),本算法對(duì)其進(jìn)行分割,結(jié)果如圖2 所示。本方法的分割結(jié)果能夠保持紗筒較好的輪廓,對(duì)單獨(dú)紗筒和堆疊紗筒均具有較好的分割結(jié)果,統(tǒng)計(jì)為9 個(gè)目標(biāo)。
圖2 塔形紗筒點(diǎn)云分割
圓柱形紗筒形狀較塔形紗筒的邊緣存在凸起,將9 個(gè)圓柱形紗筒隨機(jī)擺放,原始點(diǎn)云進(jìn)行預(yù)處理后,由于圓柱形紗筒的表面較為復(fù)雜,故預(yù)處理后的點(diǎn)云數(shù)據(jù)為6787 個(gè),本算法對(duì)其進(jìn)行分割,結(jié)果如圖3 所示。本方法在堆疊和端部位置的分割具有較好的效果,分割后的統(tǒng)計(jì)結(jié)果為9 個(gè)。
圖3 圓柱形紗筒點(diǎn)云分割
由圖2~3 可知,在不同形狀的紗筒單獨(dú)存在時(shí),本方法與傳統(tǒng)算法均具有較好的分割效果。在存在堆疊等復(fù)雜情況的分割中,傳統(tǒng)算法存在一定誤分割現(xiàn)象,本算法通過算法的改進(jìn),剔除了偽邊緣,修補(bǔ)了邊緣點(diǎn)信息,提高了分割的精度。分割后的點(diǎn)云能夠較好地反映真實(shí)紗筒目標(biāo),且目標(biāo)間的邊界更為清晰。
在歐式聚類分割的基礎(chǔ)上,提出了一種改進(jìn)歐式聚類對(duì)堆疊紗筒點(diǎn)云的分割方法。利用紗筒點(diǎn)云間法向量夾角剔除接觸邊緣點(diǎn),將堆疊紗筒點(diǎn)云處理為分散點(diǎn)云,再構(gòu)建歐式聚類算法對(duì)分散點(diǎn)云進(jìn)行分割,補(bǔ)齊邊緣點(diǎn)信息,有效解決了過分割、欠分割等問題。通過對(duì)兩組不同形狀的紗筒進(jìn)行分割實(shí)驗(yàn),結(jié)果表明本算法對(duì)堆疊目標(biāo)的分割效果較好,分割結(jié)果真實(shí)反映了紗筒的個(gè)數(shù)及邊緣信息,且具有較好的魯棒性。