余昊澄,邱浩,劉公致
(杭州電子科技大學(xué)電子信息學(xué)院,浙江杭州,310018)
隨著計算機圖像處理技術(shù)和高性能終端處理器的發(fā)展,機器視覺的研究已經(jīng)成為熱門領(lǐng)域。機器視覺是用處理器和攝像機代替人眼,將數(shù)字圖像的像素信息進行處理后,做出測量和判斷,被廣泛應(yīng)用于工業(yè)、農(nóng)業(yè)、制藥等領(lǐng)域。OpenCV算法是由Gary Bradsky在英特爾創(chuàng)立的,該算法的正式版本是在2000年發(fā)布的。2005年OpenCV算法在DARPA大戰(zhàn)中獲得冠軍,隨著時間的推移,OpenCV算法應(yīng)用的場景越來越多,從開始的用于汽車開發(fā),到現(xiàn)在的計算機視覺,不僅如此,OpenCV算法支持多種語言,如C++、Python、Java等,還可以在不同的系統(tǒng)平臺上使用[1]。本系統(tǒng)使用上述技術(shù),設(shè)計了一種基于互聯(lián)網(wǎng)的攝像測量系統(tǒng)。
系統(tǒng)構(gòu)成介紹:該測量系統(tǒng)主要有樹莓派3B+、TPLINK互聯(lián)網(wǎng)交換機、HIKVISION網(wǎng)絡(luò)攝像頭模塊等部分構(gòu)成,如圖1所示,A、B兩個攝像頭同時對蛋白進行攝像,并將視頻流信號通過交換機傳輸?shù)浇K端樹莓派處理器上,最終再在處理器上對所獲取視頻流進行信息獲取和處理,從而得到單擺長度和角度。各模塊介紹如下:
圖1 基于互聯(lián)網(wǎng)的攝像測量系統(tǒng)的整體結(jié)構(gòu)
本系統(tǒng)采用??低暤膍ini PTZ攝像頭來獲取視頻流,網(wǎng)絡(luò)高清mini PTZ攝像機是集網(wǎng)絡(luò)遠程監(jiān)控功能、視頻服務(wù)器功能和高清PTZ攝像機功能為一體的新型網(wǎng)絡(luò)PTZ攝像機。PTZ攝像機安裝方便、使用簡單,不需要繁瑣的綜合布線。
PTZ攝像機內(nèi)置小型WebServer服務(wù)器、網(wǎng)絡(luò)視頻服務(wù)器、解碼器及機芯,性能穩(wěn)定可靠。PTZ攝像機除具有預(yù)置點、掃描等基礎(chǔ)功能外,還基于以太網(wǎng)控制,可實現(xiàn)圖像壓縮并通過網(wǎng)絡(luò)傳輸給不同用戶;基于NAS的遠程集中存儲,可大大方便數(shù)據(jù)的存儲及調(diào)用。PTZ攝像機支持動態(tài)調(diào)整編碼參數(shù),包括TCP/P、PPPoE、DHCP、UDP、MCAST、FTP、SNMP等協(xié)議;支持Onvif、CGI、PSIA等開放互聯(lián)協(xié)議。PTZ 攝像機內(nèi)置云臺,采用精密電機驅(qū)動,設(shè)備反應(yīng)靈敏、運轉(zhuǎn)平穩(wěn),在任何情況下,實現(xiàn)圖像無抖動,非常有利于線上利用互聯(lián)網(wǎng)直接對攝像頭所捕捉區(qū)域進行實時控制。
樹莓派3B+(Raspberry Pi 3ModelB+),擁有運行在1.4GHz的處理器,雙頻2.4GHz和5GHz無線WiFi,藍牙4.2/BLE,更快的以太網(wǎng)和64位四核處理器,有著較高的性能和較為完善的交互功能[2],具備PC的大部分基本功能,它只需要接通電視機或者鍵盤,就能夠執(zhí)行文字處理與玩游戲等多種功能,有低能耗、移動便攜性、GPIO等特性。利用其GPIO,可以將其當(dāng)作單片機來使用,除了鍵盤鼠標(biāo)等支持USB傳輸信號的外設(shè)以外,還可以利用GPIO口和自制的外部電路再結(jié)合程序?qū)PIO口的控制可以實現(xiàn)更多更豐富的人機交互。
本系統(tǒng)使用TP-Link的交換機,型號為TL-SG1005M,該交換機是塑殼5口千兆以太網(wǎng)交換機,提供5個10/100/1000M自適應(yīng)RJ45端口,所有端口均支持線速轉(zhuǎn)發(fā)及MDI/MDIX自動翻轉(zhuǎn)功能,即插即用。端口性能方面,提供5個10/100/1000M 自適應(yīng)RJ45端口,所有端口均可實現(xiàn)線速轉(zhuǎn)發(fā);每端口均支持MDI/MDIX自動翻轉(zhuǎn)及雙工/速率自協(xié)商;支持IEEE 802.3x全雙工流控和Backpressure半雙工流控[3]。
1.4.1 激光筆擺長L測量方法
1.4.2 激光筆擺角測量方法
基本公式:角度θ= arctan(a/b),通過兩個攝像頭協(xié)同工作,測量兩個正交方向?qū)螖[正視圖x軸坐標(biāo)位置差,即a和b,根據(jù)公式得到角度,如圖2所示。
圖2 單擺系統(tǒng)擺角測量方法
如圖3所示,本系統(tǒng)先是將兩個??低暤臄z像頭HIKVISION放置于圖1中的A、B兩點的位置,當(dāng)兩個攝像頭開始工作時,會將兩個攝像頭所獲取的視頻流通過網(wǎng)線傳輸給同一個網(wǎng)絡(luò)交換機,為了方便單點的檢測,該系統(tǒng)在每個攝像頭節(jié)點處都放置了一個樹莓派用于單節(jié)點的圖像顯示,以確保傳輸至網(wǎng)絡(luò)交換機的數(shù)據(jù)沒有問題。之后網(wǎng)絡(luò)交換機會將來自兩個攝像頭的視頻流數(shù)據(jù)通過同一條網(wǎng)線一同傳輸給終端樹莓派,以便之后的圖像處理和結(jié)果運算。此外每個樹莓派都會配置顯示器、鼠標(biāo)鍵盤等外設(shè),方便人機交互。
圖3 硬件結(jié)構(gòu)圖
如圖4所示,本系統(tǒng)是在樹莓派的Python環(huán)境下,利用OpenCV對攝像頭視頻流進行獲取和處理。事先在三臺樹莓派上安裝了可操作的樹莓派系統(tǒng)。
圖4 系統(tǒng)流程圖
在軟件設(shè)計中,首先對IP進行訪問和獲取攝像頭圖像,兩個攝像頭通過雙進程方式同時協(xié)同運作,減少兩個攝像頭之間的運行時間差[4],多線程類似于同時執(zhí)行多個不同程序,多線程運行有如下優(yōu)點:使用線程可以把占據(jù)長時間的程序中的任務(wù)放到后臺去處理;程序的運行速度可能加快;在一些等待的任務(wù)實現(xiàn)上如用戶輸入、文件讀寫和網(wǎng)絡(luò)收發(fā)數(shù)據(jù)等。在這種情況下我們可以釋放一些珍貴的資源如內(nèi)存占用等等。Python3 通過兩個標(biāo)準(zhǔn)庫thread和threading提供對線程的支持,由于thread只是為了兼容Python2的thread模塊,本系統(tǒng)使用threading模塊實現(xiàn)多線程。
之后對圖像進行高斯平滑濾波,高斯濾波就是對整幅圖像進行加權(quán)平均的過程,每一個像素點的值,都由其本身和鄰域內(nèi)的其他像素值經(jīng)過加權(quán)平均后得到。減小背景中微小物體和光照變化的影響,主要是利用分布加權(quán)卷積距離待處理像素越近的像素對輸出影響越大的物理意義。
之后主要利用背景差分的方法將運動的像素確定下來[5]:首先建立一個背景圖像,也就是取背景,計算當(dāng)前輸入圖像和背景圖像的差分,數(shù)學(xué)表達式如下:,其中It是framet,即當(dāng)前幀圖像,Bt是背景圖像,設(shè)定一個閾值Th,根據(jù) Δt和Th的大小關(guān)系判斷像素屬于背景還是移動物體:
在數(shù)據(jù)測量的過程中,發(fā)現(xiàn)本系統(tǒng)存在受到周邊光線影響的問題,為了解決這一問題,本系統(tǒng)采用了IIR濾波的方式來減少環(huán)境光影響所帶來的變化,以提高系統(tǒng)的光照魯棒性,IIR濾波是使用當(dāng)前幀對背景圖像進行更新:B(t) =α·I(t)+ (1 -α)B(t- 1),其中α是當(dāng)前幀所占的比重,通過調(diào)節(jié)α的值可以改變背景的更迭速率。
再通過閉運算找出目標(biāo)物體,閉運算主要是對圖像先進行膨脹運算,再進行腐蝕運算,用來補充小的裂縫和彌合狹窄的斷裂和細長的溝壑并且不會影響原來前景的形狀大小[6、7]。
最后則是確定XY坐標(biāo),根據(jù)XY坐標(biāo)擬合目標(biāo)物體坐標(biāo)曲線,通過曲線的峰峰值之間橫坐標(biāo)的距離得到擺動周期,再根據(jù)公式得到繩長,在計算角度時,通過兩個攝像頭獲取的波峰和原點的坐標(biāo)差,如圖5所示是擬合的類簡弦運動圖像,獲得圖2中所示的一個直角三角形中的兩個直角邊,再根據(jù)三角函數(shù)得到角度。
圖5 擺幅的正弦曲線
按照題目要求,對基于互聯(lián)網(wǎng)的攝像測量系統(tǒng)進行測試,測試內(nèi)容及結(jié)果記錄如下:
L測量結(jié)果如表1所示(單位:cm)。
表1 長度測量數(shù)據(jù)
θ測量結(jié)果如表2所示(單位:度)。
表2 角度測量數(shù)據(jù)
以上單次測量均可以在較短的時間內(nèi)完成。
從表1、表2測試結(jié)果分析可知,本系統(tǒng)對于目標(biāo)物體及其位置識別較為精確,測量過程速度較快,在測量L的時候,由于激光筆中心會改變擺長,所測得的值和實際值會存在一定誤差,所以測得的L必然會偏大,利用第一次測量的結(jié)果進行誤差二階擬合,從而得到一條如圖6所示擬合曲線,來展示真實值和數(shù)量值之間的關(guān)系。
圖6 長度擬合曲線
將該擬合曲線值放到最終的輸出端,可以大大減小誤差,從而得到較為精準(zhǔn)的測量值。
在測量角度時,由于放置將激光筆者本身存在的一些因素(如投放時,給了激光筆橫向的力)從而使得激光筆不能做正常的單擺運動,同時也會產(chǎn)生誤差。
本文的制作可以利用HIKVISION網(wǎng)絡(luò)攝像頭順利地將網(wǎng)絡(luò)傳輸?shù)浇粨Q機上并且傳輸?shù)浇K端設(shè)備,采樣用圖像處理的方法,成功地實現(xiàn)了單擺的識別,測量出其坐標(biāo)和運動周期,從而計算出單擺的長度和擺動角度,測量結(jié)果精度也比較高。該系統(tǒng)可以應(yīng)用于諸多類似于教學(xué)實驗的監(jiān)測當(dāng)中[8],上文中的閉運算和IIR濾波更新背景等算法可以使得系統(tǒng)有著較高的魯棒性,來抵御外界環(huán)境的干擾。