CN115496835A - 一种基于cpu和gpu异构并行架构的点云数据赋色方法和系统 - Google Patents

一种基于cpu和gpu异构并行架构的点云数据赋色方法和系统 Download PDF

Info

Publication number
CN115496835A
CN115496835A CN202211143691.1A CN202211143691A CN115496835A CN 115496835 A CN115496835 A CN 115496835A CN 202211143691 A CN202211143691 A CN 202211143691A CN 115496835 A CN115496835 A CN 115496835A
Authority
CN
China
Prior art keywords
point cloud
gpu
cpu
color
point
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202211143691.1A
Other languages
English (en)
Other versions
CN115496835B (zh
Inventor
陈琳海
李明锦
张林淇
其他发明人请求不公开姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Lvtu Tujing Technology Co ltd
Beijing Digital Green Earth Technology Co ltd
Original Assignee
Wuhan Lvtu Tujing Technology Co ltd
Beijing Digital Green Earth Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Lvtu Tujing Technology Co ltd, Beijing Digital Green Earth Technology Co ltd filed Critical Wuhan Lvtu Tujing Technology Co ltd
Priority to CN202211143691.1A priority Critical patent/CN115496835B/zh
Publication of CN115496835A publication Critical patent/CN115496835A/zh
Application granted granted Critical
Publication of CN115496835B publication Critical patent/CN115496835B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)

Abstract

本发明公开一种基于CPU和GPU异构并行架构的点云数据赋色方法和系统,其中,点云数据赋色方法包括:CPU对源点云文件中的源点云数据进行分块,读取待赋色点云块并发送至GPU;GPU并行对待赋色点云块中各点与序列影像数据进行匹配,得到待赋色点云块的匹配信息;GPU将匹配信息发送至CPU;CPU读取与匹配信息对应的序列影像数据,将序列影像数据发送至GPU;GPU使用序列影像数据,并行计算待赋色点云块中各点的颜色属性值,得到完成赋色点云块;GPU将完成赋色点云块发送回CPU,CPU将完成赋色点云块的颜色属性回写至源点云文件。本发明的技术方案能解决现有技术中CPU的架构难以实现大量点云数据与序列影像数据的并行匹配和赋色,导致点云数据的赋色效率低下的问题。

Description

