韓曉麗, 李勇超, 袁 媛, 王俊偉
(1.太原科技大學(xué), 山西 太原 030024; 2.太原重工股份有限公司, 山西 太原 030024)
輸送帶作為帶式輸送機(jī)的主要承載和牽引部件,其安全可靠的運(yùn)行能夠保障企業(yè)的正常生產(chǎn)需求,極大地提高企業(yè)的經(jīng)濟(jì)效益。目前學(xué)者們?cè)谳斔蛶Эv向撕裂檢測(cè)方面提出很多方法,其中機(jī)器視覺(jué)技術(shù)因具有非接觸、實(shí)時(shí)、可控制等優(yōu)點(diǎn)[1]得到了廣泛應(yīng)用。郭啟皇等[2]設(shè)計(jì)了一套基于Otsu 算法的輸送帶撕裂檢測(cè)系統(tǒng),可以快速、準(zhǔn)確檢測(cè)到運(yùn)行狀態(tài)下輸送帶撕裂痕跡;李現(xiàn)國(guó)等[3]設(shè)計(jì)了一種基于線激光和ARM的輸送帶縱向撕裂監(jiān)控系統(tǒng),該系統(tǒng)能及時(shí)準(zhǔn)確檢測(cè)出輸送帶縱向撕裂故障,具有實(shí)時(shí)性好、圖像處理效率高、布線簡(jiǎn)便、可遠(yuǎn)程監(jiān)控等優(yōu)點(diǎn);徐善永等[4]提出基于序列最小最優(yōu)化(SMO)算法的紅外圖像檢測(cè)方法。SMO 算法不僅預(yù)測(cè)精度高,而且實(shí)時(shí)性好,對(duì)于皮帶撕裂故障診斷具有良好的實(shí)用價(jià)值。
當(dāng)輸送帶圖像有撕裂特征時(shí),通過(guò)圖像處理識(shí)別,實(shí)時(shí)發(fā)出撕裂報(bào)警信息[5]。本文針對(duì)帶式輸送機(jī)在使用中出現(xiàn)的輸送帶縱向撕裂問(wèn)題,提出了一種基于機(jī)器視覺(jué)的雙目視覺(jué)檢測(cè)方法。該方法首先對(duì)采集的圖像進(jìn)行預(yù)處理,再對(duì)其進(jìn)行輪廓檢測(cè)和撕裂報(bào)警研究系統(tǒng)流程如圖1 所示。
圖1 系統(tǒng)流程
要提取輸送帶的縱向撕裂特征,必須對(duì)采集的原始圖片進(jìn)行預(yù)處理,以消除噪聲、增強(qiáng)反差、突出撕裂信息。圖像預(yù)處理流程如圖2 所示。
圖2 圖像預(yù)處理流程
圖像增強(qiáng)用直方圖均衡化和自適應(yīng)直方圖均衡化進(jìn)行處理。直方圖均衡化是將原始圖像從灰度直方圖中的一個(gè)比較集中的部分轉(zhuǎn)移到整體上,先從灰度圖的灰度曲線入手,將其對(duì)應(yīng)的灰度值保存在直方圖中,然后對(duì)直方圖進(jìn)行平滑處理,使像素的灰度值分布更均勻,改善整體對(duì)比度,使圖像更清晰。有時(shí),由于原始圖像的直方圖變化太大或者太陡,在均衡化處理后會(huì)產(chǎn)生“退化效果”,所以這里就需要引入自適應(yīng)直方圖均衡函數(shù),其相關(guān)代碼如圖3 所示。
圖3 直方圖均衡化相關(guān)代碼
這種情況下,使用CreateCLAHE 功能把整個(gè)圖片分割成許多塊,對(duì)每個(gè)數(shù)據(jù)塊進(jìn)行直方圖均衡處理,采用反差極限。對(duì)于每一個(gè)區(qū)塊,當(dāng)直方圖中的bin 超出了反差的上限時(shí),將所有的像素點(diǎn)均勻地分布到其他bins 中,再進(jìn)行均衡化。不同均衡化結(jié)果如圖4 所示。
圖4 不同均衡化效果對(duì)比
輸送帶影像中的噪聲影響輸送帶縱向撕裂的分析和識(shí)別,必須對(duì)其進(jìn)行過(guò)濾。本文利用空間域?yàn)V波技術(shù),對(duì)中值濾波、均值濾波等方法進(jìn)行了分析和研究。對(duì)不同方法在輸送帶帶上的濾波效果進(jìn)行了對(duì)比,以達(dá)到更好的消除噪聲、保存輸送帶縱向撕裂信息的目的。
均值濾波是線性濾波算法,它是將目標(biāo)像素的一個(gè)模板包含在其周邊附近的像素,然后用整個(gè)模板中所有像素的平均值取代原始像素值。Python 調(diào)用OpenCV 實(shí)現(xiàn)均值濾波的核心函數(shù)、相關(guān)代碼及效果如圖5 所示。
圖5 均值濾波相關(guān)代碼及效果
Blur(src,ksize,dst=None,anchor=None,border-Type=None)
中值濾波是將中間像素的矩形鄰近區(qū)域作為中間點(diǎn),采用鄰域平均法對(duì)噪聲進(jìn)行降噪,并對(duì)其進(jìn)行了模糊處理。OpenCV 主要調(diào)用函數(shù)medianBlur(src,ksize,dst=None),相關(guān)代碼及效果如圖6 所示。
圖6 中值濾波過(guò)程及效果
很明顯,中值濾波得到的輪廓效果更為清晰。
將“感興趣區(qū)”分成若干個(gè)子區(qū),在進(jìn)行分割時(shí)這些分塊會(huì)形成一個(gè)邊界或紋理,從而形成一個(gè)物體的特征,然后再對(duì)其進(jìn)行處理,從而實(shí)現(xiàn)對(duì)物體的識(shí)別。
本文先二值化處理,進(jìn)一步簡(jiǎn)化灰度圖像,使圖像中的信息更加純粹,邊緣亮度更加明顯,之后再進(jìn)行邊緣檢測(cè)。
1.3.1 閾值分割
二值化是將一組像素按灰度等級(jí)進(jìn)行分割,這種分割可以根據(jù)灰度級(jí)別選擇一個(gè)或多個(gè)閾值。OpenCV 提供了多種不同的閾值方法,這些方法包括以下五種,產(chǎn)生的效果如圖7 所示。
圖7 不同閾值方法的效果圖
·cv2.THRESH_BINARY
·cv2.THRESH_BINARY_INV
·cv2.THRESH_TRUNC
·cv2.THRESH_TOZERO
·cv2.THRESH_TOZERO_INV
1.3.2 邊緣檢測(cè)
圖像邊緣提取極大地降低了數(shù)據(jù)量,同時(shí)將可能被視為無(wú)關(guān)的信息剔除,保持了圖像的重要結(jié)構(gòu)特征。在圖像中,邊界可以看作是一個(gè)具有一階導(dǎo)數(shù)的像素點(diǎn),通過(guò)求一階導(dǎo)數(shù)來(lái)確定其邊界。這里,分別用Prewitt 算子、Laplacian 算子、Roberts 算子進(jìn)行處理,效果如圖8 所示。通過(guò)比較,選擇Roberts 算子進(jìn)行后續(xù)的處理。
圖8 算子處理效果
梯度運(yùn)算即圖像形態(tài)學(xué)的梯度操作,其實(shí)就是由影像的膨脹減去影像的侵蝕,最后我們得到的輪廓更為清晰。梯度運(yùn)算morphologyEx()函數(shù)中的參數(shù)是MORPH_GRADIENT,相關(guān)代碼及效果如圖9 所示。
圖9 梯度運(yùn)算相關(guān)代碼及處理結(jié)果
Python 提供了進(jìn)行輪廓檢測(cè)的函數(shù),即.findContours 函數(shù),返回的參數(shù)即為該圖像的輪廓數(shù)量,相關(guān)代碼如圖10 所示。
圖10 計(jì)算輪廓數(shù)量相關(guān)代碼
輪廓面積是指每個(gè)輪廓中所有的像素點(diǎn)圍成的區(qū)域的面積,單位為像素,相關(guān)代碼如圖11 所示。
圖11 計(jì)算輪廓面積相關(guān)代碼
由于三個(gè)連續(xù)的像素點(diǎn)間的連線有可能在同一條線上,所以可以僅輸入一個(gè)等值的頂點(diǎn)像素點(diǎn),相關(guān)代碼如圖12 所示。該函數(shù)可以對(duì)輪廓的長(zhǎng)度進(jìn)行統(tǒng)計(jì),函數(shù)返回值為統(tǒng)計(jì)長(zhǎng)度,以像素為單位,以double 的形式表示。
圖12 計(jì)算輪廓周長(zhǎng)相關(guān)代碼
為了實(shí)現(xiàn)撕裂警告彈窗,我們需要引入tkinter庫(kù),Tkinter(亦稱Tk 界面)是Python 的標(biāo)準(zhǔn)接口。Tk是一個(gè)輕量級(jí)的跨平臺(tái)圖形用戶界面(GUI)開(kāi)發(fā)工具,相關(guān)代碼如圖13 所示。
圖13 引入tkinter 庫(kù)的相關(guān)代碼
引入tkinter 庫(kù)后,即可實(shí)現(xiàn)如下的彈窗效果,相關(guān)代碼如圖14 所示。
圖14 實(shí)現(xiàn)彈窗效果及相關(guān)代碼
本文根據(jù)輸送帶縱向撕裂圖像的特點(diǎn),提出了一種基于機(jī)器視覺(jué)的雙目識(shí)別檢測(cè)方法。采用了圖像預(yù)處理中的灰度轉(zhuǎn)換來(lái)實(shí)現(xiàn)圖像的反差,提高了圖像的清晰度和視覺(jué)效果,使得輸送帶撕裂特征更為明顯;利用Roberts 運(yùn)算符進(jìn)行圖像分割;最后,利用Python平臺(tái)的findContours 函數(shù)來(lái)完成輪廓的檢測(cè)。經(jīng)過(guò)一系列處理使得縱向撕裂圖像的清晰度、辨識(shí)度得到了提高,特征更為突出。通過(guò)在Python 中引入tkinter庫(kù),最終實(shí)現(xiàn)了輸送帶的撕裂報(bào)警。該方法能保證對(duì)輸送帶縱向撕裂進(jìn)行實(shí)時(shí)、可靠地檢測(cè),為輸送機(jī)的安全、高效運(yùn)行提供更好的支持和保障。