窦智 马军 杨可明 李小荟 胡靖宇 李木若 朱桐作
摘 要:无人机(UAV)遥感是获取视频图像的重要手段,但因无人机体积小质量轻而易受气流扰动、飞行状况不稳定、飞行路线多变等因素而在一定程度上影响了图像采集质量,所以给工程和生产应用带来较大影响。因此,低空无人机遥感视频图像采集过程中的序列图像实时拼接在监测无人机飞行状态、验证视频图像质量好坏等方面具有重要意义。文章结合OpenCV技术进行了视频图像的提取,运用尺度不变特征转换(SIFT)算法实现了无人机视频图像实时拼接。研究成果显示序列图像拼接效果理想,能有效监控和保障视频图像采集的质量。
关键词:无人机遥感;视频图像;OpenCV;SIFT;实时拼接;质量监控
中图分类号:P23 文献标志码:A 文章编号:2095-2945(2020)35-0034-04
Abstract: Remote sensing of unmanned aerial vehicle (UAV) is an important means to obtain video images. However it is easy to be disturbed by air flow, unstable flight conditions, changeable flight routes and other factors due to the small size and light weight of UAV, so that the quality of images acquired by UAV can be affected to a certain extent. As a result, it has some great impacts on engineering and production applications. Therefore, the real-time mosaicking of sequence images is of great significance in monitoring the flight status of UAV and verifying the quality of video images during the process on acquiring the remote sensing video images of low altitude UAV. In the paper, the OpenCV technology was used to extract video images and scale invariant feature transform (SIFT) algorithm was used to realize real-time mosaicking of UAV video images. The research results showed that the mosaicking effect of sequence images was ideal and could effectively monitor and ensure the acquiring quality of video images.
Keywords: UAV remote sensing; video image; OpenCV; SIFT; real-time mosaicking; quality control
1 概述
随着遥感技术和无人机技术(Unmanned Aerial Vehicle,UAV)的快速发展,现今无人机遥感已经被广泛运用到减灾减害,国土资源信息获取,生态环境变化监测等众多领域[1-5]。无人机体积小,具有使用实时便捷、机动性好、费用低且空间分辨率高等优势,可以完成很多复杂环境下的监测和工程实施任务。然而无人机遥感具有所获取视频图像的场景幅宽小、序列性数量多且重叠不规则以及受飞行姿态不稳定影响、旋转变形大等缺点[5],所以能否对实时的视频序列图像进行快速拼接以检查或监控数据采集质量和效果是低空无人机遥感中较为关键的技术之一。早期关于无人机等航摄图像拼接技术常采用相关法[6]、最小二乘法[7]、松弛法[8,9]、跨接法[10]等匹配方法,但它们的主要缺点是拼接结果会受到图像变形、比例尺不一致和旋转变化等情况的影响较大;所以目前较多采用了不受旋转和比例尺等影响的尺度不变特征变换(Scale-invariant Feature Transform, SIFT)[11]、最小生成树(Minimum Spanning Tree, MST)[12]和加速穩健特征(Speeded-up Robust Features, SURF)[13,14]等拼接算法,而其中MST、SURF等算法本质上还是基于SIFT算法发展或改进得到的。本文重点是基于SIFT算法实现视频序列图像提取和拼接技术,旨在通过实时地拼接视频图像,监测和调整无人机飞行状态,保证获取高质量的视频图像。
2 理论与方法
2.1 OpenCV与视频图像提取技术
OpenCV[15-18]是开源计算机视觉(Open Computer Vision)类库,含有较多计算机视觉与图像处理等通用算法,它具有可使用一些外部库功能,但并不依赖其它外部库,其中在存取视频文件、抓取图像方面较为高效。在无人机遥感视频图像提取时,可结合VC++并利用OpenCV中CV、CXCORE、HIGHGUI等主要函数和模块的图形用户界面(GUI)构建、图像和视频数据输入输出、图像数据处理等功能实现遥感摄像头视频帧的图像提取,并能保存为avi、jpg等文件格式。
2.2 SIFT算法
由David Lowe于1999年发表并于2004年完善总结的尺度不变特征转换(SIFT)是在空间尺度上寻找极值点的侦测或描述图像中局部性特征算法[11],能定义所提取极值点的位置、尺度和旋转不变量。SIFT算法在极值点提取方面有很多算法[19,20],能够在不同的空间和图像区域中准确地检测到大量的匹配特征点。而这些特征点具有良好的尺度和旋转不变性,对光照和视角的变化不敏感。SIFT算法获取图像特征点的主要步骤是:(1)尺度空间生成,(2)空间极值点的检测,(3)关键点的定位,(4)关键点方向的分配,(5)关键点描述子生成,(6)特征数据匹配。
2.3 最小二乘法
最小二乘法(least squares method, LSM)是一种数学优化算法。它是基于误差最小化方法使误差的平方和最小化以寻找数据的最佳函数匹配。利用LSM能简便地求得未知的数据,因而在序列图像的拼接过程中可以使用LSM与多元线性回归对不同图像的像对中同名点进行坐标转换。
2.4 实时拼接方法
无人机遥感视频图像实时拼接的主要步骤是:采用OpenCV技术提取视频帧的序列图像,再利用SIFT算法寻找序列图像中各像对的同名点,然后根据同名点进行图像拼接等后续操作。
(1)提取视频图像。读取摄像头并获取视频帧信息;根据视频帧信息设置摄像头属性信息,定义视频写入器,定义计数器,进入视频帧循环,对每一帧创建窗口实时显示,并将每一帧写入视频文件,同时抓取视频帧并编号保存。
(2)选出基准片。从第一时段内提取的航拍图像序列中选出基准片;这一过程要检测相邻图像的重叠度、同名点的误差、变换模型误差等;选出合适的基准片之后,在随后的航拍序列中选取待匹配的图像,这一过程也要检测待处理图像与基准片的重叠度、同名点误差等。
(3)图像拼接。利用SIFT特征的图像融合方法将待处理的图像镶嵌到基准片上,最后判断图像序列中的所有图像是否均处理完毕,如果没有,则重复执行上述处理过程。
3 视频图像提取与拼接研发
3.1 多线程应用关键技术
为了有效的利用计算机资源,提高无人机遥感视频图像的实时拼接处理速度,可采用多线程并发技术。开辟多线程并行运算能在一定程度上提升计算机CPU利用率,降低无人机视频图像处理的运行时间。
3.1.1 线程和消息实现思路
(1)播放打开的视频文件或是由无人飞机传输下来的实时视频。实时传递播放的信息(如视频帧数,视频图像的位置)给拼接线程。(2)拼接线程接收传来的实时消息,进行拼接,并把拼接的信息实时传送给显示窗口和航线显示的窗口。(3)实时视频显示窗口和整体航线窗口接收到播放传来的信息后,显示当前的拼接结果和实时的航线图。
3.1.2 线程和消息传递的实现
无人机遥感图像实时拼接技术开辟两个线程,即视频播放线程和拼接线程。视频播放线程实现关键代码如下:
StitchingThread=AfxBeginThread(StitchingThreadFunc, stitchingHandle);
VideoPlayThread=AfxBeginThread(VideoPlayingFunc, videoplayHandle);
在拼接过程中,发送消息并等消息返回实现实时准确无误的拼接结果,由于拼接结果实时显示所耗费的时间仅为20~30ms,所以显示只是轻微影响拼接的时间。其中消息的传送代码如下:
::SendMessage(hStitch, WM_STITCH, (WPARAM)tPositionMSG, NULL);
::SendMessage(hDiplay, WM_DISPLAY, (WPARAM)tPositionMSG, NULL);
其中,WM_STITCH,WM_DISPLAY为自定义的消息;hStitch,hDiplay为实时显示和总体航线显示线程的句柄;tPositionMSG为自定义的消息结构体。显示窗口接收到消息后进行窗口刷新和显示。
3.2 视频图像提取编程关键技术
视频图像提取编程主要包括获取视频、抓取视频帧和设置响应时间等关键技术,在获取的每一帧图像时重复下述操作即可。
(1)获取摄像头视频:
pCapture = cvCaptureFromCAM(0);
(2)创建视频写入器:
pVideoWriter=cvCreateVideoWriter(pVideoSaveName,CV_FOURCC('X','V','I','D'),m_iFbs,cvSize(frameW,frameH),1);
(3)寫入视频文件:
cvWriteFrame(pVideoWriter,pFrame);
(4)显示视频帧:
cvShowImage("Frame_By_Frame",pFrame);
(5)间隔一定帧数抓图:
cvSaveImage(buff2,pFrame);
(6)设置视频播放每一帧时等待用户的键盘响应时间(单位为:毫秒)。
key=cvWaitKey(nWaitKeyTime)。
3.3 视频图像实时拼接关键技术
(1)基准片的选取。利用SIFT算法找出相邻两张图像的一定数量的同名点,连接两张图片的同名点得到同名点矢量,分别计算同名点矢量在x,y方向的分量,然后分别计算平均值t,若图像的同名点矢量在x,y方向的分量集中在t周围,说明飞机此时飞行平稳,可以进行图像的选取和拼接。
(2)待配准图像选取。根据基准片从视频抓取的图像序列中选取待配准片,其中要检测航向重叠度、旁向重叠度、同名点误差等,选取满足要求的图像为待配准图像。
(3)图像配准。根据同名点坐标(剔除了误差较大的点)计算出坐标转换参数,然后将待配准片各像素点坐标值代入坐标转换方程,求出它们在基准片中的坐标,之后根据坐标值将每一像素点的像素值拷贝到拼接图像中。
(4)图像重采样和融合。我们采用了双线性内插的方法进行图像融合。双线性内插值法计算量大,但图像质量高,不会出现像素值不连续的情况。由于双线性插值具有低通滤波器的性质,使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊。
对航拍序列重复进行上述(1)-(4),即完成整个航带图像的拼接。图1中(a)~(c)为拼接前视频图像,图1(d)为拼接后效果图。
3.4 视频图像采集质量监控系统
无人机飞行时存在着路线多变、气流扰动和飞行状态不稳等因素,在很大程度上影响了无人机视频图像的质量,会使图像存在较大的投影误差。基于这些因素,首先在系统窗口的设计方面,将系统界面设计成三个窗口,如图2所示,分别是视频窗口(左上窗口),图像实时拼接窗口(右侧窗口)和航线跟踪窗口(左下窗口),这样可以更直观地体现视频播放与视频实时拼接的同步。视频窗口可以实时呈现飞机当前飞行到的区域,可以根据客户的需要实时调整飞行航线。根据拼接图像质量调整飞机飞行姿态以达到良好的拼接效果。可以通过航线跟踪窗口中矩形框的拖动,在图像实时拼接窗口来查看所飞区域的图像拼接效果图,以便检核飞行过的区域内成像质量,决定是否重新飞行这块区域。对于图像的显示要占用一定的时间,这就影响了图像拼接的实时显示效果,可采取分块显示和从内存区读取图像的方法,由于存储图像的内存是不断更新的,把拼接好的图像实时存储后,就可利用MFC的GDI+类将拼接好的最新图像显示在图像实时拼接窗口中,这样可以更好地达到实时显示拼接的效果。
4 总结
基于OpenCV以及SIFT算法开发的无人机遥感视频图像提取和实时拼接技术能很好的实现快速、高质量图像采集过程监控以及准确稳健的航拍序列的图像配准。经过测试,视频采集与抓图效率与质量监控效果都比较好,且也能取得很好的图像拼接效果。但还存在在图像配准时需反复寻找基准片、某些区域线状地物拼接效果不理想以及算法处理效率还有待提高等不足,仍需要对拼接算法与融合技术等方向做进一步改进。
参考文献:
[1]胡文艺,王绪本.岷江流域无人机遥感影像拼接及灾害信息提取[J].物探化探计算技术,2012,34(3):340-343.
[2]陈竹安,施陈敬,冯祥瑞,等.低空多旋翼无人機航测在秀美乡村规划建设中的应用[J].测绘通报,2019(8):144-148.
[3]岳本江,徐佳,高云飞,等.无人机航测成图精度探究及在水土保持行业中的应用[J].中国水土保持,2020(6):48-51.
[4]张腊平.无人机技术在关闭建筑石料矿山生态环境综合治理工程中的应用[J].浙江国土资源,2017(2):50-52.
[5]谢涛,刘锐,胡秋红,等.基于无人机遥感技术的环境监测研究进展[J].环境科技,2013,26(4):55-60+64.
[6]易俐娜,许筱,张桂峰,等.轻小型无人机高光谱影像拼接研究[J].光谱学与光谱分析,2019,39(6):1885-1891.
[7]秦向南,王慧,李烁,等.无人机载多面阵组合宽角五相机影像拼接技术[J].测绘科学技术学报,2017,34(3):294-299.
[8]常津,李浩,杨彪.一种适用于近景数码影像的概率松弛匹配方法[J].科学技术与工程,2013,13(7):1713-1717.
[9]李宇光,王新华.一种自适应的概率松驰影像匹配算法的研究[J].中国图象图形学报,1999,4A(1):19-22.
[10]张祖勋,张剑清,吴晓良.跨接法概念之扩展及整体影象匹配[J].武汉测绘科技大学学报,1991,16(3):1-11.
[11]David G Lowe. Distinctive image features from scale-invariant keypoints[J]. International journal of computer vision, 2004,60(2):91-110.
[12]张冬梅,卢小平,张航,等.一种基于最小生成树的无人机影像拼接方法[J].测绘科学,2020,45(5):42-48.
[13]王冬梅,陈普智.一种改进的无人机序列影像快速拼接方法研究[J].黄河水利职业技术学院学报,2020,32(1):45-49.
[14]刘庆元,刘有,邹磊,等.无人机遥感影像拼接方法探讨[J].测绘通报,2012(5):53-55.
[15]刘瑞祯,于仕琪.OpenCV教程[M].北京:北京航空航天大学出版社,2007:10-44.
[16]王力超,陈熙,陆起涌.基于OpenCV的运动目标检测跟踪实验平台[D].上海:复旦大学,2004.
[17]尹俊超,刘直芳.基于OpenCV的运动目标检测与跟踪[J].计算机工程与设计,2011,32(8):2817-2820.
[18]高向.基于OpenCV运动目标检测与跟踪算法研究[D].银川:宁夏大学,2019.
[19]王国美.SIFT特征匹配算法研究[D].贵州大学,2007.
[20]CHEN Zhi-xiong. The SIFT Research and Implementation based on the image Registration[D]. WUHAN: WU-HAN University of Technology, 2008.