一种基于CPU和GPU异构并行架构的点云数据赋色方法和系统
技术领域
本发明涉及机载雷达技术领域,尤其涉及一种基于CPU和GPU异构并行架构的点云数据赋色方法和系统。
背景技术
机载LiDAR,是飞行器上激光探测及测距系统的简称。机载LiDAR能够采用激光对地面物体的高度进行量测,得到点云数据;因此LiDAR测量使用的是激光,得到的是点云。通常情况下机载LiDAR获取的点云数据是无色的,为了获得高质量和高清晰度的点云数据,需要对机载LiDAR得到的点云数据进行赋色处理。
通常情况下,点云数据的赋色主要包含两个步骤:1.点云数据与航线上序列影像数据的匹配;2.针对点云数据中每个点,选择与其匹配的序列影像数据,使用该序列影像数据中的相关像素信息对其颜色属性进行赋值。现有技术主要聚焦于上述步骤1中相关算法的研究与设计,其主要运行环境为CPU。CPU虽然具有通用的基础计算环境,能够实现点云数据文件与序列影像数据文件的IO过程,但是由于CPU的架构设计问题,CPU内核数量过少,只能串行或少量并行计算点云数据,导致其峰值计算能力较低,难以实现大量点云数据与序列影像数据的并行匹配和赋色,导致点云数据的赋色效率低下。
发明内容
本发明提供一种基于CPU和GPU异构并行架构的点云数据赋色方案,,旨在解决现有技术提供的CPU的架构下,难以实现大量点云数据与序列影像数据的并行匹配和赋色,导致点云数据的赋色效率低下的问题。。
根据本发明的第一方面,本发明提出了一种基于CPU和GPU异构并行架构的点云数据赋色方法,包括:
CPU对源点云文件中的源点云数据进行分块,读取待赋色点云块并发送至GPU;
GPU并行对待赋色点云块中各点与序列影像数据进行匹配,得到待赋色点云块的匹配信息,匹配信息包括待赋色点云块中各点相匹配的影像像素;
GPU将待赋色点云块的匹配信息发送至CPU;
CPU读取与待赋色点云块的匹配信息对应的序列影像数据,将序列影像数据发送至GPU;
GPU使用序列影像数据,并行计算待赋色点云块中各点的颜色属性值,得到完成赋色点云块;
GPU将完成赋色点云块发送回CPU,CPU将完成赋色点云块的颜色属性回写至源点云文件。
优选的,上述点云数据赋色方法中,CPU对源点云文件中的源点云数据进行分块,读取待赋色点云块并发送至GPU的步骤包括:
CPU从源点云文件中读取多个待赋色点云块至CPU端的待赋色点云块队列;
CPU从待赋色点云块队列中依次读取待赋色点云块,发送至GPU。
优选的,上述点云数据赋色方法,GPU并行对待赋色点云块中各点与序列影像数据进行匹配的步骤之前,方法还包括:
CPU使用序列影像数据中各影像相机的相机位置信息,建立CPU端相机位置KD树;
CPU将CPU端相机位置KD树复制至GPU,得到GPU端相机位置KD树。
优选的,上述点云数据赋色方法中,GPU并行对待赋色点云块中各点与序列影像数据进行匹配的步骤包括:
设置GPU线程块大小;
根据GPU线程块大小和待赋色点云块的点数,计算待赋色点云块所需的GPU线程网格;
将待赋色点云块中各点的计算任务分配至GPU线程网格中各GPU线程,其中,每个GPU线程对对应的点与序列影像数据进行匹配计算,得到点相匹配的影像像素;
组合待赋色点云块中各点相匹配的影像像素,得到待赋色点云块的匹配信息;
将待赋色点云块的匹配信息复制至CPU。
优选的,上述点云数据赋色方法中,每个GPU线程对对应的点与序列影像数据进行匹配计算,得到点相匹配的影像像素的步骤包括:
GPU线程根据对应点的平面坐标,在GPU端相机位置KD树上搜索邻近Kgpu个相机位置信息,得到点相匹配的候选影像集,其中,候选影像集包含Kgpu个相机位置所摄影像;
GPU线程根据对应点的三维坐标,计算点到Kgpu个相机位置所摄影像的影像像素,得到点对应的影像像素集合。
优选的,上述点云数据赋色方法,在将待赋色点云块的匹配信息复制至CPU的步骤之后还包括:
CPU遍历待赋色点云块的匹配信息,筛选所有影像像素为空的点,得到GPU端匹配失败点集合;
CPU遍历GPU端匹配失败点集合中各点,根据每个点的平面坐标,在CPU端相机位置KD树上搜索邻近Kcpu个相机位置信息,得到点相匹配的候选影像集,其中,候选影像集包括Kcpu个相机位置所摄影像,Kcpu大于Kgpu
CPU根据点的三维坐标,计算点到Kcpu个相机位置所摄影像的影像像素;
CPU使用点到Kcpu个相机位置所摄影像的影像像素更新待赋色点云块的匹配信息。
优选的,上述点云数据赋色方法,CPU读取与待赋色点云块的匹配信息对应的序列影像数据的步骤包括:
CPU根据待赋色点云块的匹配信息中影像ID,从CPU端影像文件中加载序列影像数据至本地影像缓存;
将本地影像缓存中的序列影像数据复制回GPU。
优选的,上述点云数据赋色方法中,GPU使用序列影像数据,并行计算待赋色点云块中各点的颜色属性值的步骤包括:
GPU将待赋色点云块中各点的赋色任务分解至GPU线程块中各GPU线程;
每个GPU线程根据点对应的序列影像数据,计算得到点对应的影像像素集合的颜色值;
使用颜色值计算并设置点的颜色属性。
优选的,上述点云数据赋色方法,GPU将完成赋色点云块发送回CPU,CPU将完成赋色点云块的颜色属性回写至源点云文件的步骤包括:
GPU将完成赋色点云块复制至CPU端的完成赋色点云块队列;
CPU从完成赋色点云块队列中依次提取完成赋色点云块,将完成赋色点云块的颜色属性回写至源点云文件中对应的源点云数据。
根据本发明的第二方面,本发明还提供了一种基于CPU和GPU异构并行架构的点云数据赋色系统,包括:
存储器、处理器及存储在存储器上并可在处理器上运行的点云数据赋色程序,点云数据赋色程序被处理器执行时实现如上述任一项技术方案所述的点云数据赋色方法的步骤。
综上,GPU由于其出色的并行计算能力,十分适合处理块赋色全过程中的计算密集性高的步骤(如点云块与序列影像数据的匹配计算、点利用所匹配的影像集计算颜色值等)。但是一个完整的点云赋色流程不仅仅包含上述计算过程,还包含大量的点云文件IO及序列影像文件IO过程,文件IO只能在CPU侧进行。因此,点云赋色过程需要CPU及GPU这两套异构系统共同配合与支持。本发明所提出的方法可以有效地并行利用CPU及GPU两套异构计算资源。本申请技术方案提供的基于CPU和GPU异构并行架构的点云数据赋色方法,相对于传统串行方法及多核CPU加速方法,对不同点分布的点云数据,显著提高了其赋色全流程运行效率,很大程度上解决了现有技术中点云数据的赋色效率低下的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1是本发明实施例提供的一种CPU和GPU异构并行架构的结构示意图;
图2是本发明实施例提供的第一种基于CPU和GPU异构并行架构的点云数据赋色方法的流程示意图;
图3是本发明实施例提供的第二种基于CPU和GPU异构并行架构的点云数据赋色方法的流程示意图;
图4是图2所示实施例提供的一种待赋色点云块的分块方法的流程示意图;
图5是本发明实施例提供的第三种基于CPU和GPU异构并行架构的点云数据赋色方法的流程示意图;
图6是图2所示实施例提供的一种待赋色点云块的点的匹配方法的流程示意图;
图7是图6所示实施例提供的一种点的计算任务分解方法的流程示意图;
图8是本发明实施例提供的第四种基于CPU和GPU异构并行架构的点云数据赋色方法的流程示意图;
图9是图2所示实施例提供的一种序列影像数据的选取方法的流程示意图;
图10是图2所示实施例提供的一种待赋色点云块的点的赋色方法的流程示意图;
图11是本发明实施例提供的第五种基于CPU和GPU异构并行架构的点云数据赋色方法的流程示意图;
图12是本发明实施例提供的一种基于CPU和GPU异构并行架构的点云数据赋色系统的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1是本发明实施例提供的一种CPU和GPU异构并行架构的总体结构示意图。如图1所示,该CPU和GPU异构并行架构分为CPU端与GPU端;由于完整的机载点云数据量往往非常巨大,因此在赋色过程中,需要在CPU端对点云数据文件进行分块处理,划分为多个待赋色点云块,然后将待赋色点云块依次发往GPU端进行赋色处理。GPU由于其出色的并行计算能力,十分适合处理块赋色全过程中的计算密集性高的步骤,但是一个完整的点云赋色流程不仅仅包含上述计算过程,还包含大量的点云数据文件的IO及序列影像数据文件的IO过程。因为文件IO只能在CPU侧进行,所以点云赋色过程需要CPU及GPU这两套异构系统共同配合与支持。
图1所示的CPU和GPU异构并行架构的主要流程被分解为四类工作线程:待赋色点云块加载线程threadblock_loading、GPU计算服务调取线程threadgpu_launching、影像数据加载线程threadimage_loading、完成赋色点云块回写线程threadblock_writing_back;其中,
待赋色点云块加载线程threadblock_loading负责从源点云文件中加载块至待赋色点云块列队;
影像数据加载线程threadimage_loading负责从点云所对应序列影像文件中加载影像数据至影像缓存;
GPU计算服务调取线程threadgpu_launching负责从待赋色点云块列队中取块,调取GPU完成块与序列影像的并行匹配;并对块中匹配失败的点在CPU上进行重匹配后处理,之后从影像缓存中读取块所匹配的影像集合,调取GPU完成点云块的并行颜色属性计算,并将完成赋色点云块复制至CPU端后放入完成赋色点云块队列;
完成赋色点云块回写线程threadblock_writing_back负责从完成赋色点云块队列取块,将块的赋色结果回写至源点云文件。
对应到图1所示的CPU和GPU异构并行架构,该架构主要流程如下:
步骤1:加载待赋色点云块;主要从源点云文件中读取待赋色块到待赋色点云块队列,该步骤对应的线程即上述待赋色点云块加载线程threadblock_loading
步骤2:取待赋色点云块并复制至显存后发起GPU端待赋色点云块与序列影像数据的匹配服务。
步骤3:匹配结果复制回CPU端内存并发起CPU投影后处理。
步骤4:完成CPU投影后处理后按需获取待赋色点云块所对应的序列影像数据。
步骤5:加载序列影像数据到本地影像缓存;主要用于从序列影像数据文件中读取序列影像数据到本地影像缓存,该步骤对应的线程即上述影像数据加载线程threadimage_loading
步骤6:序列影像数据复制至本地影像缓存并发起GPU端点云赋色服务;调取GPU计算服务对待赋色点云块进行赋色的相关过程,计算得到显存中的完成赋色点云块。
步骤7:将完成赋色点云块拷贝回CPU端内存并放入完成赋色点云块队列;将其复制回CPU内存得到内存中完成赋色点云块,并将内存中的完成赋色点云块放入完成赋色点云块队列,该步骤对应的线程即上述GPU计算服务调取线程threadgpu_launching
步骤8:取完成赋色点云块并回写块颜色值;从完成赋色点云块队列取出内存中完成赋色点云块,将其颜色值回写源点云文件,该步骤对应的线程即上述完成赋色点云块回写线程threadblock_writing_back
图1所示的CPU和GPU异构并行架构,其具体实施过程如图2所示。图2是本发明实施例提供的一种基于CPU和GPU异构并行架构的点云数据赋色方法的流程示意图。如图2所示,该基于CPU和GPU异构并行架构的点云数据赋色方法,包括:
S110:CPU对源点云文件中的源点云数据进行分块,读取待赋色点云块并发送至GPU。因为完整的机载点云数据,其数据量是非常大的,为了提高点云数据的匹配和赋色效率,本申请实施例中在CPU端对源点云文件进行分块处理,得到多个待赋色点云块。各待赋色点云块依次发往GPU端进行匹配序列影像数据和使用序列影像数据进行赋色处理。通过分块处理能够提高点云的赋色效率。
S120:GPU并行对待赋色点云块中各点与序列影像数据进行匹配,得到待赋色点云块的匹配信息,匹配信息包括待赋色点云块中各点相匹配的影像像素。GPU拥有数以千计的计算核心,所以GPU具有出色的并行计算能力,能够适合处理待赋色点云块的赋色全过程的计算密集性高的步骤。GPU端计算服务包括两个字服务:1.待赋色点云块与序列影像数据的匹配;2.待赋色点云块中各点的颜色值计算与赋值。其中待赋色点云块所有点与序列影像数据的投影的匹配如下:待赋色点云块中各点通过K邻近搜索从序列影像数据中查找出待匹配的投影像素,进而使用多个投影像素得到待匹配的候选影像集,然后待赋色点云块中点向候选影像集投影计算确定有效匹配影像集。通过上述方式能够对每一待赋色点云块中所有点与序列影像数据进行快速匹配。
S130:GPU将待赋色点云块的匹配信息发送至CPU。
S140:CPU读取与待赋色点云块的匹配信息对应的序列影像数据,将序列影像数据发送至GPU。赋色过程主要包括将经过CPU投影处理后的投影集合复制至GPU的显存,得到更新后的投影集合,在CPU端将投影集合对应的一系列影像ID发送至上述线程threadimage_loading,等待该线程将影像ID对应的序列影像数据发送至本地影像缓存后,使用投影集合从本地影像缓存中调取对应的影像数据复制回GPU。通过上述IO过程,能够协同使用CPU和GPU的异构并行架构快速完成序列影像数据的匹配和传输过程
S150:GPU使用序列影像数据,并行计算待赋色点云块中各点的颜色属性值,得到完成赋色点云块。使用待赋色点云块、投影集合和序列影像数据包含的像素颜色值在GPU端进行赋色,利用上述待赋色点云块的匹配过程中设置的GPU线程网格和GPU线程块等参数将待赋色点云块的各点的赋色任务分解至GPU线程快和各GPU线程,使用投影集合包含的影像ID及影像像素坐标,通过序列影像数据得到一系列与点对应的像素颜色值,通过上述像素颜值值计算得到待赋色点云块中各点的颜色属性,从而得到赋色完成的点云块。
S160:GPU将完成赋色点云块发送回CPU,CPU将完成赋色点云块的颜色属性回写至源点云文件。完成赋色点云块队列与上述待赋色点云块队列的数目相匹配。并且从上述待赋色点云块队列取出的各待赋色点云块依次赋色后均能够按原有顺序依次存入完成赋色点云块,便于使用完成赋色点云块对源点云文件进行准确赋色。通过在完成待赋色点云块各点的颜色值计算与设置后得到完成赋色点云块,将完成赋色点云块从显存复制回CPU端内存,并放入完成赋色点云块队列中。通过将完成赋色点云块的颜色值回写源点云文件中对应的待赋色点云块数据,或者整体替换原有的待赋色点云块数据,直至源点云文件回写完毕,从而能够快速完成大量点云块的赋色任务,提高点云块的赋色效率。
综上,本发明上述实施例提供的基于CPU和GPU异构并行架构的点云数据赋色方法,通过CPU对源点云文件中的点云数据进行分块得到多个待赋色点云块,并发送至GPU;因为GPU提供了多核并行计算的基础结构,且其核心数非常多,可以支撑大量数据的并行计算,因此GPU能够并行启动大量线程对每一待赋色点云块中所有点与序列影像数据进行投影匹配,得到赋色点云块的投影集合并发送至CPU;因为文件IO只能在CPU侧进行,因此本申请技术方案提供的点云数据赋色过程需要CPU和GPU两套异构系统共同配合,在CPU中选取与待赋色点云块的投影集合对应的序列影像数据,将该序列影像数据发送至GPU,使用GPU的大量线程对待赋色点云块中所有点并行计算和配置颜色属性,得到对应的完成赋色点云块。通过上述方案可知,本申请实施例提供的基于CPU和GPU异构并行架构的点云数据赋色方法,相对于传统的串行处理方法及多核CPU(现有的CPU核心数量较少,大多不超过10个)加速方法,能够针对不同点分布的点云数据进行序列影像数据的投影匹配和赋色,显著提高了其赋色计算效率,进而解决了现有技术中多核CPU难以实现并行匹配和赋色,点云数据的赋色效率低下的问题。
另外,作为一种优选的实施例,如图3所示,上述点云数据赋色方法中,步骤S110:CPU对源点云文件中的源点云数据进行分块,读取待赋色点云块并发送至GPU的步骤包括:
S111:CPU从源点云文件中读取多个待赋色点云块至CPU端的待赋色点云块队列。由于完整的机载点云数据量较为庞大;在赋色过程中,需要在CPU端对源点云文件中的源点云数据进行分块处理,并写入待赋色点云块队列,由待赋色点云块队列发送至GPU进行点云块内所有点的并行匹配和赋色,提高匹配和赋色效率。
S112:CPU从待赋色点云块队列中依次读取待赋色点云块,发送至GPU。
本申请实施例提供的技术方案中,源点云文件中读取待赋色点云块的数据写入待赋色点云块队列,然后按队列顺序依次取出待赋色点云块至GPU,从而提高GPU对待赋色点云数据的匹配和赋色效率。
另外,作为一种优选的实施例,如图4所示,上述点云数据赋色方法,在原步骤S120:GPU并行对待赋色点云块中各点与序列影像数据进行匹配的步骤之前还包括:
S310:CPU使用序列影像数据中各影像相机的相机位置信息,建立CPU端相机位置KD树。
S320:CPU将CPU端相机位置KD树复制至GPU,得到GPU端相机位置KD树。
本申请实施例提供的技术方案,在调取GPU端计算服务之前,在CPU端能够利用航线POS解算数据中包含的序列影像数据中各影像相机的位置坐标数据,在CPU内存的顺序表中建立相机位置KD树。
将相机位置KD树所占据的顺序表的内存数据复制到GPU显存,获得GPU端相机位置KD树。因为该相机位置KD树包含各影像相机的相机位置信息,包括相机的位置坐标和内外方位角等信息,所以使用该相机位置KD树能够将待赋色点云块中的点与序列影像数据建立匹配关系,从而提高GPU的匹配精准度。
另外,作为一种优选的实施例,如图5所示,上述点云数据赋色方法中,步骤S120:GPU并行对待赋色点云块中各点与序列影像数据进行匹配的步骤包括:
S121:设置GPU线程块大小。
S122:根据GPU线程块大小和待赋色点云块的点数,计算待赋色点云块所需的GPU线程网格。
S123:将待赋色点云块中各点的计算任务分配至GPU线程网格中各GPU线程,其中,每个GPU线程对对应的点与序列影像数据进行匹配计算,得到点相匹配的影像像素。
S124:组合待赋色点云块中各点相匹配的影像像素,得到待赋色点云块的匹配信息。
S125:将待赋色点云块的匹配信息复制至CPU。
本申请实施例提供的技术方案中,从待赋色点云块队列中取出待赋色点云块,其所有点的点数记为sizeblock,将该点数sizeblock复制至GPU显存,得到GPU端待赋色点云块。
然后,设置GPU线程块BlockDim大小,则GPU线程网格GridDim大小为(sizeblock+BlockDim-1)/BlockDim;GPU线程网格能够对应处理一个待赋色点云块,因此本申请实施例中能够将GPU端待赋色点云块中各点的计算任务分解至GPU线程块及GPU线程块中的各线程,其中,一个GPU线程处理一个点的计算任务。
另外,作为一种优选的实施例,如图6所示,上述点云数据赋色方法中,步骤S123:每个GPU线程对对应的点与序列影像数据进行匹配计算,得到点相匹配的影像像素的步骤包括:
S1231:GPU线程根据对应点的平面坐标,在GPU端相机位置KD树上搜索邻近Kgpu个相机位置信息,得到点相匹配的候选影像集;其中,候选影像集包含Kgpu个相机位置所摄影像;
S1232:GPU线程根据对应点的三维坐标,计算点到Kgpu个相机位置所摄影像的影像像素,得到点对应的影像像素集合。
本申请实施例提供的技术方案中,每个点的计算任务如下:利用点的平面坐标(Xpoint,Ypoint),在GPU端相机位置KD树上搜索得到距离最近的Kgpu个相机位置;然后利用点的三维坐标(Xpoint,Ypoint,Zpoint)、相机所摄影像中的相机坐标和相机内方位元素等数据,计算点向相机所摄影像的投影,若点向相机所摄影像的投影点位于影像范围(上述kgpu个相机位置信息相当于kgpu张图像,影像范围即图像的尺寸范围)内,则得到投影像素(Xpixel,Ypixel),若超出影像范围,则投影失败。上述过程得到点向相机所摄影像的所有投影点,能够得到点对应的投影集合,若正常情况下kgpu个相机位置对应的所有图像都会得到投影点,因此投影集合最多包括kgpu个投影点。
另外,由于GPU端显存的容量有限,且显存通常未如CPU一样使用磁盘页文件作为后备内存以支持自身的虚拟内存系统,所以为防显存的溢出,增强方法实际运行的稳定性,GPU上面的Kgpu的设置一般不能过大。在这种情况下,GPU中点对应的投影可能为空,即点未能在GPU端找到待匹配的影像集合。为了避免上述情况,本申请实施例中可在CPU端查找并匹配点向相机所摄影像的投影,进而得到投影集合。
具体地,作为一种优选的实施例,如图7所示,上述点云数据赋色方法,在步骤S130:GPU将待赋色点云块的匹配信息发送至CPU的步骤之后还包括:
S410:CPU遍历待赋色点云块的匹配信息,筛选所有影像像素为空的点,得到GPU端匹配失败点集合。影像像素为空的点即上述GPU未对点匹配到Kgpu个相机位置所摄影像的影像像素的点,这些点匹配失败通常是因为Kgpu取值过小造成。
S420:CPU遍历GPU端匹配失败点集合中各点,根据每个点的平面坐标,在CPU端相机位置KD树上搜索邻近Kcpu个相机位置信息,得到点相匹配的候选影像集,其中,候选影像集包括Kcpu个相机位置所摄影像,Kcpu大于Kgpu
S430:CPU根据点的三维坐标,计算点到Kcpu个相机位置所摄影像的影像像素。
S440:CPU使用点到Kcpu个相机位置所摄影像的影像像素更新待赋色点云块的匹配信息。
本申请上述实施例提供的技术方案,需在CPU端对上述投影失败的点进行进行后处理,重新进行投影计算。其过程为:遍历GPU端投影集合,找到投影集合为空的点;然后在CPU端相机位置KD树上,以相对于Kgpu更大的参数Kcpu,搜索得到距离该点最近的Kcpu个相机位置信息,并计算得到点向kcpu所摄影像的投影集合,利用待赋色点云块中所有点向相机所摄影像的投影集合,更新得到新的待赋色点云块的投影集合,然后将该新的投影集合返回GPU,以便于GPU根据该投影集合对待赋色点云块中的各个点赋色。通过上述方式,能够使用CPU选择较大的k值计算点向相机所摄影像的投影,从而准确得到每个待赋色点云块中所有点对应的投影点。
因为一个完整的点云赋色流程不仅包含上述投影的匹配计算过程,还包含大量的点云文件IO及序列影像数据文件的IO过程。而文件的IO过程只能在CPU侧进行。因此,点云赋色过程需要CPU及GPU这两套异构系统共同配合与支持。
针对序列影像数据文件的IO过程,具体地,如图8所示,作为一种优选的实施例,上述点云数据赋色方法中,上述CPU读取与待赋色点云块的匹配信息对应的序列影像数据的步骤包括:
S141:CPU根据待赋色点云块的匹配信息中影像ID,从CPU端影像文件中加载序列影像数据至本地影像缓存。
S142:将本地影像缓存中的序列影像数据复制回GPU。
本申请实施例提供的技术方案中,将经过CPU端投影后更新的待赋色点云块的匹配信息复制至显存;然后在CPU端将更新后的待赋色点云块的匹配信息对应的一系列影像ID发送至上述线程threadimage_loading,等待threadimage_loading将所需的序列影像数据加载入本地影像缓存后,从本地影像缓存中获取对应的序列影像数据,匹配信息所需的序列影像数据为CPU端影像像素集合,将其复制到GPU的显存得到GPU端影像像素集合。待赋色点云块内各点具有较强的空间邻近性,因此待赋色点云块内各点所投影的影像像素集合具有较强的空间局部性,影像缓存的使用较大程度上减少了线程加载影像文件的次数,已载入影像缓存的影像数据在下次需要时,无需重新加载。
另外,作为一种优选的实施例,如图10所示,上述点云数据赋色方法的步骤S150:GPU使用序列影像数据,并行计算待赋色点云块中各点的颜色属性值,包括以下步骤:
S151:GPU将待赋色点云块中各点的赋色任务分解至GPU线程块中各GPU线程。
S152:每个GPU线程根据点对应的序列影像数据,计算得到点对应的影像像素集合的颜色值。
S153:使用颜色值计算并设置点的颜色属性。
本申请实施例提供的技术方案,使用待赋色点云块、更新后的影像像素集合和序列影像数据在GPU端进行赋色。利用上述待赋色点云块和序列影像数据的匹配步骤中设置的GPU线程块和GPU线程网络等参数,将待赋色点云块中各点的赋色计算任务分解至GPU线程块及各GPU线程,一个GPU线程处理一个点的计算任务。每个点的处理过程如下:1.由GPU端更新后的影像像素集合获取各点对应的一系列影像ID及影像像素坐标,再由序列影像数据得到一系列像素颜色值。2.由上述步骤中的一系列像素颜色值,计算并设置GPU端待赋色点云块中各点的颜色属性值。通过上述方法,能够使用GPU的GPU线程网络并行处理待赋色点云块中各点的赋色任务,提高待赋色点云数据的赋色效率。
在完成GPU端待赋色点云块中各点的颜色值计算与设置后,得到GPU端完成赋色点云块,将GPU端完成赋色点云块从显存复制回CPU的内存,得到CPU端完成赋色点云块,并放入完成赋色点云块队列中;具体如图10所示,包括以下步骤:
S161:GPU将完成赋色点云块复制至CPU端的完成赋色点云块队列;
S162:CPU从完成赋色点云块队列中依次提取完成赋色点云块,将完成赋色点云块的颜色属性回写至源点云文件中对应的源点云数据。
另外,以各工作线程为视角,基于CPU和GPU异构并行架构的机载LiDAR数据赋色方法总体流程如图11所示。具体步骤如下:
步骤501:加载待赋色点云块至待赋色点云块队列:线程threadblock_loading在CPU端,从源点云文件中读取待赋色点云数据,放入待赋色点云块队列中。
步骤502:从待赋色点云块队列中取出待赋色点云块并复制到GPU显存:threadblock_loading端从待赋色点云队列中取出待赋色点云块。
步骤503:在CPU端内存中建立相机位置KD树并复制到GPU显存:线程threadgpu_launching在CPU端建立CPU端相机位置KD树。
步骤504:发起GPU端块与影像匹配服务:线程threadgpu_launching在CPU端读取航行解算数据;线程threadgpu_launching将CPU端相机位置KD树、航行解算数据和待赋色点云块复制到显存后,发起GPU端点云块与序列影像数据的匹配服务。
步骤505:将匹配结果复制回CPU端内存并进行匹配失败点的后处理。线程threadgpu_launching在完成匹配服务后得到GPU端点云块的投影集合,将GPU端点云块的投影集合复制至CPU端内存,得到CPU端点云块的投影集合,在CPU进行块中投影失败点的投影后处理得到CPU端更新后的点云块的投影集合。
步骤506:向影像加载线程发送请求并等待获取序列影像数据。线程threadgpu_launching向线程threadimage_loading发送影像读取请求并等待从影像缓存中读取所需的影像集。
步骤507:根据影像加载请求加载数据到本地影像缓存。
步骤508:将序列影像数据和更新后的影像像素集合复制至GPU显存,发起GPU端赋色服务。线程threadimage_loading在获取所需的影像集后,将GPU端更新后的点云块的影像像素集合和序列影像数据复制到显存,连同已载入显存的待赋色点云块,发起GPU端的点云块的赋色服务。
步骤509:GPU赋色结果复制回CPU端内存,放入赋色完成队列;在完成GPU端赋色后得到GPU端完成赋色点云块,将该GPU端完成赋色点云块复制回内存,得到CPU端完成赋色点云块,并将其放入完成完成赋色点云块队列。
另外,线程threadimage_loading在收到线程threadgpu_launching发送的影像加载请求后,将所需影像从文件载入影像缓存,若影像已经存在于影像缓存,则直接返回该影像数据。
步骤510:线程threadblock_writing_back从完成赋色点云块队列中取出完成赋色点云块,将其颜色值回写到源点云文件。
基于上述方法实施例的同一构思,本发明实施例还提供了基于CPU和GPU异构并行架构的点云数据赋色系统,用于实现本发明的上述方法,由于该系统实施例解决问题的原理与方法相似,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。
参见图12,图12为本发明还提供了一种基于CPU和GPU异构并行架构的点云数据赋色系统,包括:
处理器1001、通信线路1002、通信模块1003、存储器1004及存储在存储器1004上并可在处理器1001上运行的点云数据赋色程序,点云数据赋色程序被处理器1001执行时实现如上述任一项实施例提供的点云数据赋色方法的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种基于CPU和GPU异构并行架构的点云数据赋色方法,其特征在于,包括:
CPU对源点云文件中的源点云数据进行分块,读取待赋色点云块并发送至GPU;
所述GPU并行对所述待赋色点云块中各点与序列影像数据进行匹配,得到待赋色点云块的匹配信息,所述匹配信息包括所述待赋色点云块中各点相匹配的影像像素;
所述GPU将所述待赋色点云块的匹配信息发送至所述CPU;
所述CPU读取与所述待赋色点云块的匹配信息对应的序列影像数据,将所述序列影像数据发送至所述GPU;
所述GPU使用所述序列影像数据,并行计算所述待赋色点云块中各点的颜色属性值,得到完成赋色点云块;
所述GPU将所述完成赋色点云块发送回所述CPU,所述CPU将所述完成赋色点云块的颜色属性回写至所述源点云文件。
2.根据权利要求1所述的点云数据赋色方法,其特征在于,所述CPU对源点云文件中的源点云数据进行分块,读取待赋色点云块并发送至GPU的步骤,包括:
所述CPU从源点云文件中读取多个待赋色点云块至CPU端的待赋色点云块队列;
所述CPU从所述待赋色点云块队列中依次读取所述待赋色点云块,发送至所述GPU。
3.根据权利要求1所述的点云数据赋色方法,其特征在于,所述GPU并行对所述待赋色点云块中各点与序列影像数据进行匹配的步骤之前,所述方法还包括:
所述CPU使用所述序列影像数据中各影像相机的相机位置信息,建立CPU端相机位置KD树;
所述CPU将所述CPU端相机位置KD树复制至所述GPU,得到GPU端相机位置KD树。
4.根据权利要求3所述的点云数据赋色方法,其特征在于,所述GPU并行对所述待赋色点云块中各点与序列影像数据进行匹配的步骤,包括:
设置GPU线程块大小;
根据所述GPU线程块大小和待赋色点云块的点数,计算所述待赋色点云块所需的GPU线程网格;
将所述待赋色点云块中各点的计算任务分配至所述GPU线程网格中各GPU线程,其中,每个GPU线程对对应的点与序列影像数据进行匹配计算,得到所述点相匹配的影像像素;
组合所述待赋色点云块中各点相匹配的影像像素,得到所述待赋色点云块的匹配信息;
将所述待赋色点云块的匹配信息复制至所述CPU。
5.根据权利要求4所述的点云数据赋色方法,其特征在于,所述每个GPU线程对对应的点与序列影像数据进行匹配计算,得到所述点相匹配的影像像素的步骤,包括:
所述GPU线程根据对应点的平面坐标,在所述GPU端相机位置KD树上搜索邻近Kgpu个相机位置信息,得到点相匹配的候选影像集,所述候选影像集包含Kgpu个相机位置所摄影像;
所述GPU线程根据对应点的三维坐标,计算点到所述Kgpu个相机位置所摄影像的影像像素,得到点对应的影像像素集合。
6.根据权利要求5所述的点云数据赋色方法,其特征在于,所述将所述待赋色点云块的匹配信息复制至所述CPU的步骤之后,还包括:
所述CPU遍历所述待赋色点云块的匹配信息,筛选所有影像像素为空的点,得到GPU端匹配失败点集合;
所述CPU遍历所述GPU端匹配失败点集合中各点,根据每个点的平面坐标,在所述CPU端相机位置KD树上搜索邻近Kcpu个相机位置信息,得到点相匹配的候选影像集,其中,所述候选影像集包括Kcpu个相机位置所摄影像,Kcpu大于Kgpu
所述CPU根据所述点的三维坐标,计算点到所述Kcpu个相机位置所摄影像的影像像素;
所述CPU使用所述点到Kcpu个相机位置所摄影像的影像像素更新所述待赋色点云块的匹配信息。
7.根据权利要求1所述的点云数据赋色方法,其特征在于,所述CPU读取与所述待赋色点云块的匹配信息对应的序列影像数据的步骤,包括:
所述CPU根据所述待赋色点云块的匹配信息中影像ID,从CPU端影像文件中加载序列影像数据至本地影像缓存;
将所述本地影像缓存中的序列影像数据复制回所述GPU。
8.根据权利要求5所述的点云数据赋色方法,其特征在于,所述GPU使用所述序列影像数据,并行计算待赋色点云块中各点的颜色属性值的步骤,包括:
所述GPU将所述待赋色点云块中各点的赋色任务分解至所述GPU线程块中各GPU线程;
每个GPU线程根据点对应的序列影像数据,计算得到点对应的影像像素集合的颜色值;
使用所述颜色值计算并设置点的颜色属性。
9.根据权利要求1所述的点云数据赋色方法,其特征在于,所述GPU将所述完成赋色点云块发送回所述CPU,所述CPU将所述完成赋色点云块的颜色属性回写至所述源点云文件的步骤,包括:
所述GPU将所述完成赋色点云块复制至CPU端的完成赋色点云块队列;
所述CPU从所述完成赋色点云块队列中依次提取所述完成赋色点云块,将所述完成赋色点云块的颜色属性回写至所述源点云文件中对应的源点云数据。
10.一种基于CPU和GPU异构并行架构的点云数据赋色系统,其特征在于,包括:
存储器、处理器及存储在所述存储器上并可在所述处理器上运行的点云数据赋色程序,其中,所述处理器为CPU和GPU异构并行架构,所述点云数据赋色程序被所述处理器执行时实现如权利要求1-9中任一项所述的点云数据赋色方法的步骤。
CN202211143691.1A 2022-09-20 2022-09-20 一种基于cpu和gpu异构并行架构的点云数据赋色方法和系统 Active CN115496835B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211143691.1A CN115496835B (zh) 2022-09-20 2022-09-20 一种基于cpu和gpu异构并行架构的点云数据赋色方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211143691.1A CN115496835B (zh) 2022-09-20 2022-09-20 一种基于cpu和gpu异构并行架构的点云数据赋色方法和系统

