赵慧+金思晔+陈瑞+焦良葆
摘 要:通过图像处理的方法,对现场收集到的图像进行处理后得出单管塔、楼房的高度。使用OpenCV的透视矫正函数解决由于相机倾斜拍摄引起图片透视从而导致图像上高度方向的比例与实际比例之间存在较大误差的问题;接着通过数学方法等比例计算,计算出塔高或者楼高。实验结果表明:此方法能够精确地测量出相应的数据结果,即通信铁塔和建筑物高度。与传统使用测距仪的估算方法相比,该文提出的方法提高了精确性,精确度提高2%~3%。
关键词:图像处理 OpenCV 图片透视
中图分类号:TH741 文献标识码:A 文章编号:1672-3791(2017)03(a)-0012-02
为了增加无线通信系统的服务半径,通常将通信天线安置到最高点,可采用通信铁塔来增加天线的挂高。实际通信系统中,为了降低成本,铁塔搭建在建筑物的楼顶上。此时,天线的挂高由两部分构成:一是建筑物的高度h;二是支撑架到天线中点的距离d。由于天线的挂高直接影响无线信号的覆盖范围,需要较精确地测量。一般来说,支撑架到天线中点的距离由于是固定的,所以根据经验可以很快地得出。但楼的高度必须进行实地测量。现行的测量方法是爬上房顶,通过测距仪测量。但是由于塔有很大一部分搭建在居民楼,工作人员不便于爬上楼顶且危险系数较高,只能通过估算一层楼的高度,然后乘以楼层数,估算出楼的高度;也可以利用数学中三角相似的原理来估算,这种测量方法得到的数据不够精确。
为了提高测量的准确度,该文提出了一种基于图像处理的通信铁塔和建筑物高度的测量方法。根据从现场收集到的图像,利用OpenCV对图像进行透视变换处理后,再根据数学等比例运算原理得出单管塔、楼房的高度。
1 基于图像处理的通信铁塔和建筑物高度测量方案
1.1 基于图像处理的高度测量原理
为了提高测量精度,该文提出了一种基于图像处理的测量铁塔和建筑物高度的方法。我们以单管塔为例来说明测量方法。首先,我们根据从现场获得单管塔的实摄图像,可得到单管塔的简化模型如图1所示。
图1中,line4是地面所在的直线,line1跟line2是工作人员在测量的时候贴上的红色条状标记物,工作人员测出h2(line1与line4之间的距离)及h1(line2与line4之间的距离),算出line1和line2之间的距离h3= h2-h1,然后进行图像处理,扫描出从塔顶line3到line2之间的像素行数记为num1,line2与line1之间的像素行数num2。记塔顶line3到line2之间的距离为h,,记塔的整个高度为H,所以H=h+h1。
1.2 针对成像透视畸变的图像矫正
测量楼房的高度是为了得到天线的挂高,受拍摄条件的限制,会出现像上图所示的相机倾斜拍摄而导致图片透视的效果[1,6],导致图像上高度方向的比例与实际比例之间存在较大的误差,不能够较为精确地测量出楼的高度。
为了解决这个问题,可利用OpenCV[4,7]里自带的透视矫正函数[11]getPerspectiveTransform与warpPerspective来进行矫正。该函数矫正后虽不能完全还原成真实场景里面的比例,但在高度方面的比例已经达到我们的要求,是一种可取的办法。矫正前的图片如图2所示,经过矫正后的图片如图3所示。经过矫正后的图像可以通过上述测量单管塔的方法进行测量,通过测量已知高度h,求出h对应像素点num1,以及矫正后的楼房高度H对应像素点num2。由公式H=h×(num2/num1)准确求出楼房高度。
2 技术方案实现和实验数据分析
2.1 技术方案实现
如图1所示,在地面选中参考直线line4,并在测量的时候贴上红色条状标记物line1跟line2,工作人员测出h2及h1,计算出line1和line2之间的距离h3= h2-h1,然后进行图像处理,扫描出从塔顶line3到line2之间的像素行数,记为num1,line2与line1之间的像素行数num2。求得,记塔的整个高度为H,所以H= h+h1。楼的高度与塔的高度方法是一样的。如果图像有畸变,那么就需要做透视变换,如果没有,那就不需要。
楼房的高度测量与通信铁塔的高度测量大致一致。若拍摄角度倾斜,测量值首先需要经过OpenCV中的矫正函数进行矫正,得到透视变换后的图像。若正对拍摄,则不需要经过透视变换。h为已知高度,求出h对应像素点num1以及H对应像素点num2。则H=h×(num2/num1)。由此公式准确求出楼房高度。
2.2 实验数据分析
单管塔的实际高度通过激光测距仪测得,测出地面测量点到塔顶、塔底的距离,再利用勾股定理得出塔高。单管塔的测量高度则是利用上述介绍方法,求出塔的实际高度= h+h1。5次实验为一组,求出实验平均值,得出一次单管塔高度测量值。
楼房实际高度也是通过激光测距仪测得,测出地面测量点到楼顶、楼底的距离,再利用勾股定理得出楼高。楼房测量高度则是利用上述介绍的测量方法,代入公式H=h×(num2/num1),5次实验为一组,求出实验平均值,得出一次楼房高度测量值。
根据上述测量方法计算完毕后,分析获得的测量数据可以发现,该实验方法的误差能够控制在5%以内,相较于经纬仪测量、全站仪测量等耗时久、误差大的传统高度方法,该设计方法测量出的塔高、楼高简单方便,且误差控制良好,故效率较高。
3 结语
文章介绍了一种基于OpenCV的图像处理的方法,主要运用于通信单管塔、楼房高度的测量、矫正。由于传统方法相较于该文介绍的基于图像处理的方法,工作效率低且很有可能会因为测量的误差导致较大的实际与测量的偏差。而采用该文介绍的方法,能够高效准确地完成工作任务。且针对楼房高度的测量也提高了准确性,因为现在比较常用的测量方法是通过测量一层楼房估算一栋楼的高度或者通过数学三角相似的原理计算得出高度,较之上述两种方法,此方法简单有效且结果相较于实际不容易出现较大偏差。试验证明,基于图像处理的方法测量高度能够很好地运用于实际操作中且误差能够控制在5%以内,在预期理想范围之内,且该方法已基于Android手机完成APP开发,实测结果符合工程实际需要。
参考文献
[1] 叶玉驹.高等画法几何学[M].北京:国防工业出版社,1990.
[2] (美)GaryBradski,AdrianKaehler.学习OpenCV中文版[M].北京:清華大学出版社,2009.
[3] 毛星云.OpenCV3编程入门[M].北京:电子工业出版社,2015.
[4] 陈胜勇.基于OpenCV的计算机视觉技术实现[M].北京:科学出版社,2008.
[5] 张广渊,王爱侠,王超.数字图像处理基础及OPENCV实现[M].北京:知识产权出版社,2014.
[6] 邾继贵,于之靖.视觉测量原理与方法[M].北京:机械工业出版社,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.