面向实景三维建模的倾斜影像像控点目标快速检索与高效刺点研究*
2021-06-29杨博雄黄鑫周波李社蕾杨婷婷梁志勇
杨博雄 黄鑫 周波 李社蕾 杨婷婷 梁志勇
(1.三亚学院信息与智能工程学院,海南三亚 572022;2.三亚学院陈国良院士工作站,海南三亚 572022)
0 引言
无人机倾斜摄影测量进行地面和空间信息采集时,野外像控点目标选择的好坏和指示点位的准确度直接影响测图成果的精度[1-2]。像控点首先需要包围测区边缘以控制测区范围内的位置精度,需要在倾斜摄影测量前按无人机飞行航线统一提前布设,以提高刺点精度,增强外业控制点的可靠性[3-4]。在实际中,航摄区域未必都有合适的像控点,为保证成图精度,一般会在航摄前采用红色油性喷漆在地面敷设人工标志或者木板、硬纸板等制作标靶板来提前布置像控点。当地面像控点标志设置成功以及无人机倾斜摄影测量外业采集完成之后,测图任务进入内业数据处理时,对像控点进行刺点是一项重要的工作[5-6]。在空三计算加密过程中,像控点的刺点误差需控制在一个像元内才能进行下一步的处理[7-8]。但是目前内业刺像控点还主要停留在人工作业层次,需要从大量的倾斜影像中逐点去找,极大地降低了实景三维建模和测图的工作效率。
1 YOLO目标检测及优化
在倾斜摄影测量相机拍摄的高清影像数据中,地面像控点目标在整个图像中很小,如图1,像控点目标相对于整张影像的尺寸及其微小,要想利用图像识别算法自动从海量倾斜影像中找到包含有像控点的图像十分困难。
图1 倾斜影像中的地面像控点Fig.1 Ground image control points in tilted images
1.1 基于滑动窗口的YOLO目标检测算法
YOLO(You Only Look Once)是一种采用卷积神经网络来实现端到端目标检测的方法[9]。由于YOLO的目标检测网络仅支持处理1024×1024像素大小的三通道图像,而当前倾斜摄影测量拍摄的高清影像达5000×5000像素以上,因此YOLO目标检测算法对于输入图像的尺寸有局限性,超过规定尺寸的图像不可直接应用于高清航摄的图像处理中[10]。
为此,本文对倾斜摄影测量原始影像进行处理,将整张图像转换为多张1024×1024像素的分割子图像,将分割后的图片放入内存中,作为能够输入到YOLO检测框架进行预测的子图。然后利用滑动窗口循环调用YOLO目标检测框架进行目标检测。检测后框信息也存在内存的特定数据结构中,同时重写检测框的绘制机制,将存于数据结构的目标框数组中每一个预测框的位置、大小信息读取后统一绘制检测框[11]。
如图2。首先给定滑动窗口的长宽、正交方向步进值,通过简单的数学计算可以获取每一次滑动窗口截取到的图像像素位置。遍历顺序为先遍历行,再遍历列。其递归终止条件是每一次遍历到行尾后判断是否还有下一行以及每一次换行需判断是否为最后一行。1、2、3分别代表同一个滑动窗口的不同时刻,从图中可以看出,当进行到2阶段时滑动窗口可以检测到目标,此时对此滑动窗口中的像素值进行灰色覆盖,保证滑动窗口在3阶段时不会重复检测目标。
图2 基于滑动窗口的像控点搜索Fig.2 Image control point search based on sliding window
对于切割出来的每一个小图,使用YOLOv3 模型进行预测。通过重写YOLO 框架的代码获得目标检测框的坐标、长宽、置信度信息,将此信息存于内存中,待所有小图检测完毕后,开始循环遍历内存中的信息,获取信息后调用绘制代码进行目标检测框的绘制。
1.2 倾斜摄影测量影像的像控点自动检测
1.2.1 数据集
本文选取倾斜影像数据共5826张图片,其中无像控点图片和有像控点图片均存放于同一目录,并存在多张图片指向同一个L型像控点图片的情况。训练集来自对5826张图片中包含像控点目标图片的裁剪(416×416像素),共75张,部分图片如图3。
图3 目标图片裁剪Fig.3 Target image crop
1.2.2 检测过程
实验采用64位Windows10 Pro操作系统,利用NVIDIA GeForce GTX 1060加速,整个实验过程分4步。
(1)数据标注:基于Pascal VOC 2007数据集格式,使用416×416三通道的图片,共计75张,作为训练数据集,并通过LabelImage软件对所有数据集中的像控点目标进行标注,标注类别仅包含“L”类。
(2)模型训练:将标注好的数据用于模型训练,等待模型训练完成,训练过程中将会生成多个模型文件,择优选择靠后训练出的最优模型作为预测模型。
(3)模型预测:将训练好的最优模型放到指定的文件目录,并运行代码进行预测。代码的入口函数传入滑动窗口的相关配置参数如表1。
表1 滑动窗口配置参数Tab.1 Sliding window configuration parameters
本文使用x=208,y=208,sw=416,sh=416 的滑动窗口配置参数,运行入口函数开始自动预测。预测完毕后封装有效、完整的round_list数据结构,其长度代表所有滑动窗口切割图片的数量。
(4)鼠标刺点:当程序的图片预测运行完毕后,会自动弹出刺点操作界面来供用户手动点击鼠标进行精确的像控点刺点。刺点操作界面显示的是滑动窗口所截取的图片,该滑动窗口图片成功检测到了像控点目标,包含了完整的像控点图像。程序弹出多次操作界面,数量取决于整张预测大图包含的像控点数量。
1.3 实验结果及分析
1.3.1 实验结果
本文使用416×416像素大小滑动窗口,正交方向步进值为208像素,对一张745×479大小的三通道图片进行预测,并完成鼠标刺点操作。算法自动标注出检测框,并显示出精确的刺点图片坐标,如图4。
图4 像控点搜索与自动标注Fig.4 Image control point search and automatic labeling
实验相关耗时数据如表2、表3、表4所示。
表3 模型预测耗时(CPU)Tab.3 Model prediction time (CPU)
表4 模型预测耗时(GPU)Tab.4 Model prediction time (GPU)
1.3.2 实验分析
当前倾斜摄影测量相片较大,本文中所用实验相片高达6000×6000。而一个标准的像控点仅仅只占100×100左右的像素,占整个像面篇幅的1%左右,而且随机分布在5826张相片中,通过人眼寻找像控点极其繁琐,操作人员需要不停地放大、缩小图片来搜寻像控点。使用本文所述方法,经过前述目标搜索和查找后,自动将包含有像控点的图像通过数据结构集中起来,程序可直接显示出像控点所在位置的图片,用户通过刺点程序,循环在刺点界面手动点击鼠标进行精确刺点,刺点操作的重复次数仅取决于像控点数量,省去了人工寻找像控点和人工缩放打点标注的繁琐流程。
2 结语
本文巧妙利用YOLO 算法进行目标检测,并使用滑动窗口法进行像控点目标的搜索。同时设计像控点自动刺点程序进行自动刺点和像素坐标记录与标注。实验结果显示,通过本文所提出的方法可以完成图像群搜索,并能迅速找到像控点图像以及自动识别像控点,大大提高了倾斜摄影测量的建模效率。