Publications (2)

Publication Number Publication Date
CN115496835A true CN115496835A (zh) 2022-12-20
CN115496835B CN115496835B (zh) 2023-10-20

Family

ID=84471224

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211143691.1A Active CN115496835B (zh) 2022-09-20 2022-09-20 一种基于cpu和gpu异构并行架构的点云数据赋色方法和系统

Country Status (1)

Country Link
CN (1) CN115496835B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117078825A (zh) * 2023-09-04 2023-11-17 山东捷瑞信息技术产业研究院有限公司 一种点云数据线上渲染修改方法、系统、设备及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170221238A1 (en) * 2016-02-03 2017-08-03 Daniel Limberger Interactive, Adaptive Level-Of-Detail In 2.5D Treemaps
US20170236322A1 (en) * 2016-02-16 2017-08-17 Nvidia Corporation Method and a production renderer for accelerating image rendering
CN111540063A (zh) * 2020-04-15 2020-08-14 富德康(北京)科技股份有限公司 一种基于多站激光点云数据全自动高精度拼接方法
CN112465849A (zh) * 2020-11-27 2021-03-09 武汉大学 一种无人机激光点云与序列影像的配准方法
CN113190515A (zh) * 2021-05-14 2021-07-30 重庆市勘测院 基于异构并行计算的城市级海量点云坐标转换方法
CN113674354A (zh) * 2021-08-30 2021-11-19 上海交通大学 一种三维重建方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170221238A1 (en) * 2016-02-03 2017-08-03 Daniel Limberger Interactive, Adaptive Level-Of-Detail In 2.5D Treemaps
US20170236322A1 (en) * 2016-02-16 2017-08-17 Nvidia Corporation Method and a production renderer for accelerating image rendering
CN111540063A (zh) * 2020-04-15 2020-08-14 富德康(北京)科技股份有限公司 一种基于多站激光点云数据全自动高精度拼接方法
CN112465849A (zh) * 2020-11-27 2021-03-09 武汉大学 一种无人机激光点云与序列影像的配准方法
CN113190515A (zh) * 2021-05-14 2021-07-30 重庆市勘测院 基于异构并行计算的城市级海量点云坐标转换方法
CN113674354A (zh) * 2021-08-30 2021-11-19 上海交通大学 一种三维重建方法及系统

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
LIN HU ET AL: "Massively Parallel Algorithms for Point Cloud Based Object Recognition on Heterogeneous Architecture", 《DISSERTATION,MASTER\'S THESES AND MASTER\'S REPORTS》, pages 1 - 88 *
叶立志: "机载LiDAR与影像密集匹配点云数据的滤波方法研究", 《中国博士学位全文数据库 信息科技辑》, no. 6, pages 1 - 126 *
宋杨;曾凡洋;李长辉;钟若飞;: "基于共线原理的全景影像真彩色点云生成算法", 测绘工程, no. 04, pages 1 - 5 *
崔家武: "MPI并行技术在测绘数据处理中的应用", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 2, pages 1 - 98 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117078825A (zh) * 2023-09-04 2023-11-17 山东捷瑞信息技术产业研究院有限公司 一种点云数据线上渲染修改方法、系统、设备及介质
CN117078825B (zh) * 2023-09-04 2024-05-28 山东捷瑞信息技术产业研究院有限公司 一种点云数据线上渲染修改方法、系统、设备及介质

