首页作文素材好词好句历史典故写作技巧考场素材单元作文英语作文小升初作文名人故事时事论据 名言警句范文大全精美散文
小学作文
初中作文
高中作文
作文体裁

面向三维重建的无人机影像并行处理技术

时间:2023-07-11 01:30:04 来源:爱作文网  爱作文网手机站

庞巧遇,邓宝松,桂健钧,鹿 迎

(军事科学院 国防科技创新研究院,北京 100071)

针对室外大场景的三维重建,大多采用基于几何信息来恢复相机参数的SFM(Structure from motion)算法[1]。Yasutaka Fumkawa实现了一种精确、鲁棒的稠密重建方法PMVS[2]。Newcombe提出了一种基于体素的三维稠密点云重建方法[3],但是重建精度受体素网格的分辨率限制。StereoScan提出流水线方式[4],重建结果存在许多噪点。吴常常实现的VisualSFM算法是较为完善的重建算法[5]。Schonberger等提出的方法在重建精度和完整性上做出了一些改进,其缺点是深度图估计速度过慢[6]。Moulon等提出openMVG算法[7],缺少构建稠密点云部分,需要结合openMVS[8]。Shan等实现了对大规模图片进行三维重建的系统,但消耗的资源很多[9]。

随着CPU多核处理与GPU技术的出现,图像并行处理也得到迅速发展。在CPU并行处理方面,Cadena L等应用了并行处理方式对医学图像进行增强[10]。Indragandhi K等引入了图像并行处理策略,提升了程序的性能[11]。Spiliotis IM等采用并行处理机制来处理图像块,提升了算法效率[12]。在GPU并行图像处理方面,Davidson RL等采用GPU并行处理技术加速了空间应用中的图像处理[13]。Civerchia F等在机器人的图像识别中使用了GPU并行计算[14]。

本文基于CPU与GPU两种架构在三维重建的两个执行阶段引入并行加速处理,旨在提升整体三维重建的速度。本文方法采用OpenMP多线程处理机制,首先对图像进行尺度优化,提取图像中的GPS信息,获取邻接信息;
再使用SIFTGPU算法并行提取图像中的特征点,只对相邻的图片进行特征匹配,以减少匹配时间;
最后,通过全局式SFM得到场景的稀疏点云。

本文工作主要分为两个模块:无人机图像处理模块和稀疏点云构建模块。整体流程如图1所示。

图1 系统处理流程

在无人机图像处理模块中,首先采用OpenMP多线程处理机制,以并行方式对无人机航拍图像进行尺度优化,对航拍图像进行降采样,方便后续步骤对其进行处理。然后,利用OpenMP多线程处理机制,并行提取无人机航拍图像中的GPS信息,根据空间位置确定图像之间的邻接关系,对图像进行排序。最后,该模块的输出信息是按照经纬度由小到大顺序排列的无人机航拍图像,以及航拍图像中对应的GPS信息。

在稀疏点云构建模块中,以排列有序的无人机航拍图像和图像中的GPS信息作为输入,利用SIFTGPU算法并行提取图像特征。将图像中的GPS信息作为先验信息,只对相邻的图像进行特征匹配。采用RANSAC(random sample consensus)算法来剔除误匹配点[15]。根据全局式SFM,建立局部图像和全局图像的旋转和平移矩阵,从而估算相机位姿和场景三维坐标,得到场景的稀疏点云。

本文的研究重点是无人机图像加载处理部分以及SFITGPU特征提取部分,这也是三维重建最为关键的两个环节,下面对这两部分算法进行详细介绍。

2.1 基于CPU的无人机影像并行处理

原始的无人机航拍图像尺度都非常大,其像素大小为5184 px×3888 px,文件大小为20 MB。利用无人机航拍图像对野外场景进行三维重建,需要对原始图像进行预处理,主要包括两个环节:①通过降采样优化图像大小;
②利用无人机航拍图像中的GPS信息,获得图像之间的邻接关系。

在对无人机航拍图像进行尺度优化与GPS信息提取的同时,通过预处理算法对航拍图像进行空间拓扑分析。图像预处理算法运行主要消耗CPU计算资源,这一过程是单线重复的。本研究方法采用OpenMP多线程处理机制,充分发挥多核CPU的计算性能,对航拍图像进行并行处理以提升图像的处理速度。

OpenMP是由计算机软件及硬件厂商共同制定的应用程序编程接口(application programming interface,API),是一种用于共享内存系统的编程模型[16]。OpenMP的体系架构如图2所示,主要包括3部分,分别是:编译指令(Compiler Directive)、环境变量(Environment Variables)以及运行库函数(Runtime Library Functions)。编译指令包含指令(directive)和子句列表(clause list),指令控制并行执行的代码区域和线程数量,字句列表控制变量在每个线程中的作用域。编译器通过编译指令将串行执行的程序转化为并行执行的程序。环境变量中包含一些控制命令,控制程序并行执行。运行库函数能够获取OpenMP中每个线程的信息,以及变量在每个线程中的属性,进而在编译阶段,将程序进行并行化处理。

图2 OpenMP体系架构

OpenMP的执行过程如图3所示,采用Fork-Join执行模式。从一个串行执行的单线程程序开始,将其作为主线程,在执行并行处理程序时,主线程进行Fork操作,创建多个新的线程来执行并行区域中的程序。并行区域中的每个线程独立执行,不会相互影响。当每个线程执行完成后,各个线程进行Join操作,又重新回到串行执行的主线程。

图3 Fork-Join 执行模式

本文研究的无人机航拍图像处理流程如图4所示,采用OpenMP多线程处理机制,并行处理航拍图像,这里设置的线程数量为8。首先,以并行方式对图像尺度进行优化,通过降采样,将原始像素为5184 px×3888 px的航拍图像大幅缩小,即将图像像素大小调整为1250 px×1000 px。然后,再通过OpenMP多线程处理机制,并行提取图像的GPS信息。最后根据图像中的GPS信息,确定图像之间的邻接关系,按照经纬度由小到大的顺序对所有图像进行空间排序,为三维重建后续步骤做好铺垫。

图4 无人机航拍图像处理流程

基于CPU的无人机影像并行处理算法的伪代码如算法1所示。首先,通过pragma omp parallel将图像处理程序设定为并行处理,threadcount表示线程数量,其值为8。Num表示图像数量,newW为原始图像的宽除以宽的缩小比例,newH为原始图像的长除以长的缩小比例,inter设置为CV_INTER_AREA,表示输出图像的宽和高都不大于输入图像的宽和高。通过exifReader->GPSLatitude函数读取图像EXIF中的纬度,exifReader->GPSLongitude函数读取图像EXIF中的经度。最后,根据图像中的经纬度,采用sort函数,按照经度由小到大,如果经度相同按照纬度由小到大的顺序对图像进行排序。

算法1:基于CPU的无人机影像并行处理

输入:原始的无人机航拍图像

输出:按经纬度由小到大顺序排列的航拍图像

#pragma omp parallel for num_threads(threadcount)

newW ← img.cols / width_scale

newH ← img.rows / height_scale

inter ← CV_INTER_AREA

resize(img, Size(newW, newH),inter)

img.lat ← exifReader->GPSLatitude(img)

img.lon ← exifReader->GPSLongitude(img)

end for

bool cmp(Image a, Image b)

if a.lat != b.lat

return a. lat < b. lat

else

return a.lon < b.lon

sort(img, img + Num, cmp)

采用OpenMP多线程处理机制来处理无人机航拍图像,能够使系统架构更清晰明了;
通过编译指令对串行程序进行并行化,也能够加快程序的运行速度。此外,OpenMP多线程机制具有很强的灵活性,可以十分容易适配不同计算单元中的并行系统配置。该机制能够很好平衡线程粒度与系统负载之间的关系,使得线程个数与计算单元的处理器核数相匹配,从而充分发挥多核处理器的并行能力,提升无人机航拍图像的处理速度,进而提高三维重建的执行效率。

2.2 基于GPU的无人机影像特征并行提取

无人机飞行高度较低,拍摄的场景图像尺度较大,并且内容丰富,在特征提取阶段,单张图像的特征提取往往耗时较长。本文基于改进的SIFTGPU算法,在GPU上以并行方式对无人机航拍图像进行特征提取。在处理图像过程中,首先将初始图像上传至GPU全局内存中,再绑定纹理内存,对其进行专门的纹理缓存读、写操作。本文采用的纹理缓存机制,对二维空间的局部性访问进行了优化,所以通过纹理缓存访问的二维矩阵会获得加速效果。此外,纹理缓存不需要满足全局内存的合并访问条件,从而在随机存取的环境下保持了较高的运算性能。

本文采用的SIFTGPU特征提取流程如图5所示,首先利用高斯核函数对图像进行卷积,创建不同尺度的图像,建立图像的尺度空间;
再对不同尺度的图像进行特征点检测,提取图像中的特征点;
通过计算关键点邻域中点的梯度直方图,选择梯度最大的点的方向,作为该特征点的主方向;
将特征点邻域中所有像素点的梯度作为特征向量,形成特征描述子。

图5 SIFTGPU特征提取流程

SIFTGPU特征提取算法的伪代码如算法2所示。首先对图像进行颜色空间的转换,将RGB图像转换为灰度图像。再构建图像金字塔,first_octave表示图像金字塔的第一层,num_octaves为图像金字塔的层数,num_scales为金字塔每一层的图像缩放尺度。Num为图像的数量,w为图像的宽,h为图像的高。通过sift_new函数进行关键点检测,并获取关键点keys,以及关键点数量nkeys。计算每一个关键点的方向angles,对于关键点每个方向上的特征feature,计算出相应的描述子descriptor。feature中存储的是关键点的位置、尺度和方向,descriptor存储的是归一化后的128维特征向量。最后,将特征点feature与对应的描述子descriptor导出到sFeat,sDesc文件中。

算法2:SIFTGPU特征提取

输入:无人机航拍图像

输出:图像特征点与描述子文件

first_octave ← 0, octaves ← num_octaves

scales ← num_scales

cvtColor(image, img,CV_RGB2GRAY)

w ← img.cols, h ← img.rows

filt ← sift_new(w,h,octaves,scales,first_octave)

keys ← get_keypoints(filt)

nkeys ← get_nkeypoints(filt)

angles[n] ← {0}

for(k=1: nkeys)

nangles←keypoint_orientation(filt,angles,keys+k)

descriptor ←keypoint_descriptor(filt,keys+k, angles[q])

feature ←fp(keys[k].x, keys[k].y,keys[k].sigma, angles[q])

end for

end for

end for

sFeat ← feature

sDesc ← descriptor

本文所采用的SIFTGPU算法构建图像尺度空间的计算过程如下:

将原始图像I(x,y) 与一个可变尺度的二维高斯核函数G(xi,yi,σ) 进行卷积运算,得到图像的尺度空间L(x,y,σ)。

高斯核函数为

(1)

式中:参数σ为高斯平滑因子。

图像的尺度空间为

L(x,y,σ)=G(xi,yi,σ)*I(x,y)

(2)

采用高斯核函数主要有两个原因:①高斯核函数是唯一的尺度不变核函数;
②高斯核函数计算过程简单,执行效率高,并且提取的特征具有很好的鲁棒性。

SIFTGPU[17]算法中不仅使用不同尺度的高斯核函数进行滤波,还引入高斯金字塔,对图像向下采样,逐步降低图像的分辨率,形成一系列以金字塔形状排列的图像,这使得图像具有更高的尺度分辨率。并且,每组图像中包含多层图像,使得相邻尺度的变化比较平滑。在同一组内,不同层图像的尺寸是一样的,后一层图像的高斯平滑因子σ是前一层图像平滑因子的k倍。

如果不使用图像高斯金字塔[18],只在原始分辨率的图像上采用不同的高斯核函数进行多尺度检测,那么在提取粗尺度特征时,会产生很大计算量,造成资源浪费。因为在保持图像原始分辨率不变的情况下,提取粗尺度特征需要高斯核函数的方差较大,相应的滤波窗口也较大,计算量会激增,而图像在大尺度上比较模糊,就没有必要保持图像的原始分辨率,通过构建图像的高斯金字塔,可以高效提取不同尺度的特征。

基于SIFTGPU算法对图像进行特征提取的过程中,并不是所有步骤都在GPU中运行,而是为每个步骤选取最合适的运行方式,充分发挥CPU+GPU架构优越性能。在SIFTGPU算法中,构建图像的尺度空间、生成图像高斯金字塔、建立特征点方向直方图、计算主方向等步骤利用GPU进行加速;
而图像的颜色空间转换、描述子特征向量的归一化等步骤则使用CPU多核并行效率更高。

通过本文SIFTGPU算法对图像进行特征提取,不仅能够快速得到图像的特征,而且得到的SIFT特征具有很好的区分性。SIFT特征对旋转、尺度缩放、亮度变化具有不变性,并且对视角变化、仿射变换、噪声也保持一定程度的稳定性。此外,SIFTGPU算法具有很好的适配性,能够同时兼容Intel集显、ATI和NVIDIA独显。这样在具有不同显卡配置的计算单元上都能够运行SIFTGPU算法,通过GPU加速,并行提取图像中的特征,进而提升三维重建速度。

3.1 实验环境

