徐志祥,孫文博,邢立東,高 東,趙 炎
(大連理工大學(xué)機(jī)械工程學(xué)院,遼寧大連 116024)
隨著我國經(jīng)濟(jì)的高速發(fā)展,冷鏈進(jìn)口量也大幅增長(zhǎng),目前冷鏈集裝箱到港后多由人工或者人工操作機(jī)器搬卸堆疊的貨箱,工作量大且效率不高,自動(dòng)化程度較低,為了提高冷鏈運(yùn)輸?shù)淖詣?dòng)化水平,實(shí)現(xiàn)卸貨機(jī)器人的全自動(dòng)化卸貨工作,需要通過機(jī)器視覺技術(shù)來獲取堆疊貨箱的位置坐標(biāo)。隨著智能化技術(shù)的發(fā)展,機(jī)器視覺已經(jīng)在識(shí)別檢測(cè)和定位引導(dǎo)上得到廣泛應(yīng)用,在實(shí)現(xiàn)工業(yè)智能化、自動(dòng)化過程中有著巨大的發(fā)展前景[1]。
20 世紀(jì)60 年代以來,圖像分割定位技術(shù)一直是國內(nèi)外學(xué)者研究的熱點(diǎn)。圖像分割算法主要有基于閾值、基于區(qū)域、基于邊緣、基于特征匹配和基于深度學(xué)習(xí)的分割方法[2]。周文靜等[3]基于顏色特征和Otsu最大閾值分割結(jié)合的方法實(shí)現(xiàn)了對(duì)葡萄果穗圖像的完整準(zhǔn)確分割,為葡萄果穗的識(shí)別和定位抓取提供了研究基礎(chǔ)。李穎等[4]基于深度學(xué)習(xí)方法提出了一種端到端的分割模型,采用Mask-CNN 分割算法對(duì)煤粉顆粒CT圖像進(jìn)行了準(zhǔn)確分割。王祥等[5]提出了一種基于區(qū)域分離與聚合的分水嶺變換分割算法,該方法可以有效抑制圖像的過分割和分割邊緣不明顯的現(xiàn)象。劉麗霞等[6]針對(duì)目前遙感圖像分割魯棒性差和邊緣易缺失的缺點(diǎn),提出了一種基于改進(jìn)Canny邊緣檢測(cè)的遙感影像分割算法,并取得了不錯(cuò)的分割效果。
本文以堆疊貨箱為研究對(duì)象,針對(duì)堆疊貨箱的灰度特征和邊緣信息,提出了一種基于改進(jìn)Canny 邊緣檢測(cè)的堆疊貨箱分割定位算法。實(shí)驗(yàn)結(jié)果表明,該算法對(duì)堆疊貨箱有著較好的分割的效果,定位精度也滿足要求,可以為卸貨機(jī)器人提供準(zhǔn)確的貨箱位置坐標(biāo),對(duì)實(shí)現(xiàn)自動(dòng)化卸貨有一定的實(shí)用價(jià)值。
相機(jī)采集到的原始灰度圖像如圖1 所示。堆疊貨箱由規(guī)格相同的貨箱一層一層較為整齊地堆疊在集裝箱內(nèi),圖像灰度直方圖如圖2 所示,貨箱灰度值較為相近且與集裝箱有明顯的灰度差,可以通過閾值分割將堆疊貨箱提取出來,且貨箱邊緣較為清晰,可以通過邊緣輪廓將堆疊貨箱分割成一個(gè)個(gè)獨(dú)立的矩形區(qū)域,然后獲得每一個(gè)貨箱的位置坐標(biāo)。
圖1 原始圖像
圖2 圖像灰度直方圖
針對(duì)冷鏈集裝箱內(nèi)堆疊貨箱的特點(diǎn),采用Haclon視覺函數(shù)庫對(duì)堆疊貨箱進(jìn)行圖像處理,并設(shè)計(jì)了一套堆疊貨箱識(shí)別分割和定位的方法。首先通過閾值分割和形態(tài)學(xué)操作等圖像預(yù)處理過程將堆疊貨箱區(qū)域提取出來,消除背景干擾,然后基于改進(jìn)Canny邊緣檢測(cè)算法對(duì)堆疊貨箱的邊緣輪廓信息進(jìn)行提取,接著基于最小二乘法對(duì)貨箱邊緣輪廓進(jìn)行直線擬合,然后基于邊緣區(qū)域?qū)⒚恳粋€(gè)貨箱獨(dú)立分割出來,對(duì)分割出來的獨(dú)立貨箱區(qū)域進(jìn)行最小外接矩形包絡(luò)處理即可得到每一個(gè)貨箱的位置信息。圖像處理流程如圖3 所示。
圖3 圖像處理流程
圖像預(yù)處理的主要目的是消除圖像中無關(guān)的信息,去除集裝箱背景區(qū)域,只保留堆疊貨箱區(qū)域,從而提高堆疊貨箱圖像分割和定位的準(zhǔn)確性[7]。
由于貨箱與集裝箱環(huán)境存在灰度差,可以通過閾值分割將堆疊貨箱與集裝箱背景快速分割。設(shè)原始圖像灰度值為f(x,y),分割后的輸出圖像灰度值為g(x,y)。找到堆疊貨箱的灰度范圍T,灰度值處于灰度范圍T時(shí)賦值1,背灰度值不處于灰度范圍T時(shí)賦值0,灰度閾值分割過程如式(1)所示。
閾值分割后的效果如圖4 所示。
圖4 閾值分割效果
從閾值分割后的效果可以看出堆疊貨箱區(qū)域并沒有與集裝箱背景完全分割,仍然存在部分背景干擾,需要進(jìn)行形態(tài)學(xué)操作消除干擾,只保留貨箱區(qū)域。圖像中常見的形態(tài)學(xué)操作有腐蝕、膨脹、開運(yùn)算、閉運(yùn)算、梯度運(yùn)算等[8]。形態(tài)學(xué)操作中膨脹和腐蝕是基本操作,其他形態(tài)學(xué)操作都是在膨脹和腐蝕的基礎(chǔ)上延伸而來。開運(yùn)算是將圖像先腐蝕再膨脹,實(shí)現(xiàn)去除細(xì)小散點(diǎn)、斷開連接橋的效果。閉運(yùn)算是將圖像先膨脹再腐蝕,實(shí)現(xiàn)消除兩者微小間隙的效果。
通過腐蝕、膨脹、開運(yùn)算、閉運(yùn)算等一系列形態(tài)學(xué)操作之后得到如圖5 所示效果,可以看出經(jīng)過形態(tài)學(xué)操作之后背景干擾已經(jīng)被完全消除,貨箱之間的縫隙以及空洞也被填滿,堆疊貨箱成為一個(gè)整體。
圖5 形態(tài)學(xué)操作效果
雖然貨箱區(qū)域與集裝箱背景已經(jīng)完全分割開,但是部分貨箱區(qū)域也被當(dāng)作背景去除了,為了完全保留貨箱區(qū)域,提取全部貨箱的位置信息,通過最小外接矩形處理得到完整的貨箱區(qū)域。最小外接矩形處理效果如圖6(a)所示。得到的貨箱區(qū)域與原始圖像的交集即是堆疊貨箱圖像,如圖6(b)所示。通過圖像預(yù)處理后,完成了對(duì)集裝箱背景干擾的消除,得到了完整的貨箱區(qū)域圖像。
圖6 堆疊貨箱圖像提取
Canny是一種邊緣檢測(cè)算子,其具有易于運(yùn)行,抗干擾能力強(qiáng)和邊緣定位準(zhǔn)確等優(yōu)點(diǎn)[9]。Canny 邊緣檢測(cè)主要有4 個(gè)步驟,分別是高斯濾波、計(jì)算梯度、非極大值抑制和雙閾值連接[10],具體如下。
(1)用高斯濾波平滑圖像。
根據(jù)待濾波的像素點(diǎn)及其鄰域點(diǎn)的灰度值按照一定的參數(shù)規(guī)則進(jìn)行加權(quán)平均計(jì)算。本文使用二維高斯函數(shù)作為權(quán)值的平滑濾波器。二維高斯函數(shù)如式(2)所示。
(2)計(jì)算圖像梯度。
使用2 ×2 大小的卷積核,從水平方向和垂直方向計(jì)算高斯平滑濾波后的圖像的梯度幅值和方向。
(3)非極大值抑制。
將當(dāng)前像素梯度幅值與沿梯度方向上的相鄰像素的梯度幅值進(jìn)行對(duì)比,若其是最大值,則認(rèn)為該像素為邊緣點(diǎn),進(jìn)行保留操作;若不是極大值,則認(rèn)為該像素不是邊緣點(diǎn),進(jìn)行舍棄操作[11]。
(4)雙閾值算法檢測(cè)連接邊緣。
通過設(shè)定高低閾值來確定強(qiáng)弱邊緣,若該像素點(diǎn)灰度值大于高閾值,則將該點(diǎn)灰度設(shè)為255,認(rèn)為是強(qiáng)邊緣;若大于低閾值小于高閾值,則認(rèn)為是弱邊緣;若小于低閾值,則認(rèn)為不是邊緣,舍去。
傳統(tǒng)Canny邊緣檢測(cè)效果如圖7 所示。雖然經(jīng)典Canny算法計(jì)算簡(jiǎn)單,適用性較強(qiáng),但存在圖像的平滑去噪效果不好和貨箱的邊緣線條不連續(xù)等問題,容易出現(xiàn)漏識(shí)別、錯(cuò)誤識(shí)別和無法識(shí)別等情況。因此,需要針對(duì)堆疊貨箱的特點(diǎn)對(duì)Canny 算法進(jìn)行改進(jìn),確保識(shí)別的準(zhǔn)確性。
圖7 傳統(tǒng)Canny邊緣檢測(cè)效果
本文在原有Canny邊緣檢測(cè)算法的基礎(chǔ)上進(jìn)行改進(jìn),通過將高斯濾波替換為中值濾波、使用改進(jìn)的Sobel算子計(jì)算梯度,以及基于最小二乘法進(jìn)行直線擬合等方法,解決去噪效果不好導(dǎo)致的將噪聲像素識(shí)別為虛假邊緣和識(shí)別的邊緣不連續(xù)和部分丟失的問題。具體改進(jìn)如下。
(1)用中值濾波代替高斯濾波平滑圖像。
相比于高斯濾波,中值濾波在抑制噪點(diǎn)的同時(shí)能有效保護(hù)圖像的邊界信息,避免對(duì)圖片產(chǎn)生劇烈模糊[12]。二維中值濾波輸出為
式中:f(x,y)、g(x,y)分別為原始圖像和處理后圖像;k、l為二維模板。
(2)用Sobel算子計(jì)算圖像梯度。
Sobel算子的4 個(gè)梯度方向模板如式(4)所示,分別用0°、45°、90°和135°這4 個(gè)方向模板和圖像進(jìn)行卷積操作并計(jì)算一階偏導(dǎo)數(shù)[13],得到4 個(gè)方向梯度值。梯度變化越大,說明相鄰像素間差值越大,可能是邊緣所在位置。
(3)基于最小二乘法進(jìn)行直線擬合。
由于堆疊貨箱的輪廓為水平和豎直方向,基于這一特征對(duì)獲得的邊緣斜率進(jìn)行篩選,去除虛假邊緣。邊緣線條兩點(diǎn)式如式(5)所示。
式中:(x1,y1)、(x2,y2)為邊緣線條的起、終點(diǎn)坐標(biāo);k為邊緣線條的斜率。
由于貨箱的邊緣為直線,可以對(duì)篩選后的邊緣線條進(jìn)行分類,對(duì)處在同一條直線附近的多個(gè)線條的起點(diǎn)和終點(diǎn)基于最小二乘法擬合出一條新的邊緣,以此增加邊緣線條的連續(xù)性。其線性回歸方程為y ^=a +bx,其中:
式中:(xi,yi)為位于同一直線上邊緣線條的起點(diǎn)或端點(diǎn)坐標(biāo)。
改進(jìn)后Canny算法檢測(cè)效果如圖8 所示,可以看出改進(jìn)后Canny邊緣檢測(cè)相比傳統(tǒng)Canny邊緣檢測(cè)算法去噪效果好,虛假邊緣較少,改進(jìn)前邊緣線條個(gè)數(shù)為232,改進(jìn)后線條個(gè)數(shù)為31,邊緣線條連續(xù)效果得到了大幅提升。
圖8 改進(jìn)后Canny邊緣檢測(cè)效果
首先對(duì)改進(jìn)后的Canny邊緣檢測(cè)提取的邊緣線條進(jìn)行區(qū)域化處理,接著進(jìn)行腐蝕、膨脹等一系列形態(tài)學(xué)操作將邊緣變成一個(gè)完整的連通域,邊緣連通域如圖9 所示。由圖9 可以看出邊緣連通域已經(jīng)將每一個(gè)貨箱區(qū)域分割開來,然后再進(jìn)行一些形態(tài)學(xué)操作即可得到獨(dú)立分割出的貨箱,堆疊貨箱分割效果如圖10 所示。
圖9 邊緣區(qū)域連通
圖10 堆疊貨箱分割效果
提取每一個(gè)獨(dú)立分割出來貨箱區(qū)域的最小外接矩形,即可得到圖中29 個(gè)堆疊貨箱的中心點(diǎn)位置坐標(biāo)與傾斜角度。貨箱定位效果如圖11 所示。
圖11 貨箱定位效果
貨箱抓取誤差主要由圖像定位誤差、坐標(biāo)轉(zhuǎn)化誤差和機(jī)器人各軸定位誤差組成。其中圖像分割定位像素誤差曲線如圖12 所示??梢钥闯鲐浵渲行狞c(diǎn)最大像素位置誤差為0.6,像素當(dāng)量轉(zhuǎn)換關(guān)系式為[14]
圖12 像素誤差曲線
式中:lδ為理論誤差;k為像素當(dāng)量;p 為像素誤差。已知當(dāng)前像素當(dāng)量為0.811 4 mm/px,只考慮圖像分割定位誤差時(shí),代入即可求出最大理論定位誤差為0.65 mm,滿足定位精度±15 mm的要求。
為了驗(yàn)證堆疊貨箱分割定位的精度,采用精度為1 mm的卸貨機(jī)器人對(duì)堆疊貨箱進(jìn)行抓取作業(yè),貨箱抓取過程如圖13 所示。抓取每個(gè)貨箱時(shí)使用精度為0.05 mm的游標(biāo)卡尺進(jìn)行誤差測(cè)量,抓取誤差曲線如圖14 所示。由兩次抓取誤差曲線可以得到最大定位誤差為2.85 mm,驗(yàn)證了堆疊貨箱分割定位的可行性與準(zhǔn)確性,滿足卸貨機(jī)器人抓取精度±15 mm的要求。
圖13 貨箱抓取過程
圖14 抓取誤差曲線
不同場(chǎng)景下堆疊貨箱分割定位效果如圖15 所示,可以看出其分割效果較好,適用性較強(qiáng),目前該套基于改進(jìn)Canny邊緣檢測(cè)的堆疊貨箱分割定位算法已經(jīng)成功應(yīng)用到卸貨機(jī)器人中,并于2022 年11 月在大連遼漁集團(tuán)有限公司投入使用,實(shí)現(xiàn)了冷鏈集裝箱內(nèi)堆疊貨箱的全自動(dòng)化卸貨工作,取得了不錯(cuò)的效果,為冷鏈運(yùn)輸自動(dòng)化提供了一種可行的解決方案。
圖15 不同場(chǎng)景下的分割定位效果
本文基于改進(jìn)Canny邊緣檢測(cè)提出了一種堆疊貨箱圖像分割定位的方法,通過圖像預(yù)處理去除集裝箱背景干擾,只保留完整的堆疊貨箱圖像,使用中值濾波、改進(jìn)Sobel算子計(jì)算梯度,以及基于最小二乘法的直線擬合等方法對(duì)Canny 算法進(jìn)行改進(jìn),使得提取的邊緣連續(xù)性較好且虛假邊緣較少,從而獲得較好的分割效果,通過對(duì)分割好的獨(dú)立貨箱進(jìn)行最小外接矩形處理,以此得到每一個(gè)堆疊貨箱的位置坐標(biāo)。精度測(cè)試表明:本文提出的方法對(duì)堆疊貨箱有著很好的分割定位效果,圖像處理時(shí)間約為2 ms,抓取精度高于5 mm,滿足卸貨機(jī)器人抓取精度要求。據(jù)此研發(fā)的集裝箱機(jī)器人卸貨系統(tǒng)已經(jīng)用于冷鏈運(yùn)輸自動(dòng)化作業(yè)線。