袁盈庭
摘 ?要:近年來,全球氣候逐漸惡劣。在我國很多城市出現大范圍降水,盡管現在城市的管道排水系統已日趨完善,但大范圍降水以及充沛的降水量還是使得許多城市的排水系統出現過飽和的現象。這就會在雨水沒有得到疏導時,引起局部地區的積水。
為了及時掌握積水深度和積水區域的情況,本文提出了利用攝像設備監控積水深度的研究方向。這個方法通過利用計算機視覺的功能,對獲得的圖像進行處理識別來檢測水位。
關鍵詞:計算機視覺;積水深度;灰度圖像
1 引言
1.1 研究背景
當前氣候問題已成為一個全球問題,在世界上的很多地方洪澇災害出現的頻率逐年升高,由此帶來了城市內澇等災害。高強度對的降水或持續的降水使得城市的排水系統無法承受,從而引起了城市低洼地段積水災害的發生。發生城市內澇災害嚴重時將造成交通運輸、通信、生活供給等與市民密切相關的生活系統的癱瘓,對我們的生產生活造成了各種不便,同時會使得社會經濟活動無法進行,由此會造成無法估量的損失。
2.基于Opencv的積水深度檢測方案設計
2.1.積水深度自動檢測方案
2.1.1模擬實驗場景
根據我所研究的課題,需要設計出一個積水區域的實驗場景,由于實驗條件有限,我簡單模擬了一個淹沒區域的環境。在這個模擬的實驗場景中,我在方形水槽中注入將近三分之二的水,用來表示積水區域,同時,找來一塊形狀規則且總長度為已知的長條形的紅色紙板來代替水尺,而且在紙板上不標明刻度,這是因為我所進行的監控方案中是通過像素值來間接求得積水深度的,而非直接觀測。為保證實驗結果的精確性,一定要盡量保持紙板與水槽垂直,避免因為水尺傾斜而引起的測量誤差。模擬的實驗場景如下圖2.2:
2.1.2積水深度自動檢測
在實驗之前,我們可以假設模擬水尺的長度及整個水尺對應的像素值是已知的。這在真實環境中同樣也是可以做到的,所以這個假設可以成立。而在前面對圖像的處理中,我們已經得到了圖像未淹沒的水尺部分的輪廓。我們再把這一部分所對應的像素值求出來,通過比例關系就可以得到未淹沒水尺的長度,從而求出積水深度。
3.積水深度自動檢測關鍵技術及試驗結果
3.1目標圖像的邊緣檢測
3.1.1邊緣及邊緣檢測的算法
在計算機視覺及圖像處理中,邊緣檢測是極其關鍵的步驟,其目的是檢測出圖像中灰度值變化特別顯著的像素點,依次來提取出圖像輪廓。邊緣檢測其實就是通過特定的算法來標識圖像中目標和背景間重疊部分的輪廓線。
在圖像的邊緣位置,像素點的灰度變化非常的明顯。因此,很多邊緣檢測的方法會利用到這個特性來確定邊緣上的點。在一階微分圖像和二階微分圖像中通過找到峰值和零點就能找到對應的邊緣點。耿迅[1](2006)指出:“為了克服一階導數的缺點,可以計算圖像的梯度”。圖像梯度有一個非常關鍵的性質,在圖像灰度變化率最大的地方可以確定梯度方向,而梯度方向正好能夠反映灰度在目標圖像邊緣上的變化。用來檢測圖像邊緣的算法有以下幾種:Krisch算子、Sobel算子、Canny算子和Robert算子等。
3.1.2采用Canny算子進行邊緣檢測
二十世紀九十年代中期,JohnCanny根據先平滑再求導數的特點,設計出了與Marr邊緣檢測方法相似的算法:Canny算子。這里講簡要概述Canny算子進行邊緣檢測的具體要求。采用Canny算子來檢測邊緣時,我們首先要將攝像設備所采集得到的彩色圖像進行處理,也就是灰度化處理。要得到灰度化圖像,即將圖像的三個分量加權求均值。下面介紹了兩種方法來進行圖像灰度化:
方法1:Gray=(R+G+B)/3;
方法2:Gray=0.299R+0.587G+0.114B;這一算法將人眼的視覺特點考慮在內,需要注意以下幾個方面。
在處理不同格式的彩色圖像時,需要依據其對應的關系轉換成RGB,之后,在將其轉化為灰度圖像;注意:在編程時要注意RGB的順序一般是BGR。
實現方法:OpenCV中實現Canny算法的函數是cv::Canny。正如我們將看到的,該算法需要制定兩個閾值。函數調用方法如下://應用Canny算法cv::Mat contours;cv::Canny(image,contours,25,250);//灰度圖,輸出輪廓,低閾值,高閾值。
3.3水位計算和實驗結果
關于水位的計算機視覺檢測,在模擬的實驗環境中水面是處于平靜狀態的,水位只會在豎直方向上發生變化,而對于在水平方向上的高低變化忽略不計。我們假想的實驗條件包括,水尺的長度以及沿水尺中線方向的像素值之差為已知,所以在攝像機以及水尺的安裝位置固定不變的條件下,可以考慮通過像素值的變化情況來表示水位的變化情況。下面我用畫圖軟件,沿著檢測得到的邊緣圖像的中線,得到了水尺底端與中線相交點的像素值得縱坐標為600。
同理可得水尺頂端的像素值縱坐標為150,已知水尺全長為300mm,設某時刻水位線像素值縱坐標為i,所以水位h與像素值i得轉換的比例公式如下:
h:300=(600-i):(600-150);
上述公式中水尺頂端和底端的像素值以及水尺的總長,可根據實際應用中的具體數據來確定,這里的數據只是我在實驗中得到的。從公式很容易看出,每一個水位的像素值都對應著一個水位。
在實際應用中,這種水位的檢測方法將受到幾個方面的誤差影響:(1)水尺及相機的固定誤差:由于兩者的位置發生相對移動,將會對檢測結果產生重大影響,導致檢測數據的不精確。(2)圖像邊緣檢測的誤差:尚未找到一種邊緣檢測算法能夠保證提取出精度極高的水位線,這就會影響像素值的精確讀取,從而影響水位值得精準性。
參考文獻
[1] ?VC圖像處理——邊緣檢測 ?耿迅-《電腦編程技巧與維護》-2006.
[2] ?中值濾波編碼算法的設計原理與實現 ?肖昕-《計算機輔助設計與圖形學學報》-2004.
[3] ?小波變換實現圖像導向濾波 ?李軍俠-《電子信息學報》-2007.