張鳳
(山東華宇工學院,山東 德州 253034)
可視化是智能機器系統感知外部環境最主要的方法,也是當今智能識別系統發展的趨勢所在。外部視覺傳感器采集獲取外部環境的數據,通過智能軟件分析系統實現對物體的識別和定位。隨著現代信息技術的迅速發展,人們對智能系統的性能提出了更高的要求。目標識別是智能系統視覺部分最基本的功能,色彩與邊緣識別是進一步研究的基礎。
通過對單片機芯片快速處理能力和智能圖像識別的研究,以圖像識別裝置來模擬人的視覺識別。計算機視覺可以將物體轉換成圖像信號,然后把結果傳送到裝置的內部芯片,并根據圖像中像素的排列規則和像素數量將其轉換成數字信息、顏色信息等信號。成像系統執行這些電信號中的各種操作以獲得目標屬性,然后控制現場設備以對檢測結果給出信息結論。智能圖像采集技術與工業機器運動控制技術緊密相連,是智能工業控制技術中的關鍵技術。
OpenMV可實現計算機視覺和圖像處理的通用功能,如3D重建、目標分割、目標識別、特征檢測、運動分析、特征跟蹤等,與其他視覺模塊相比,OpenMV具有開放源代碼和低成本的優點。OpenMV主要由STM32H7主控芯片和OV7725圖像識別攝像頭組成。此外,OpenMV還具備Python的編寫程序界面,有適合的Python語言來滿足智能機器識別功能的需要。
目標物體的水平距離通過激光測距模塊讀取,轉化為距離數字量傳回Arduino單片機,幾何形狀以及顏色通過OpenMV的攝像頭讀取,并轉化為位置數字量傳回內置的STM32H7芯片,Arduino單片機將激光測距模塊讀取的距離數據經比例計算后得到與物體的距離,最后Arduino單片機將目標物體的形狀、邊長和距離數據傳送給手機APP顯示。進入自動尋找目標時,OpenMV根據目標的坐標數據控制舵機轉動角度。測量結果穩定后啟動聲音提示,表示當前測量任務完成,系統總體設計框圖如圖1所示。

圖1 系統總體設計框圖
系統的硬件電路由OpenMV攝像頭模塊、語音播報模塊、Arduino Nano模塊、舵機轉向器模塊、藍牙模塊、激光測距模塊組成。
OpenMV攝像頭模塊能夠簡單地完成智能圖像識別,它具有低功耗、低成本的特性,通過使用高級語言Python(主要是microPython)就可以實現對硬件底層的訪問和控制。Python中的數據庫函數可以簡單地處理智能裝置識別算法中復雜的輸入輸出問題,可以完全根據需求來改變OpenMV的識別模式,還可以高效率地使用輸出端口觸發圖像識別,然后進行圖像算法程序的運行,并對IO引腳的功能進行控制。
語音播報模塊采用的是XY-V17B模塊,它是支持通用異步收發機通信協議和支持單個總線通信協議的語音模塊,其使用串行通信來實現語音播報功能同時還支持內存擴展和播報文字。XY-V17B使用的是全雙工串行端口通信,此通信方式采用兩個不同的數據線,這樣通信的兩側能夠同時收發數據。兩側的工作互不干擾所以沒有時間延遲,可以使發送方和接收方發送和接收的內容同步。XY-V17B語音模塊中含有多種通信協議用來傳輸信號,具有自帶的指令模式,使用起來簡單便捷,在使用語音的領域中有著廣泛的應用。
系統核心控制器采用Arduino Nano單片機,Arduino Nano是基于Microchip Atmega 328P8芯片的開發板,它沒有DC電源插座而且采用的是mini USB接口技術,具有防誤插的特性,體積小巧。Arduino Nano中有十多個用于輸入和輸出的引腳,可以通過調用pin Mode函數、digital Write函數和digital Ed函數來對這些引腳進行控制。這個開發板的運行可承受的電壓為5 V,其中的引腳接口均可以承受或者提供高達40毫安的電流,每個引腳接口均具有1個20~50 kΩ的內部上拉電阻器,每個電阻器默認情況下是斷開的。Arduino Nano芯片內部一共有八個模擬輸入串口,每一個模擬輸入串口都可以提供10位字節的輸入輸出能力。一般情況下它們的電壓為0~5 V,在實際應用中可以通過調用Analog Reference()函數來調整電壓上限值,從而通過增強電壓的方式實現對系統輸入的增壓。Arduino Nano中具有和UNO一樣的對外傳輸信號,同時還具有外部的擴展插腳接口。
激光測距模塊采用的是TTL/485,測量范圍為0.05~80 m,激光類型為620~690 nm。激光測距模塊自身發射紅外光線,由被測物體反射后回到傳感器用模塊內置的定時器進行計時,然后根據內置的算法計算出反射物的距離,最后將數據通過串口傳回Arduino主控芯片。其優點在于對面積較小的物體同樣能夠精準快速地測量出距離,受周圍物體干擾較小。在裝置前端對準被測物體后,主控芯片讀取模塊傳來的距離信息后為尺寸測量做準備。
12 V直流穩壓電源通過5 V穩壓模塊分別向單片機和OpenMV及其他模塊供電。對各模塊進行測試分析并組合,確定系統能正常運行。整體電路圖如圖2所示。

