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