丁旭東 過奕任 李秋潔
摘要:該文主要闡述了基于機器視覺的嵌入式智能噴水感應(yīng)統(tǒng)設(shè)計方法,包括硬件構(gòu)成和軟件算法,利用樹莓派和python的組合,實現(xiàn)通過視覺識別的水流檢測。該文簡明闡述了系統(tǒng)的外觀結(jié)構(gòu),詳細(xì)介紹了圖像處理中的各個環(huán)節(jié)。文章最后作了數(shù)據(jù)分析,驗證了該系統(tǒng)符合設(shè)計要求。
關(guān)鍵詞:圖像處理;水流檢測邊緣檢測系統(tǒng)設(shè)計分析
中圖分類號:TP311? ? ? ? 文獻標(biāo)識碼:A
文章編號:1009-3044(2019)27-0179-03
水流是充滿變化的,不穩(wěn)定的水的運動狀態(tài),水從一定的方向自由射出,受環(huán)境影響,往往具有不確定性。通過對不確定的運動進行視覺識別,有助于深入理解圖像識別的過程,由此可以推廣其在生產(chǎn)生活中的應(yīng)用。
本文主要介紹針對固定口噴射水流的識別系統(tǒng)設(shè)計,詳細(xì)介紹了水流從產(chǎn)生到識別的每個過程。本系統(tǒng)通過樹莓派進行圖像捕捉和識別,實現(xiàn)對水流的檢測,并將數(shù)據(jù)存儲下來,通過局域網(wǎng)的方式傳輸至電腦,方便比對、統(tǒng)計、分析。
1 識別系統(tǒng)的結(jié)構(gòu)設(shè)計
識別系統(tǒng)基本包括水流發(fā)生裝置,識別裝置和支撐結(jié)構(gòu),具體結(jié)構(gòu)如下示意圖(圖1)。
其中,圖中指示燈亮表示識別到水流,滅表示未識別到水流。
根據(jù)滿足功能,簡潔節(jié)約的原則,水流由人力控制水槍產(chǎn)生,水槍支架為繪制定做的亞克力板,平臺支架由輕木板和短木柱構(gòu)成,攝像頭和水流的隔離用全透明魚缸代替,魚缸亦可以存放射出的水流,保持實驗過程中模擬環(huán)境的整潔。其中,水流的噴射結(jié)果盡量和魚缸輪廓平行,且位居攝像頭視野中間,攝像頭的視場也盡量和魚缸輪廓平行,方便圖像的后期處理。
2 識別系統(tǒng)的算法設(shè)計
樹莓派的處理速度相較于普通常見的ARM開發(fā)設(shè)備,運行速度快,同時有著結(jié)構(gòu)精簡,應(yīng)用范圍廣,網(wǎng)絡(luò)連接方便的特點。因此在均衡算法的執(zhí)行效率和代碼復(fù)雜度后,本系統(tǒng)采用了Python語言。Python語言具有擴展功能強大,完成同樣內(nèi)容代碼量低等諸多優(yōu)秀特點,非常適合本項目的開發(fā)需求,在實際的開發(fā)過程中也實質(zhì)上解決了程序設(shè)計中核心代碼難于編寫的問題。
2.1 圖像的獲取
主要利用opencv關(guān)于python的組件,通過python調(diào)用opencv的圖像處理指令實現(xiàn)圖像的獲取。
圖像由樹莓派所連接的攝像頭,通過連續(xù)拍攝的方式得到,從而不斷獲取動態(tài)水流的圖像信息。文件通過逐幀讀取的方法獲得實時拍攝的圖像,即識別所需要的水流圖形,如圖2所示。算法中,利用python函數(shù)[capture.read()]讀取圖像信息,并取圖片中心的120x160個像素,以PNG文件格式保存下來。
2.2 圖像的預(yù)處理
2.2.1 灰度化
根據(jù)圖2所示,水流的圖形狀態(tài)相較于周邊背景的主要不同點在于,水流由于光的折射和反射,產(chǎn)生了明度的變化,在圖像的顏色上,主要表現(xiàn)為水流處比背景更偏向于白色。因此可以得出一個初步的結(jié)論,圖像的顏色對于水流來講是弱相關(guān)的,這一結(jié)論決定了下面的處理操作。為了減少處理的時間,根據(jù)顏色弱相關(guān)的結(jié)論,對圖像進行灰度化(圖3),程序中利用語句[gray=cv.cvtColor(roi, cv.COLOR_BGR2GRAY])來實現(xiàn)灰度化的功能。此處的灰度化為平均權(quán)重,即:
2.3 水流識別
為了得到較好的水流識別效果,使得處理機構(gòu)能夠準(zhǔn)確地在由水流時判斷出水流直線,在沒有水流時,不作正判響應(yīng),識別系統(tǒng)針對2.2中灰度圖進行了進一步的處理。算法在設(shè)計時,首先使用2.2中灰度化后的圖像先后做降噪和輪廓提取,然后再進行直線擬合,判斷水流的存在。
2.3.1降噪與輪廓提取
對于運動目標(biāo)的輪廓獲取,首先需要對相鄰的兩幀圖像求差分,即幀間差分法,從而得到在相鄰幀的時間內(nèi),目標(biāo)運動的變化狀態(tài)。同時,兩幀作差可以大范圍地消除背景靜噪聲帶來的處理干擾,背景噪聲對于運動物體的輪廓干擾往往是致命的。對于本設(shè)計而言,即要獲取運動的水流在兩幀之間的位移變化。與一般的剛體運動物體不同,水流在自由運動時會改變相對結(jié)構(gòu)狀態(tài),但是其外部輪廓由于張力大致不變,適用于幀間差分法。將圖3中的圖片與各自前幀作差,利用python函數(shù)
在本設(shè)計中,高斯核在X,Y方向上的取值均為3,避免由于形態(tài)變化以及未能在差分中去除的背景噪聲對于輪廓提取的影響,同時盡量保存圖片信息,減少由于模糊帶來的圖像信息失真。處理后的圖像如圖5所示。
2.3.2針對降噪的必要性分析
由2.2.1,本系統(tǒng)在抓取水流的輪廓前,做了兩步降噪操作,并且從處理后得到的輪廓來看,當(dāng)前數(shù)據(jù)的輪廓清晰簡潔,水流線周圍噪聲在可接受的范圍內(nèi),背景底噪基本被去除。為了進一步證明降噪的必要性,在得出輪廓后,添加了對比實驗,兩組對照組分別為完全不降噪直接取輪廓和僅作差分后再提取輪廓,具體對比如表1所示。
由表得出,每一步的降噪對最終輪廓的獲取都有較大的影響,每一步的降噪操作都是必要的。兩步降噪最終實現(xiàn)了對特定的水流輪廓的提取,為后續(xù)的直線擬合打下了良好的基礎(chǔ)。
2.3.3直線擬合
經(jīng)過上面各個步驟的處理,水流的輪廓已經(jīng)被提取出來,圖像的信息也被壓縮成了二值化之后的結(jié)果,此時采用霍夫變換,得到圖像中主直線的斜率,并在圖像中繪制出來,如圖7所示,每一張圖都有自己的主直線,該直線即可以大致表示成水流在圖像中的方向。
根據(jù)系統(tǒng)的結(jié)構(gòu)設(shè)計,要求攝像頭視場和水流方向均與魚缸輪廓大致平行,由此排除直線斜率偏差過大的情況。在實驗中,為了方便數(shù)據(jù)的記錄和傳輸,將正負(fù)斜率統(tǒng)一取絕對值計算,將糾正后的斜率轉(zhuǎn)化為傾斜角顯示,并256等分,記0-255,為了區(qū)別斜率避免誤解,此處將修正后的斜率結(jié)果稱為斜率值。斜率值只能取0-255這256個整數(shù)。其中,0表示和X軸平行,255表示和X軸垂直,1-254分別對應(yīng)其中的等分(圖8)。由于實驗?zāi)M環(huán)境的干擾,以及攝像頭視場并不能完全正好與水流平行,系統(tǒng)把大于200的斜率值都記為識別成功結(jié)果,即識別為水流,把不大于200的斜率值記為識別失敗,即沒有識別到水流。
2.4結(jié)果呈現(xiàn)
根據(jù)直線擬合的結(jié)果,系統(tǒng)在得到識別成功的結(jié)果后,指示燈點亮,表示識別出該攝像頭上方有水流經(jīng)過,否則指示燈為熄滅狀態(tài)。
3 識別結(jié)果分析
3.1 識別結(jié)果和原數(shù)據(jù)的比對
為了驗證識別結(jié)果的準(zhǔn)確性,把圖7中的直線擬合結(jié)果代入原圖中,得到圖9。根據(jù)圖片的顯示,直線擬合的結(jié)果和水流的運動方向大致吻合得到的擬合結(jié)果,大致滿足系統(tǒng)的設(shè)計需要。
3.2 系統(tǒng)功能的達標(biāo)性檢測
驗證本項目系統(tǒng)的達標(biāo)性,是評判一個系統(tǒng)是否滿足了設(shè)計之初要求的必要的論證過程,幫助尋找系統(tǒng)中存在的漏洞和不足之處,具有科研的嚴(yán)謹(jǐn)性。
從多組實驗數(shù)據(jù)中,選擇了一組相對接近實際情況,且外界干擾適中的實驗結(jié)果進行分析,并以此為代表嘗試針對系統(tǒng)做出評估。數(shù)據(jù)統(tǒng)計的結(jié)果如下表所示:
由F1的值得出解論,本系統(tǒng)的設(shè)計結(jié)果大致滿足了設(shè)計要求,能夠良好地完成識別判斷任務(wù)。
4 總結(jié)
本文主要介紹了水流檢測的視覺識別方法,實現(xiàn)了對水流的隔離檢測,對于視覺識別的應(yīng)用進行了對于水流水柱方向的擴展。同時,系統(tǒng)設(shè)計和驗證期間積累的經(jīng)驗對以后的類似設(shè)計具有積極意義。
參考文獻:
[1] 趙軍. 視覺顯著性直線的檢測算法研究[D].華中師范大學(xué),2015.
[2] 張月圓,曾慶化,劉建業(yè),等.基于Canny的改進圖像邊緣檢測算法[J].導(dǎo)航與控制,2019,18(1):84-90.
[3] 郭佳. 基于光照不均勻圖像的自適應(yīng)二值化方法研究[D].武漢科技大學(xué),2013.
[4] 郭逸倫.基于OpenCV的邊緣檢測算法效率分析[J].科學(xué)技術(shù)創(chuàng)新,2019(1):87-88.
【通聯(lián)編輯:代影】