Also Published As

Publication number Publication date
CN115496835B (zh) 2023-10-20

Similar Documents

Publication Publication Date Title
CN110163903B (zh) 三维图像的获取及图像定位方法、装置、设备和存储介质
US10269147B2 (en) Real-time camera position estimation with drift mitigation in incremental structure from motion
US10269148B2 (en) Real-time image undistortion for incremental 3D reconstruction
CN111968229B (zh) 高精度地图制图方法及装置
US20190355150A1 (en) Detecting and estimating the pose of an object using a neural network model
US20180315232A1 (en) Real-time incremental 3d reconstruction of sensor data
CN110766778B (zh) 使用散列执行并行路径空间滤波的方法和系统
CN110648363B (zh) 相机姿态确定方法、装置、存储介质及电子设备
WO2021228031A1 (zh) 渲染方法、设备以及系统
JP2020507853A (ja) 3次元点群の再構成のための方法および装置
CN113112579A (zh) 渲染方法、装置、电子设备和计算机可读存储介质
CN111445581A (zh) 使用数据驱动先验的网格重建
CN113223078B (zh) 标志点的匹配方法、装置、计算机设备和存储介质
US20240095993A1 (en) Reducing false positive ray traversal in a bounding volume hierarchy
CN115496835B (zh) 一种基于cpu和gpu异构并行架构的点云数据赋色方法和系统
CN111539997A (zh) 基于gpu计算平台的图像并行配准方法、系统、装置
CN111161398A (zh) 一种图像生成方法、装置、设备及存储介质
CN112041894A (zh) 渲染期间提高涉及水面的场景的真实感
Ma et al. Research on the application of visual SLAM in embedded GPU
CN110222410B (zh) 一种基于Hadoop MapReduce的电磁环境仿真方法
CN113822975B (zh) 用于对图像进行有效采样的技术
CN104200508A (zh) 基于Intel众核架构对等模式的光线追踪加速方法
US20210110202A1 (en) 3d object detection from calibrated 2d images
US11829119B2 (en) FPGA-based acceleration using OpenCL on FCL in robot motion planning
US20240095995A1 (en) Reducing false positive ray traversal using ray clipping

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant