趙慧+金思曄+陳瑞+焦良葆
摘 要:通過圖像處理的方法,對現(xiàn)場收集到的圖像進行處理后得出單管塔、樓房的高度。使用OpenCV的透視矯正函數(shù)解決由于相機傾斜拍攝引起圖片透視從而導致圖像上高度方向的比例與實際比例之間存在較大誤差的問題;接著通過數(shù)學方法等比例計算,計算出塔高或者樓高。實驗結果表明:此方法能夠精確地測量出相應的數(shù)據(jù)結果,即通信鐵塔和建筑物高度。與傳統(tǒng)使用測距儀的估算方法相比,該文提出的方法提高了精確性,精確度提高2%~3%。
關鍵詞:圖像處理 OpenCV 圖片透視
中圖分類號:TH741 文獻標識碼:A 文章編號:1672-3791(2017)03(a)-0012-02
為了增加無線通信系統(tǒng)的服務半徑,通常將通信天線安置到最高點,可采用通信鐵塔來增加天線的掛高。實際通信系統(tǒng)中,為了降低成本,鐵塔搭建在建筑物的樓頂上。此時,天線的掛高由兩部分構成:一是建筑物的高度h;二是支撐架到天線中點的距離d。由于天線的掛高直接影響無線信號的覆蓋范圍,需要較精確地測量。一般來說,支撐架到天線中點的距離由于是固定的,所以根據(jù)經(jīng)驗可以很快地得出。但樓的高度必須進行實地測量?,F(xiàn)行的測量方法是爬上房頂,通過測距儀測量。但是由于塔有很大一部分搭建在居民樓,工作人員不便于爬上樓頂且危險系數(shù)較高,只能通過估算一層樓的高度,然后乘以樓層數(shù),估算出樓的高度;也可以利用數(shù)學中三角相似的原理來估算,這種測量方法得到的數(shù)據(jù)不夠精確。
為了提高測量的準確度,該文提出了一種基于圖像處理的通信鐵塔和建筑物高度的測量方法。根據(jù)從現(xiàn)場收集到的圖像,利用OpenCV對圖像進行透視變換處理后,再根據(jù)數(shù)學等比例運算原理得出單管塔、樓房的高度。
1 基于圖像處理的通信鐵塔和建筑物高度測量方案
1.1 基于圖像處理的高度測量原理
為了提高測量精度,該文提出了一種基于圖像處理的測量鐵塔和建筑物高度的方法。我們以單管塔為例來說明測量方法。首先,我們根據(jù)從現(xiàn)場獲得單管塔的實攝圖像,可得到單管塔的簡化模型如圖1所示。
圖1中,line4是地面所在的直線,line1跟line2是工作人員在測量的時候貼上的紅色條狀標記物,工作人員測出h2(line1與line4之間的距離)及h1(line2與line4之間的距離),算出line1和line2之間的距離h3= h2-h1,然后進行圖像處理,掃描出從塔頂line3到line2之間的像素行數(shù)記為num1,line2與line1之間的像素行數(shù)num2。記塔頂line3到line2之間的距離為h,,記塔的整個高度為H,所以H=h+h1。
1.2 針對成像透視畸變的圖像矯正
測量樓房的高度是為了得到天線的掛高,受拍攝條件的限制,會出現(xiàn)像上圖所示的相機傾斜拍攝而導致圖片透視的效果[1,6],導致圖像上高度方向的比例與實際比例之間存在較大的誤差,不能夠較為精確地測量出樓的高度。
為了解決這個問題,可利用OpenCV[4,7]里自帶的透視矯正函數(shù)[11]getPerspectiveTransform與warpPerspective來進行矯正。該函數(shù)矯正后雖不能完全還原成真實場景里面的比例,但在高度方面的比例已經(jīng)達到我們的要求,是一種可取的辦法。矯正前的圖片如圖2所示,經(jīng)過矯正后的圖片如圖3所示。經(jīng)過矯正后的圖像可以通過上述測量單管塔的方法進行測量,通過測量已知高度h,求出h對應像素點num1,以及矯正后的樓房高度H對應像素點num2。由公式H=h×(num2/num1)準確求出樓房高度。
2 技術方案實現(xiàn)和實驗數(shù)據(jù)分析
2.1 技術方案實現(xiàn)
如圖1所示,在地面選中參考直線line4,并在測量的時候貼上紅色條狀標記物line1跟line2,工作人員測出h2及h1,計算出line1和line2之間的距離h3= h2-h1,然后進行圖像處理,掃描出從塔頂line3到line2之間的像素行數(shù),記為num1,line2與line1之間的像素行數(shù)num2。求得,記塔的整個高度為H,所以H= h+h1。樓的高度與塔的高度方法是一樣的。如果圖像有畸變,那么就需要做透視變換,如果沒有,那就不需要。
樓房的高度測量與通信鐵塔的高度測量大致一致。若拍攝角度傾斜,測量值首先需要經(jīng)過OpenCV中的矯正函數(shù)進行矯正,得到透視變換后的圖像。若正對拍攝,則不需要經(jīng)過透視變換。h為已知高度,求出h對應像素點num1以及H對應像素點num2。則H=h×(num2/num1)。由此公式準確求出樓房高度。
2.2 實驗數(shù)據(jù)分析
單管塔的實際高度通過激光測距儀測得,測出地面測量點到塔頂、塔底的距離,再利用勾股定理得出塔高。單管塔的測量高度則是利用上述介紹方法,求出塔的實際高度= h+h1。5次實驗為一組,求出實驗平均值,得出一次單管塔高度測量值。
樓房實際高度也是通過激光測距儀測得,測出地面測量點到樓頂、樓底的距離,再利用勾股定理得出樓高。樓房測量高度則是利用上述介紹的測量方法,代入公式H=h×(num2/num1),5次實驗為一組,求出實驗平均值,得出一次樓房高度測量值。
根據(jù)上述測量方法計算完畢后,分析獲得的測量數(shù)據(jù)可以發(fā)現(xiàn),該實驗方法的誤差能夠控制在5%以內,相較于經(jīng)緯儀測量、全站儀測量等耗時久、誤差大的傳統(tǒng)高度方法,該設計方法測量出的塔高、樓高簡單方便,且誤差控制良好,故效率較高。
3 結語
文章介紹了一種基于OpenCV的圖像處理的方法,主要運用于通信單管塔、樓房高度的測量、矯正。由于傳統(tǒng)方法相較于該文介紹的基于圖像處理的方法,工作效率低且很有可能會因為測量的誤差導致較大的實際與測量的偏差。而采用該文介紹的方法,能夠高效準確地完成工作任務。且針對樓房高度的測量也提高了準確性,因為現(xiàn)在比較常用的測量方法是通過測量一層樓房估算一棟樓的高度或者通過數(shù)學三角相似的原理計算得出高度,較之上述兩種方法,此方法簡單有效且結果相較于實際不容易出現(xiàn)較大偏差。試驗證明,基于圖像處理的方法測量高度能夠很好地運用于實際操作中且誤差能夠控制在5%以內,在預期理想范圍之內,且該方法已基于Android手機完成APP開發(fā),實測結果符合工程實際需要。
參考文獻
[1] 葉玉駒.高等畫法幾何學[M].北京:國防工業(yè)出版社,1990.
[2] (美)GaryBradski,AdrianKaehler.學習OpenCV中文版[M].北京:清華大學出版社,2009.
[3] 毛星云.OpenCV3編程入門[M].北京:電子工業(yè)出版社,2015.
[4] 陳勝勇.基于OpenCV的計算機視覺技術實現(xiàn)[M].北京:科學出版社,2008.
[5] 張廣淵,王愛俠,王超.數(shù)字圖像處理基礎及OPENCV實現(xiàn)[M].北京:知識產(chǎn)權出版社,2014.
[6] 邾繼貴,于之靖.視覺測量原理與方法[M].北京:機械工業(yè)出版社,2012.
[7] 劉海波,吳昊.基于OpenCV的圖像處理[J].計算機光盤軟件與應用,2014(9):195,197.
[8] 陳博華,戴少鵬.基于OpenCV的圖像處理方法[J].電子技術與軟件工程,2015(19):125.
[9] (加)Robert Laganiere.OpenCV計算機視覺編程攻略[M].北京:人民郵電出版社,2015.
[10] (加)Robert Laganiere.OpenCV2計算機視覺編程手冊[M].北京:科學出版社,2013.
[11] 黃智編.圖像處理與識別實用程序庫[M].天津:天津科學技術出版社,1989.