为了评价本文提出的无人机影像并行图像处理与特征提取算法,利用无人机在室外按照规划的路径进行拍摄,对航拍图像进行测试。实验环境见表1,中央处理器为AMD Ryzen Threadripper 2990 WX 32-Core @ 3.00 GHz,内存16 G,图形处理器为NVIDIA GeForce RTX 2070(8 G),操作系统为Windows10,编程语言为C++。

表1 计算机配置

通过四旋翼无人机拍摄图像,云台相机为索尼DSC-QX30U,相机分辨率2000万像素,照片大小为5184 px×3888 px,图像数量为30,对航拍图像进行三维场景重建。在无人机图像处理,特征提取的速度与特征点数量,以及稀疏点云的重建效果等方面,将本文提出的方法与开源算法openMVG、colmap进行了比较。

3.2 OpenMP并行处理实验分析

针对无人机影像的图像处理,将本文方法与openMVG、colmap开源算法进行了性能对比。见表2,对不同数量的航拍图像,分别从图像的尺度优化、提取图像中的GPS信息以及整体运行时间这3个方面进行了对比,来测试这3种方法的性能。

表2 无人机影像并行处理性能

根据实验结果,在对无人机影像尺度优化方面,本文方法的运行时间平均比openMVG的运行时间快了2.14倍,比colmap的运行时间快了2.41倍;
在提取无人机影像GPS信息方面,本文方法的运行时间平均比openMVG的运行时间快3.22倍,比colmap的运行时间快了3.87倍;
在整体运行时间方面,本文方法的运行时间平均比openMVG的运行时间快2.14倍,比colmap的运行时间快了2.41倍。

根据表2中的数据绘制了时间对比图,如图6所示。随着图像数量的不断增加,本文方法的运行速度明显快于openMVG和colmap方法,并且时间上升趋势缓于openMVG和colmap方法。与openMVG、colmap方法相比,本文方法有更高的图像处理性能。

图6 算法时间对比

从实验结果中可以看出,针对无人机影像的图像处理,本文采用OpenMP并行处理机制,将图像处理任务分配到各个不同的核进行并行计算,充分利用了处理器硬件方面的性能资源,发挥了多核CPU的架构优势。图像预处理算法主要消耗CPU计算资源,并且图像处理过程是单一重复的,基于CPU的并行处理策略,能够大幅提升图像处理速度。本文研究在图像的尺度优化与提取GPS信息两个阶段,利用了OpenMP多线程处理机制,提升了图像的处理速度,为三维重建的后续环节节省了时间。

3.3 SIFTGPU并行特征提取实验分析

在无人机影像的特征提取方面,将本文方法与openMVG、colmap开源算法进行了性能对比。如表3所示,对不同数量的航拍图像,在确保特征质量的前提下,分别从图像的特征点数量与提取时间这两个维度,比较3种算法的性能指标。

表3 无人机影像特征提取性能比较

结果表明,在特征点提取数量方面,本文方法大约是openMVG的4倍,是colmap的3倍,并且其特征描述子均符合阈值要求;
在特征提取消耗时间方面,本文方法大约比openMVG快11倍,比colmap快13倍。

表3给出了特征点数量与处理时间的对比,其结果如图7所示。从中可以看出,随着图像数量的增加,本文方法提取的特征点数量明显优于openMVG和colmap方法,但所用时间更少。

图7 特征点数量与时间对比

本文方法采用了SIFTGPU算法进行特征提取,通过GPU的并行加速,在提高特征点提取速度的同时,特征点数量也得到了很大的提升,从而为三维重建后续环节奠定了坚实的基础。

本文改进的SIFTGPU算法,在图像特征提取过程中,采用CPU+GPU的混合架构方式。如表4所示,这里对SIFTGPU算法的重要步骤,通过不同数量的航拍图像,在处理性能上进行实验分析。并绘制时间对比图,如图8所示。

表4 SIFTGPU算法各个任务阶段在GPU与CPU中的处理性能

图8 SIFTGPU算法各任务阶段运行时间对比

图8(a)中,计算特征点方向、计算特征点描述子等计算量大的步骤在GPU中运行。图8(b)中,图像颜色空间转换、描述子特征向量归一化等计算量小的步骤在CPU中运行。结果表明,运算量大的步骤通过GPU加速,提升运算效率;
而运算量小的步骤在CPU中的运行,其消耗的时间不多,并节省了GPU的计算资源。采用这种GPU与CPU相结合的方式,充分发挥了系统性能,大幅缩短了特征提取时间。

