一、引言
我國(guó)是一個(gè)水災(zāi)頻發(fā)的國(guó)家,水安全問題已成為影響經(jīng)濟(jì)和社會(huì)發(fā)展中的重要因素之一。洪水等突發(fā)事故所引發(fā)的損失和危害巨大,因此水情監(jiān)控問題成為國(guó)家水利部門關(guān)注的重點(diǎn)。為了準(zhǔn)確而實(shí)時(shí)地監(jiān)測(cè)水位,目前國(guó)內(nèi)多數(shù)水文監(jiān)測(cè)站使用的是傳統(tǒng)水位測(cè)量方式。
傳統(tǒng)水位測(cè)量方式主要有安裝水尺目測(cè)讀數(shù)和使用傳感器自動(dòng)采集水位相關(guān)的模擬量再轉(zhuǎn)換為水位量?jī)煞N。其中,目測(cè)讀數(shù)的方式需要耗費(fèi)人力,且實(shí)時(shí)性不高,惡劣環(huán)境下讀取水位人員的安全也不能保證。使用傳感器自動(dòng)采集則主要有超聲波式、壓力式、浮子機(jī)械編碼式、雷達(dá)式等測(cè)量手段。這些測(cè)量方式優(yōu)點(diǎn)與缺點(diǎn)并存,缺點(diǎn)也非常顯著,如難于維護(hù),受環(huán)境影響較大等。
本文通過設(shè)計(jì)一系列圖像識(shí)別算法,對(duì)從視頻流中截取的水尺圖像進(jìn)行處理,經(jīng)過灰度化、中值濾波、邊緣檢測(cè)、二值化、形態(tài)學(xué)處理以及圖像細(xì)化,最終由算法得出水位數(shù)據(jù)。整個(gè)測(cè)量過程主要由攝像機(jī)和識(shí)別軟件完成,精度較高且應(yīng)用要求低,因此具有廣闊的應(yīng)用前景。
二、目標(biāo)圖像的提取和預(yù)處理
⒈目標(biāo)圖像的截取和平均
從攝像機(jī)采集到的視頻圖像數(shù)據(jù),首先要選取出數(shù)幀含有水尺圖像的圖片進(jìn)行平均。利用微軟的MSDN提供的視頻處理函數(shù)與OpenCV提供的截取視頻幀函數(shù)可以從攝像機(jī)采集的視頻中提取出若干幀的圖像并保存。截取連續(xù)的數(shù)幀圖像取平均可避免非常態(tài)干擾,提升測(cè)量精度。
⒉彩色圖像的灰度化
由于很多攝像機(jī)支持彩色圖像拍攝,在處理圖像之前,應(yīng)對(duì)采集到的彩色圖像按照式⑴進(jìn)行灰度轉(zhuǎn)換以便后續(xù)處理。
T=0.299×R+0.587×G+0.114×B??⑴
其中T得到轉(zhuǎn)換后目標(biāo)圖像的灰度值,R、D、B分別為紅、綠、藍(lán)的彩色圖像分量,圖1為灰度化后的圖像。
圖1?灰度化后含有水尺的圖像
三、興趣區(qū)域的提取和形態(tài)學(xué)處理
⒈中值濾波
灰度化后的圖像可能存在有由于環(huán)境或干擾產(chǎn)生的噪聲,如熱噪聲、量化噪聲等,首先需要對(duì)其進(jìn)行濾波去噪。這里采用能夠較好保留圖像細(xì)節(jié)的中值濾波方法。
中值濾波作為一種非線性技術(shù),可以有效的消除孤立噪聲點(diǎn)同時(shí)保持圖像中的關(guān)鍵細(xì)節(jié),它將每一像素的灰度值按照該像素周圍一定區(qū)域內(nèi)所有像素點(diǎn)灰度的中值重新設(shè)定,從而消除與區(qū)域內(nèi)像素灰度中值差異過大的點(diǎn)。
中值濾波的主要算法流程如下:
⑴設(shè)置一個(gè)合適大小,含有奇數(shù)個(gè)點(diǎn)的采樣窗口。
⑵通過采樣窗口在被處理的圖像中取出奇數(shù)個(gè)像素,并對(duì)這些像素的灰度值進(jìn)行排序。
⑶選取奇數(shù)個(gè)灰度值的中值,即從小到大排在中間的一個(gè),作為替換值。
⑷將在采樣窗口中心位置的像素的灰度值,設(shè)為替換值。
⑸重復(fù)步驟⑵-⑷,對(duì)圖像中所有像素點(diǎn)進(jìn)行處理。
一般情況下中值濾波后,小于采樣窗口面積的一般噪聲點(diǎn)可以濾除,而較大的物體如水尺刻度,水面輪廓等幾乎完全不受濾波的影響。
⒉邊緣檢測(cè)
對(duì)經(jīng)過濾波后的圖像采用邊緣檢測(cè),可以很好的提取到水尺刻度的特征,大幅度減少數(shù)據(jù)量并剔除不需要的圖像信息,同時(shí)還能保留重要的圖像結(jié)構(gòu)屬性,便于后續(xù)處理識(shí)別。邊緣檢測(cè)中常用的算子有Canny算子,或各種改進(jìn)的Canny算子以及Sobel算子。這里由于是對(duì)水尺刻度的識(shí)別,對(duì)細(xì)節(jié)紋理不太注重,所以選擇了雖然不如Canny算子準(zhǔn)確但效率更高的Sobel算子。
Sobel算子算法的優(yōu)點(diǎn)是計(jì)算簡(jiǎn)單、速度快,通常檢測(cè)時(shí)帶有方向性??梢赃x擇進(jìn)行水平方向檢測(cè)或者垂直方向檢測(cè),或兩個(gè)方向都檢測(cè)。因?yàn)樗呖潭仍趫D像中處于水平方向,這里進(jìn)行垂直方向的邊緣檢測(cè)。圖2所示為中值濾波和邊緣檢測(cè)后的圖像。
圖2 濾波和邊緣檢測(cè)后的圖像
⒊二值化
對(duì)圖像進(jìn)行邊緣檢測(cè)后再通過二值化,去除水面、背景等非目標(biāo)圖像。一般從多值的圖像中提取目標(biāo)物體,最常用的方法就是設(shè)定出全局的閾值T,然后根據(jù)全局閾值,將圖像的數(shù)據(jù)分為兩部分:灰度值大于T的部分和灰度值小于T的部分。將灰度值大于T的部分的像素設(shè)為白色(或黑色),而灰度值小于T的部分設(shè)為黑色(或白色)。本文使用迭代閾值法合理選取全局閾值進(jìn)行二值化,迭代閾值法的算法流程如下。
⑴設(shè)置一個(gè)初始閾值T0,可以自己設(shè)置或隨機(jī)生成。
⑵根據(jù)初始閾值將圖像分割成兩部分,目標(biāo)圖像區(qū)域S1和背景圖像區(qū)域S2。
⑶分別求出S1和S2部分的像素灰度平均值G2和G2。
⑷設(shè)定新的閾值Tn為(G2+G2)/2。
⑸重復(fù)步驟⑵-⑷,不斷用新設(shè)定的閾值分割圖像,計(jì)算平均灰度值,直到得出的新閾值等于上一次的閾值。
經(jīng)過二值化后的圖像如圖3所示。
圖3 二值化后的圖像
⒋形態(tài)學(xué)處理
二值化后的圖像,還可能存在一些干擾判斷的噪點(diǎn),有必要通過形態(tài)學(xué)的腐蝕處理來進(jìn)一步濾除。膨脹和腐蝕是形態(tài)學(xué)的基礎(chǔ)運(yùn)算,許多形態(tài)學(xué)算法都以它們?yōu)榛A(chǔ)。其中腐蝕的作用是去除小于結(jié)構(gòu)元素的物體,對(duì)圖像的腐蝕過程如下。
⑴用結(jié)構(gòu)元素Y掃描待腐蝕二值圖像X的每個(gè)像素。
⑵結(jié)構(gòu)元素Y的像素與其覆蓋的二值圖像區(qū)域做“與”操作,即如果全為1,則結(jié)果圖像的該像素為1,否則為0。
腐蝕后的刻度圖像如圖4所示。
圖4 腐蝕后的刻度圖像
⒌圖像細(xì)化
去除背景和水面經(jīng)過腐蝕后得出的水平刻度線,不宜直接用于后面的處理分析,需要對(duì)上一步的結(jié)果圖像進(jìn)行圖像細(xì)化處理。圖像細(xì)化可以從目標(biāo)圖像中提取出圖像骨架,即將將原圖像中像素寬度大于1的線條細(xì)化成只有1像素寬的線條,之后可以比較容易的分析圖像或提取圖像的特征。此處使用Zhang快速并行細(xì)化算法對(duì)刻度進(jìn)行細(xì)化,細(xì)化后的圖像如圖5所示。
圖5 細(xì)化刻度后的圖像
四、基于K-means聚類分析的
水位識(shí)別
⒈K-means聚類分析獲取刻度數(shù)
數(shù)據(jù)聚類是對(duì)于靜態(tài)數(shù)據(jù)分析的一門技術(shù),在許多領(lǐng)域內(nèi)都被廣泛地應(yīng)用,包括機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘、模式識(shí)別、圖像分析、信息檢索以及生物信息等。K-means算法是最常用的聚類分析方法之一,是由Macoueen提出,它具有算法簡(jiǎn)單且收斂速度快的特點(diǎn)。通常采用的準(zhǔn)則函數(shù)是平方誤差準(zhǔn)則函數(shù),即:
?⑵
式中,E為所有數(shù)據(jù)的誤差平方和,P為單個(gè)的對(duì)象,mi為均值。K-means算法是基于距離的聚類算法,它將相聚越近的對(duì)象判定為相似度越大,認(rèn)為簇是由緊湊的距離靠近的對(duì)象形成的,因此最終可以得到緊湊且獨(dú)立的簇。
K-means算法的流程如下:
⑴從N個(gè)對(duì)象中隨機(jī)選取K個(gè)對(duì)象作為聚類質(zhì)心。
⑵對(duì)剩余的每個(gè)對(duì)象,算出它們到每個(gè)質(zhì)心的距離并歸類到相聚最近的質(zhì)心的類。
⑶重新計(jì)算已經(jīng)得到的各個(gè)聚類的質(zhì)心。
⑷重復(fù)步驟⑵-⑶,不斷劃分新的聚類并得出新的質(zhì)心,直到新的質(zhì)心與上一次計(jì)算得到的質(zhì)心相等或者小于指定的閾值,此時(shí)得到的聚類即為最終結(jié)果。
對(duì)于上一步圖像細(xì)化后的刻度圖像,每一條刻度將被劃分為一個(gè)聚類,從而最終聚類數(shù)量等于可以識(shí)別出的刻度數(shù)量,進(jìn)而在后續(xù)處理中算出水位。
⒉水位測(cè)量算法
⑴算法思想
對(duì)從視頻流中截取平均,經(jīng)過灰度化、中值濾波、邊緣檢測(cè)、二值化、腐蝕、刻度細(xì)化后的圖像,通過聚類分析的方法,先隨機(jī)選取若干對(duì)象作為聚類質(zhì)心,設(shè)定閾值位水尺相鄰刻度間的最小距離,聚類分析后算出滿足條件的聚類數(shù)量N,再根據(jù)水尺和公式計(jì)算水位。
⑵總體算法
從視頻流中截取數(shù)幀圖像取平均,并灰度化。
①對(duì)⑴獲得的圖像進(jìn)行中值濾波,使用Sobel算子邊緣檢測(cè)。
②將上一步得到的圖像二值化后進(jìn)行腐蝕處理。
③對(duì)腐蝕后的結(jié)果圖像進(jìn)行圖像細(xì)化處理。
④隨機(jī)選取圖像中的像素作為初始聚類中心,設(shè)置合理的閾值后進(jìn)行聚類分析,得出水尺刻度線間隔數(shù)N。
⑤根據(jù)公式代入間隔數(shù)N計(jì)算水位。
⑶實(shí)驗(yàn)結(jié)果分析
實(shí)驗(yàn)數(shù)據(jù)庫采用240張?jiān)诂F(xiàn)場(chǎng)用攝像機(jī)拍攝得到的圖片,包括一天中不同時(shí)間的不同水位信息,在此基礎(chǔ)上進(jìn)行水位識(shí)別,算法處理每張圖像所需時(shí)間在65~80ms之間,設(shè)定誤差允許范圍在1cm以內(nèi)的情況下,所有圖像都得出正確檢測(cè)結(jié)果。
下面給出實(shí)驗(yàn)圖像由算法得出的數(shù)據(jù)結(jié)果和由人眼目視讀取的水位結(jié)果以及兩種水位間的誤差進(jìn)行比較,圖6所示為人工測(cè)量得到的水位,圖7所示為識(shí)別算法得出的水位,圖8所示為算法程序得到水位與人工得到水位之差。
圖6 人工測(cè)量得到的水位
圖7 識(shí)別算法得出的水位
圖8 算法得到水位與人工得到水位之差
從圖8可以看出誤差不超過0.6m,造成誤差的主要原因有實(shí)際拍攝水位時(shí),水位線不是完全靜止,會(huì)有小范圍的浮動(dòng);以及部分水尺的刻度線模糊缺損,導(dǎo)致邊緣檢測(cè)算法難以刻度線。總體來說,提出的算法的識(shí)別正確率和實(shí)時(shí)性能夠滿足應(yīng)用需求。
五、結(jié)論
本文提出的水尺測(cè)量算法基于圖像識(shí)別,可廣泛應(yīng)用于測(cè)量各種可使用水尺的水位測(cè)量場(chǎng)合,費(fèi)用低廉、設(shè)施簡(jiǎn)單、并且精度較高。水位識(shí)別方法通過灰度變換,邊緣檢測(cè),圖像細(xì)化,K-means分析等得到刻度線然后計(jì)算水位,由于視頻攝像的實(shí)時(shí)性,可方便的對(duì)水位進(jìn)行遠(yuǎn)程在線監(jiān)控,具有較強(qiáng)的實(shí)用性。對(duì)于原本已經(jīng)架設(shè)攝像頭的系統(tǒng),無需添加太多設(shè)施即可完成改造。
【作者簡(jiǎn)介】文/仲志遠(yuǎn),南京理工大學(xué)機(jī)械工程學(xué)院。文章來自《國(guó)外電子測(cè)量技術(shù)》(2017年第6期),參考文獻(xiàn)略,用于學(xué)習(xí)與交流,版權(quán)歸作者及出版社共同擁有,轉(zhuǎn)載也請(qǐng)備注由“溪流之海洋人生”微信公眾平臺(tái)編輯與整理。
編輯:黃飛
?
評(píng)論