許圳淇,陶爭屹,張雨辰,夏鯤
上海理工大學機械工程學院,上海,200091
物體的非接觸識別與測量是機器視覺的一種應用。目前大多數(shù)的識別方法都是基于對目標物體的深度學習或多模板匹配,深度學習可以良好解決識別準確率的問題,但需要大量的圖片數(shù)據(jù)[1-2];模板匹配需要的圖片數(shù)據(jù)較少,但只能測量形狀與模板相同的物體,局限性較大。在形狀識別方面,邊緣檢測與霍夫變換相結合的方法較為常見[3-4],但這種方法對周圍環(huán)境的要求較高,容易受到環(huán)境噪聲的影響。在尺寸測量方面,目前主要的方法有兩種,一是通過多目視覺的立體視差直接計算物體的尺寸與距離[5],該方法測量準確但成本較高;二是通過求解已知尺寸物體與待測物體尺寸像素的相對值,進而得出待測物體的實際尺寸[6]。
本文提出了一種能夠完成物體的捕捉和非接觸識別與測量的裝置?;诳删幊虜z像頭模塊OpenMV,該裝置能完成多邊形物體或圓形物體形狀的快速判斷并測出其尺寸與距離,操作簡易、成本低,可應用于簡單零件分揀、尺寸初步測量等工業(yè)場景。本文所提出裝置應用了霍夫變換、自適應濾波、圖像分割等機器視覺算法,同時采用了位置式PD控制算法實現(xiàn)對待測物體的追蹤,并能夠?qū)y量誤差控制在1.5%以下[7-9]。
本裝置由電源模塊、控制模塊、圖像處理模塊、云臺系統(tǒng)、裝置固定結構、測距模塊和激光發(fā)生器組成。其中,控制模塊通過全雙工串口通信與圖像處理模塊進行數(shù)據(jù)交互,通過單工串口通信接收來自測距模塊的信號,通過IO口直接控制激光發(fā)生器的打開與關閉。
電源模塊負責對整個裝置的各模塊進行供電;控制模塊接收來自各模塊的數(shù)據(jù),并對數(shù)據(jù)進行處理,同時對各模塊發(fā)出功能指令,實現(xiàn)對各模塊的控制;圖像處理模塊通過采集圖像數(shù)據(jù),對采集到的圖像進行處理,并將處理結果以字符串形式發(fā)送給控制模塊;云臺系統(tǒng)包含二維云臺和舵機,在控制模塊的控制下能夠?qū)崿F(xiàn)兩個轉(zhuǎn)動自由度的運動;裝置固定結構連接在云臺系統(tǒng)上,并能夠固定測距模塊、圖像處理模塊和激光發(fā)生器,保證他們的同軸度;測距模塊主要負責對待測物體距離的獲取,并將取得的距離數(shù)據(jù)以HEX文件形式發(fā)送到控制模塊進行處理。
本裝置采用內(nèi)核為ARM公司32位Cortex-M3的STM32F103VET6為主控,該芯片有較多的通信接口和較高的工作頻率,能夠滿足數(shù)據(jù)處理與多模塊通信的需求;采用搭載OV7725攝像頭的可編程攝像頭模塊OpenMV作為圖像處理模塊,操作簡易且成本低,其內(nèi)置的庫函數(shù)能幫助開發(fā)者提高對圖像信息的提取和數(shù)據(jù)的采集效率;采用單點測距激光雷達作為測距模塊,相比于傳統(tǒng)的超聲波測距,測量1m以外的目標時不僅能排除空氣質(zhì)量的干擾,而且能夠?qū)⒄`差控制在毫米級,同時能夠有效提高待測物體尺寸計算的準確度。系統(tǒng)總體結構如圖1所示。
本裝置能夠完成物體的位置捕獲和尺寸、距離的測量,工作流程如圖2所示。本裝置裝有激光發(fā)生器,識別到待測物體后,本裝置會通過舵機轉(zhuǎn)動控制激光發(fā)生器指示待測物體的中心。
系統(tǒng)工作時,首先通過按鍵選擇系統(tǒng)功能,再根據(jù)不同的功能進行目標搜索與圖像識別,然后各模塊對識別到的圖像參數(shù)進行讀取,通過串口通信發(fā)送到主控芯片。主控芯片實時接收各模塊數(shù)據(jù),對數(shù)據(jù)進行處理并控制舵機轉(zhuǎn)動,最終顯示結果。為更好判別是否完成測量,以蜂鳴器響起作為測量完成提示。
裝置先通過RGB色彩空間通道[11]對物體進行定位,找到待測物體所在的位置,接著根據(jù)位置式PD算法,通過舵機轉(zhuǎn)動,將待測物體移動至攝像頭視野中央。裝置對物體進行二值化圖像分割,并采用霍夫變換對待測物體的邊進行檢測并去重,即可得到物體的形狀。
由于識別現(xiàn)場工況環(huán)境復雜,背景因素難以預知,故選用圖像分割的方式來減少背景環(huán)境對圖像產(chǎn)生的影響,從而提高圖像識別與測量的準確率。
在圖像識別的過程中,采用迭代閾值法對圖像進行二值化[12-13]。具體方法如下:
(1)設置OpenMV攝像頭圖像的分辨率為VGA,即640×320,并將圖像灰度化;
(6)調(diào)用find_blobs方法對二值化圖像進行顏色識別,找到返回值中|w-h|處于區(qū)間[0,10]的最大色塊即可認為找到了待測目標,并將色塊中心點的像素坐標通過串口發(fā)送給主控芯片。圖5所示為二值化圖像分割測試,分割LAB閾值分別為(61,68,2,35,8,45),(43,92,-7,3,-18,29),(60,72,-5,6,-25,14)。
為進一步降低圖像噪度,系統(tǒng)采用平均自適應閾值濾波的方法對圖像進行濾波[14]。平均自適應閾值濾波是基于均值濾波的一種自適應濾波法,不僅具有均值濾波速度快的特點,也具有更強的適應性和更優(yōu)的濾波性能。
均值濾波的方法是使用盒式濾波器的標準均值模糊濾波,在OpenMV中可以通過調(diào)用image類中的mean方法,并將其三個參數(shù)調(diào)節(jié)為threshold=True,offset=5,invert=True來實現(xiàn)平均自適應閾值濾波。通過傳遞threshold=True參數(shù)來啟動圖像的自適應閾值處理,以達到在濾波器的輸出上自適應地設置閾值的目的,即根據(jù)環(huán)境像素的亮度,自動將像素設置為1或者0。調(diào)節(jié)offset=5的目的是將最強對比度設置為1。設置invert=True以反轉(zhuǎn)二進制圖像的結果輸出。
當攝像頭捕獲并追蹤到待測目標后,主控芯片向OpenMV發(fā)送指令,進入物體識別階段,此時,待測目標處于攝像頭圖像正中央。物體識別算法主要分為如下幾個步驟:
(1)鎖定待測目標后,設置圖像色彩空間為RGB色彩空間,圖像子分辨率大小為224 x 224;
(2)調(diào)用find_line_segments函數(shù)檢測圖像中的所有線段,并通過調(diào)節(jié)參數(shù)合并相鄰線段;
(3)遍歷檢測到的線段,并去除較小的線段。目的是排除物體本身存在的裂紋和其他內(nèi)部結構;
(4)根據(jù)線段數(shù)量判斷物體形狀。如果直線數(shù)量小于3,則認為是物體形狀是圓;如果直線數(shù)量為n,且,則認為物體為n邊形。
其中,find_line_segments為OpenMV內(nèi)置方法,其原理是通過霍夫變換對圖像中的直線進行檢測,返回值是一個列表,列表中每個參數(shù)包含一個元組(x,y,w,h),其中x,y為線段中第一個點的坐標,w,h分別為第二個點相對第一個點的橫向和縱向距離。識別效果如圖4所示。
嵌入式軟件設計主要分為物體中心位置跟蹤和非接觸測量兩個部分。其中,非接觸測量部分包括了物體距離測量與物體實際尺寸計算兩部分。系統(tǒng)程序流程如下:
(1)主控芯片接收數(shù)據(jù)。主控芯片接收來自OpenMV的多邊形待測目標各頂點的像素坐標和邊長或圓形待測目標圓心的像素坐標和半徑,以及檢測到的邊的數(shù)量。與此同時,主控芯片接收來自測距模塊的距離數(shù)據(jù)。
(2)物體中心點坐標的計算。對于多邊形待測目標,通過其頂點坐標可以計算得出多邊形待測目標的幾何中心坐標;對于圓形待測目標,可認為接收的圓心坐標即為其中心點坐標。
(3)物體中心位置的跟蹤。通過位置式PID算法計算出舵機角度偏移量,從而控制攝像頭移動,將待測物體移動到視野中央,并使激光發(fā)生器對準待測物體的中心。
(4)物體實際尺寸的計算。結合測距模塊的距離數(shù)據(jù),將得到的像素數(shù)據(jù)通過計算轉(zhuǎn)換為物體實際尺寸數(shù)據(jù),并將其顯示在LCD屏幕中,并以蜂鳴器響起作為測量完成提示。
利用3D打印得到的部件將激光發(fā)生器固定在攝像頭較近位置,并保證其同軸度,以減小后續(xù)微調(diào)舵機轉(zhuǎn)動時產(chǎn)生的誤差?,F(xiàn)將問題轉(zhuǎn)化為如何控制舵機將被測圖形中點移到攝像區(qū)域中心。根據(jù)圖5分析攝像機需要沿坐標軸方向進行的位移,不難得出以下關系:
為了快速地將攝像機中心移動到被測物中心位置,該設計采用位置式PD算法[16]。PD控制被廣泛應用于在過程控制中,通過比較實際測定值與給定值可得出偏差,調(diào)節(jié)比例(Proportional)、微分(Differential)參數(shù)使得誤差減小,直至最佳控制狀態(tài)。由于需要定位并指示待測物體的中心位置,所以本設計采用的是位置式PD算法[17],如式所示。
目前市面上5m以內(nèi)的空間距離非接觸式測量方法主要分為三角測量法和飛行時間(TOF,Time of Flight)測量法[18-19]。其中,三角測量法有雙目視覺和結構光兩種測量方法。雙目視覺是通過兩個攝像頭的位置差和捕獲到圖像的差異來計算攝像頭與物體的距離,即利用了立體視差法進行距離計算,但其需要復雜的匹配算法才能實現(xiàn)測距,且測量范圍有限;結構光測距法則需要相機和結構光發(fā)生器配合使用,需要較高的功率和聚焦的光線,在許多工業(yè)場景中測量的準確度容易受到環(huán)境的影響較大[20-22]。
飛行時間測量法需要由兩個異步收發(fā)機完成,利用特定頻率的調(diào)制信號在兩個異步收發(fā)機之間的飛行時間來測量距離。該方法并非直接檢測光飛行的時間,而是通過傳回信號的相位偏移來確定光的飛行時間,從而確定距離。
飛行時間測量法具有受光照影響小、實時性強、結構緊湊、功耗低等優(yōu)點。所以相比較之下,采用飛行時間測量法進行測距能有效解決雙目視覺的測量范圍問題和結構光的測量成本問題,更適合于非接觸測量的場合,故采用飛行時間測量法進行測距。
非接觸式物體尺寸計算是本設計的重點關注問題,其關鍵在于對物體在現(xiàn)實中實際尺寸與攝像頭中像素尺寸的比例的求取,如果能把握準確這個比例常數(shù),物體實際尺寸就可以通過像素尺寸乘以這個常數(shù)獲得。該問題可以抽象出以下模型進行求解,如圖6所示。
其中, 為待測物體長度的像素值, 為待測物體長度的真實值, 為參考物體長度的像素值, 為參考物體長度的真實值。 為所成的像與攝像頭之間的距離, 為物體與攝像頭之間的實際距離。
由幾何關系可得:
將上式做比整理可得以下關系:
由于相機視角固定,由此可得式(3)應等于一個比例常數(shù),且這個比例常數(shù)大小僅與距離有關,且成正比關系。假設比例常數(shù)為 ,根據(jù)以上式子,可得求解 的表達式為
測試材料:秒表、卷尺、釣魚線、圓形及正多邊形KT板。
被測目標放置距離測量頭1000mm至4000mm之間的區(qū)域內(nèi),并距離地面高度應為1000mm至1500mm。圖7為測試裝置及其各模塊示意圖。
依照上文所述布置好測試環(huán)境,隨機從幾種待測KT板中選取一個用于檢測,記錄測得物體的尺寸、形狀、目標物體與測量頭距離、指示中心點與實際中心點距離、完成全部功能所需時間。
實驗方法:在距離測量頭1000mm至4000mm之間等距離取10個測量點,在每個測量點處,分別對不同種形狀的待測目標進行5次距離相同位置不同的識別與測量,以程序初始化和蜂鳴器響起分別作為計時的開始和結束,記錄所有測量結果,并記錄每個測量點處的結果平均值。最終得出判斷正確率、尺寸平均誤差、目標測量頭距離平均誤差、中心點指示距離平均誤差、完成所需平均時間5個指標,并記錄。
根據(jù)上述實驗方法進行實驗,并記錄實驗結果。實驗結果顯示,系統(tǒng)的識別正確率為95.67%,實驗測得該系統(tǒng)的誤差與該系統(tǒng)的測量用時如圖8所示。
由以上測試結果可知,在識別被測物形狀方面,該裝置能較好地完成任務,根據(jù)實驗結果,圖8測試結果顯示,中心點距離誤差處于區(qū)間[8,20]內(nèi),并且隨著距離不斷增加。經(jīng)過對硬件的分析,確定其為機械誤差,即舵機無法進行十分精密的微調(diào)。經(jīng)過計算,得出誤差平均值與測量用時平均值如表1所示。綜合分析數(shù)據(jù),該設計滿足實際需求,誤差在實際需求允許范圍內(nèi)。
表1 各測量參數(shù)平均值
從表2相關性分析種可以看出,距離與測量用時的相關系數(shù)僅為0.29,說明測量用時與測量距離沒有直接的關系。
表2 測量參數(shù)與距離的相關性分析
本文闡述的裝置能夠?qū)崿F(xiàn)物體位置識別捕捉與尺寸、距離測量的基本功能,相較于基于機器學習算法的物體識別成本更低,開發(fā)周期更短,且保留了不亞于采用機器學習、模板匹配等圖像處理算法的識別準確率。測試實驗表明,該裝置能夠較為準確地完成物體形狀的識別,并能夠?qū)y量誤差控制在1.5%以下。該裝置可以搭載于小車上進行物體的追蹤或者在流水線上協(xié)助分揀工作,可應用于工業(yè)自動化流水線、商場、家庭等環(huán)境,在生產(chǎn)生活中具有較為廣闊的發(fā)展前景。