图9对这3种方法的特征提取效果进行了比较,图9(a) 是openMVG方法对航拍图像进行特征提取的效果图;
图9(b)是colmap方法对航拍图像进行特征提取的效果图;
图9(c)是本文方法对航拍图像进行特征提取的效果图。通过这些图像的对比,可以明显看出本文方法提取的特征更加稠密,提取效果明显优于openMVG和colmap方法。

图9 特征点提取效果

为了验证本文方法提取特征点的准确性,将航拍图像进行变换,再对变换后的图像进行特征匹配。由于SIFT特征对旋转、尺度缩放具有不变性,这里对航拍图像进行了缩小、上下翻转。如图10所示,将尺度变换后的图像与原始图像进行特征匹配,相同的特征点采用直线连接。从结果中可以看出,无论是图像缩小,还是图像翻转,特征匹配的连接线依然能够准确连接图像中的特征点,并且十分稠密,表明本文方法提取的特征点具有准确性。

图10 特征匹配效果

本文采用全局式SFM,构建场景的三维点云。通过相邻图像对之间的特征匹配,计算出所有图像对之间相机的旋转与平移,再进行三角测量,计算场景的初始结构。最后,通过光束法平差优化相机位姿和空间物体三维坐标,并剔除异常值,最终得到整个场景的稀疏点云。在全局式SFM重建过程中,先计算所有图像对之间的相对旋转,再计算了全局旋转。在整个三维重建的最后,通过光束法平差,来优化相机位姿和场景点的3D坐标。

如图11所示,基于完整流程,分别对5张、10张以及20张航拍图像进行三维重建,将本文方法与openMVG、colmap算法的稀疏点云重建效果进行对比。图11(a)、图11(d)、图11(g)是openMVG的三维重建结果,图11(b)、图11(e)、图11(h)是colmap的三维重建结果,图11(c)、图11(f)、图11(i)是本文方法的三维重建结果。从图中可以明显看出,本文方法重建的稀疏点云更密集,结构更清楚,甚至可以清晰地看到场景轮廓。

图11 三维场景稀疏点云

通过以上实验的对比分析,采用SIFTGPU算法对无人机影像进行特征提取,能够提取更多的特征点,同时利用GPU进行加速,极大地提高了算法效率。依据本文方法提取的特征点进行完整点云三维重建,构建的三维场景更加稠密,取得了良好的重建效果。

实验结果表明,本文提出的无人机影像并行图像处理与特征提取算法大大提高了计算速度,三维重建结果明显优于传统方法。通过引入OpenMP多线程处理机制与SIFTGPU特征提取算法,不仅提高了三维重建的速度,解决时效性差的问题,而且提升了三维重建的算法性能,使得室外大场景的三维重建效果得到了显著的增强。该算法已经在实际任务中得到了应用,还可推广应用于抢险救灾、应急测绘和安全管控等领域的快速三维重建场景,提升数据获取的效率。在未来,我们将进一步改进算法架构,降低对计算单元的要求,设计轻量化的三维重建算法,将其推广至其它相关领域。此外,在多架无人机上进行在线协同三维重建也是未来的研究方向。

猜你喜欢三维重建线程航拍基于C#线程实验探究山西电子技术(2021年3期)2021-06-28航拍巴彦呼硕时代邮刊·下半月(2020年9期)2020-09-23基于Mimics的CT三维重建应用分析软件(2020年3期)2020-04-20基于国产化环境的线程池模型研究与实现网络安全技术与应用(2020年1期)2020-01-07航拍,苍穹下的醉美视角金桥(2018年6期)2018-09-22难忘的航拍小学生优秀作文(低年级)(2018年6期)2018-05-19《航拍中国》美得让想哭作文通讯·高中版(2017年6期)2017-07-10浅谈linux多线程协作环球市场(2017年36期)2017-03-09基于关系图的无人机影像三维重建光学精密工程(2016年6期)2016-11-07三维重建结合3D打印技术在腔镜甲状腺手术中的临床应用腹腔镜外科杂志(2016年12期)2016-06-01

推荐访问:无人机 并行 重建

版权声明:

1、本网站发布的作文《面向三维重建的无人机影像并行处理技术》为爱作文网注册网友原创或整理,版权归原作者所有,转载请注明出处!

2、本网站作文/文章《面向三维重建的无人机影像并行处理技术》仅代表作者本人的观点,与本网站立场无关,作者文责自负。

3、本网站一直无私为全国中小学生提供大量优秀作文范文,免费帮同学们审核作文,评改作文。对于不当转载或引用本网内容而引起的民事纷争、行政处理或其他损失,本网不承担责任。

热门专题