丁旭東 過奕任 李秋潔



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