圖2 系統整體電路圖
CC2541是一款面向藍牙低能耗以及么有2.4 GHz應用、功率優化的片載系統模塊。CC2541將RF收發器的出色性能和增強型8051MCU、系統內可編程閃存存儲器8KBRAM的優異特性和外設組合在一起。CC2541非常適合應用于需要超低能耗的系統,運行模式間較短的轉換時間使低能耗成為可能。射頻2.4 GHz符合低能耗規范和么有RF片載系統的要求,支持250 kbps、500 kbps、1 Mbps、2 Mbps的數據速率。具有高達1毫瓦每秒的可編程輸出功率、出色的接收器靈敏度,以及可選擇性和阻擋性能。
MicroPython是Python標準庫的精簡部分,對此語言方法進行優化刪減之后就可以在單片機運行芯片和有特殊要求的環境中滿足系統要求。MicroPython還有一些獨特的優勢,例如單片機和電腦的交互提示,對數據進行正確分析處理,以及對器件進行控制。不光如此,這些優異的特性可以實現在單片機內部芯片只有256 k的代碼環境和16 k的讀寫儲存器中流暢運行。MicroPython還可以通過編寫Python語言來對系統模塊以及單片機進行控制和調試。整體程序流程圖如圖3所示。

圖3 系統軟件流程圖
以系統進行圓形識別為例,主要程序代碼為:
import sensor, image, time
sensor reset ()
sensor set pix format (sensor RGB565)
sensor set frame size (sensor QQVGA)
sensor skip frames (time = 2000)
sensor set auto gain (False) must be turned off for color tracking
sensor set auto white ball (False) must be turned off for color tracking
clock = time clock ()
while (True):
clock tick ()
image = sensor snapshot () lens corr (1.8)
for c in image find circles(threshold = 3500, x margin = 10,y margin = 10,
r margin = 10,
r min = 2, r max = 100, r step = 2):
area = (c.x()-c.r(), c.y()-c.r(), 2*c.r(), 2*c.r())
statistics = img get statistics(roi=area)像素顏色統計
print(statistics)
L mode(),a mode(),b mode()
If0<statisticsl_mode()<100and0<statistics.a_mode()<127and0<statistics.b_mode()<127:if the circle is red
img.draw_circle(c.x(), c.y(), c.r(), color = (255, 0, 0));識別到的紅色圓形用紅色的圓框出
else:img.draw_rectangle(area, color = (255, 255, 255));將非紅色的圓用白色的矩形框出來
print("FPS %f" % clock.fps())
利用單片機與外圍部件構成的非接觸式物體尺寸形態測量裝置對物品進行測量,重復測量同一平面圖形形狀、邊長、距離數據取平均值并計算測量精度。更換目標圖形后重復上述實驗內容。
第一步為用測量裝置對與其距離相等的紅色、藍色、綠色物體各測兩次,然后記錄結果并進行分析。第二步為在中心點對齊的情況下,用測量裝置分別對距離其200厘米、250厘米、300厘米的正方形、圓形、三角形物體測量其形狀及其與測量裝置的距離,接著記錄結果并進行分析。第三步為在中心點不固定對齊的情況下對測量裝置的自動跟隨精度進行測試,然后重復第二步的操作。第四步為用測量裝置對籃球、排球以及足球進行測試,檢測裝置是否能正確地識別物體。
該非接觸式物體尺寸形態測量系統通過Arduino Nano最小核心板能夠實現對OpenMV、藍牙傳輸模塊、激光測距模塊、語音模塊的連接和調用。通過外部按鍵控制系統中的OpenMV識別模塊能夠準確識別物體的形狀、顏色、像素和距離,硬件電路實物圖如圖4所示。

圖4 硬件電路實物圖
測量裝置所有測試結果都可以在手機APP上顯示,blinker是一套專業且易用物聯網解決的方案。跨硬件、跨平臺的物聯網解決方案,提供APP端、設備端、服務器端支持,使用云儲存服務進行數據傳輸存儲。可用于智能家居、數據監測等領域,可以更好地搭建物聯網項目。APP界面如圖5所示。

圖5 手機APP顯示頁面
對紅色、藍色、綠色的物體進行顏色識別。在實際測試中,在室內燈光干擾下進行紅色這一顏色的識別時,可能是因為測量裝置對色彩闕值計算有重合區域,發生過一次錯誤識別的例子,其余測試結果皆為正確識別。表1為平面物體顏色識別情況。

表1 平面物體顏色識別情況
測量目標物體的形狀、尺寸及其與裝置之間的距離。在中心點對齊的情況下,對不同邊長或半徑的正方形、圓形、三角形分別在距離裝置200厘米、250厘米、300厘米的要求下測試,表2為物體實際參數及測試結果。

表2 物體形狀、尺寸及其與裝置的距離

?
在前一次測量的基礎上,在物體中心點不固定對齊的情況下測試裝置的自動跟隨精度。表3為自動跟隨精度測試識別情況。

表3 自動跟隨精度測試識別情況
用裝置對籃球、排球以及足球進行測試,表4給出了球類識別情況。

表4 球類識別情況
測試結果表明,裝置能夠準確識別目標物形狀、尺寸以及橫向像素值,通過測得的數據計算出物體實際橫向長度,經多次測試后,測量誤差為±2~3 cm。立體物體識別模式下,可以通過模板匹配準確識別三種球體,并通過激光測距模塊準確測量距離。隨著對系統的不斷調整,識別程序越來越穩定,誤差越來越小。在允許的誤差范圍內,出色地完成了任務。
測量誤差首先來自環境光線的影響,調試的時間不是固定的,光線有所變化,不同光線下機器所捕捉的顏色會有差別,極易造成誤判。其次是OpenMV模塊自帶像素較低,對尺寸的估計比較粗略,偏差必然是存在的。再者是裝置搭建時存在結構誤差,導致中心點的偏離。前兩者的誤差都能通過軟件得以調節。
本文主要研究基于OpenMV對物體顏色、形狀和距離測量的設計和實現。首先介紹了OpenMV測量裝置在國內外的研究情況,然后基于OpenMV的物體顏色形狀分析測量中心系統,解釋了軟件流程圖并用Python語言編寫了裝置軟件代碼,最后分析了某些環境因素發生變化時系統出現的錯誤。該系統原理簡單,運行穩定、可靠,能夠很好地識別物體的形狀、顏色,還能較為準確地測量距離。該系統采用顏色和形狀識別的機器視覺處理技術,并提供基于機器視覺技術的現有產業系統的解決方法。
本文設計的系統以OpenMV模塊作為主要圖像處理技術,并且用Arduino單片機作為下機位進行信息傳輸。通過藍牙模塊實現無線通信,極大地提高了系統傳輸的穩定性。為了滿足各種情況復雜的實際應用需求,對物體的測量進行了多次的研究和測試,大大提高了裝置的抗干擾能力。從測量結果來看,該系統可以適應較為嚴格的照明條件,其測量結果精度高,同時可以在現有基礎上進一步提高系統的距離測量精度,優化軟件算法,以進一步提高計算速度。
機器視覺和人工智能處理是緊密相聯的,從OpenMV創立至今,在它的庫中已經儲備了多種處理方式,可滿足各種不同的需求,在人工智能和智能機器視覺中發揮著重大作用。相信在不久的將來,OpenMV系統將會發掘出更多的潛力,在人們的生活中發揮更大的作用。