CN115661316A - 点云数据渲染方法、装置、设备及存储介质 - Google Patents

点云数据渲染方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN115661316A
CN115661316A CN202211229026.4A CN202211229026A CN115661316A CN 115661316 A CN115661316 A CN 115661316A CN 202211229026 A CN202211229026 A CN 202211229026A CN 115661316 A CN115661316 A CN 115661316A
Authority
CN
China
Prior art keywords
point cloud
cloud data
rendering
memory
task
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.)
Pending
Application number
CN202211229026.4A
Other languages
English (en)
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.)
Chongqing Changan Automobile Co Ltd
Original Assignee
Chongqing Changan Automobile 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 Chongqing Changan Automobile Co Ltd filed Critical Chongqing Changan Automobile Co Ltd
Priority to CN202211229026.4A priority Critical patent/CN115661316A/zh
Publication of CN115661316A publication Critical patent/CN115661316A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Image Generation (AREA)

Abstract

本申请提供一种点云数据渲染方法、装置、设备及存储介质,该方法通过获取点云数据,将点云数据存储于预设共享内存中,生成点云数据的待处理任务,以及待处理任务通知,基于多个任务处理线程的线程工作状态,将待处理任务分配给一个线程工作状态为空闲的任务处理线程,将处理结果通过目标渲染刷新缓存进行渲染,能够降低点云数据在内存中的拷贝成本,在大批量的点云数据的场景下,能够提升点云数据的处理速度,降低处理结果的等待渲染时长,实现对点云数据进行快速渲染,满足智能网联汽车的数据时效性需求。

Description

点云数据渲染方法、装置、设备及存储介质
技术领域
本发明实施例涉及计算机技术领域,具体涉及一种点云数据渲染方法、装置、设备及存储介质。
背景技术
近年来,随着自动驾驶技术的发展,激光雷达在自动驾驶的使用几乎成为必备设备。在市场的推动下,激光雷达在硬件方面获得了突破,在实用性方面取得了长足的进步,被越来越多地应用到实际生产中,利用物联网技术也得到突破性的发展,在很多场景,布设了大量的采集数据的传感器,在一些科研项目,如光学、声学、力学和电磁分析等,很多算法软件通过复杂的计算,如有限元分析等,产生大量的数据,在医学领域,一些物理检测也能获得大量的数据,然后基于算法,进行影像呈现,这些数据很多都是基于三维空间节点的点云数据,如何对这些数据加以利用,将冰冷的数据变成鲜活的影像,然后被引用、处理、分析和计算,是一个热门的研究方向。
由于硬件设备的技术性能提升,点云数据刷新速度更快、数量更多,基于目前的一般性能的激光雷达基本在10ms左右的刷新速率,甚至更快。点云的数量基本都在十多万以上。在自动驾驶过程中对每个环节的时间都是严格规定的,进行目标识别、可行驶区域的确定等方面均涉及到对点云数据的快速计算。亟需一种快速的对点云数据进行渲染的点云数据处理方式,以满足智能网联汽车的数据时效性需求。
发明内容
鉴于以上所述现有技术的缺点,本发明实施例提供一种点云数据渲染方法、装置、设备及存储介质,以解决上述技术问题。
本发明实施例提供的点云数据渲染方法,所述方法包括:获取点云数据;将所述点云数据存储于预设共享内存中,生成所述点云数据的待处理任务,以及所述待处理任务通知,所述待处理任务通知包括所述点云数据在所述预设共享内存中的内容地址和内容数据大小信息;基于多个任务处理线程的线程工作状态,将所述待处理任务分配给一个线程工作状态为空闲的所述任务处理线程,所述任务处理线程用于基于所述内容地址和所述内容数据大小信息从所述预设共享内存中读取所述点云数据,并进行处理;将处理结果通过目标渲染刷新缓存进行渲染,所述目标渲染刷新缓存为至少两个预设渲染刷新缓存中的一个,各所述预设渲染刷新缓存轮流确定为所述目标渲染刷新缓存。
于本发明一实施例中,将所述点云数据存储于预设共享内存中之前,所述点云数据渲染方法还包括:获取所述点云数据的点云数据大小,以及所述预设共享内存的剩余内存空间的剩余内存大小;若所述点云数据大小大于所述剩余内存大小,根据所述点云数据大小和所述剩余内存大小确定差额内存大小,并基于所述差额内存大小从系统内存中请求新增内存空间,所述新增内存空间的新增内存大小大于或小于所述差额内存大小;将所述点云数据存储于所述剩余内存空间和所述新增内存空间中。
于本发明一实施例中,若所述点云数据大小小于所述剩余内存大小,所述点云数据渲染方法还包括:基于所述点云数据大小和所述剩余内存大小确定预设留存内存大小,基于所述预设留存内存大小和所述预设共享内存的总内存大小确定当前内存利用率;获取多个历史时刻的历史内存利用率,所述历史时刻与当前时刻的时间差小于预设时差;若所述历史内存利用率和所述当前内存利用率均小于预设利用率,根据所述目标内存利用率和所述总内存大小确定可释放内存大小,所述目标内存利用率为所述历史内存利用率或所述当前内存利用率,所述可释放内存大小小于所述预设留存内存大小。
于本发明一实施例中,若各所述任务处理线程的线程工作状态均为占用,基于多个任务处理线程的线程工作状态,将所述待处理任务分配给一个线程工作状态为空闲的所述任务处理线程包括以下至少之一:将所述点云数据丢弃;将所述点云数据存放于预设暂存内存空间,以待存在至少一个所述任务处理线程的线程工作状态为空闲,通过空闲的所述任务处理线程处理所述点云数据;创建至少一个任务处理线程,并通过创建的一所述任务处理线程处理所述点云数据。
于本发明一实施例中,若至少两个所述任务处理线程的线程工作状态为空闲,基于多个任务处理线程的线程工作状态,将所述待处理任务分配给一个线程工作状态为空闲的所述任务处理线程之前,所述点云数据渲染方法还包括:获取多个任务处理线程的多个历史时刻的空闲线程数量,以及当前时刻的空闲线程数量,所述空闲线程数量为线程工作状态为空闲的所述任务处理线程的数量;若各所述空闲线程数量均大于预设线程阈值,根据所述预设线程阈值和当前时刻的空闲线程数量确定减少线程数量;将当前时刻的线程工作状态为空闲的所述任务处理线程中确定所述减少线程数量的任务处理线程为减少任务处理线程,将所述减少任务处理线程的线程工作状态调整为终止状态。
于本发明一实施例中,通过所述任务处理线程对所述点云数据进行处理包括以下至少之一:将所述点云数据投影至预设基准坐标系,得到所述点云数据在所述预设基准坐标系下的基准坐标系坐标信息,生成所述处理结果;对所述点云数据进行校验,并基于通过校验的所述点云数据生成所述处理结果;对所述点云数据进行切片,基于切片后的所述点云数据生成所述处理结果。
于本发明一实施例中,将处理结果通过目标渲染刷新缓存进行渲染之前,所述点云数据渲染方法还包括以下至少之一:获取各所述预设渲染刷新缓存的上一点云数据获取时刻;根据所述上一点云数据获取时刻和当前时刻确定获取工作时间差,将所述工作时间差最大的所述预设渲染刷新缓存确定为所述目标渲染刷新缓存。
于本发明一实施例中,将所述待处理任务分配给一个线程工作状态为空闲的所述任务处理线程之后,所述点云数据渲染方法还包括:向所述预设共享内存发送数据删除消息,以删除所述预设共享内存中的所述点云数据。
于本发明一实施例中,将处理结果通过目标渲染刷新缓存进行渲染之后,所述点云数据渲染方法还包括:获取渲染结果的渲染类型;基于所述渲染类型确定待显示界面,并通过所述待显示界面显示所述渲染结果。
本发明实施例提供的一种点云数据渲染装置,所述点云数据渲染装置包括:获取模块,用于获取点云数据;预设共享内存,用于将所述点云数据存储于预设共享内存中,生成所述点云数据的待处理任务,以及所述待处理任务通知,所述待处理任务通知包括所述点云数据在所述预设共享内存中的内容地址和内容数据大小信息;任务管理器,用于基于多个任务处理线程的线程工作状态,将所述待处理任务分配给一个线程工作状态为空闲的所述任务处理线程,所述任务处理线程用于基于所述内容地址和所述内容数据大小信息从所述预设共享内存中读取所述点云数据,并进行处理;渲染模块,用于将处理结果通过目标渲染刷新缓存进行渲染,所述目标渲染刷新缓存为至少两个预设渲染刷新缓存中的一个,各所述预设渲染刷新缓存轮流确定为所述目标渲染刷新缓存。
本发明实施例提供的一种电子设备,所述电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现上述任一项实施例所述的点云数据渲染方法。
本发明实施例提供的一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被计算机的处理器执行时,使计算机执行上述任一项实施例所述的点云数据渲染方法。
本发明实施例的有益效果:本发明实施例中的点云数据渲染方法、装置、设备及存储介质,该方法通过获取点云数据,将点云数据存储于预设共享内存中,生成点云数据的待处理任务,以及待处理任务通知,基于多个任务处理线程的线程工作状态,将待处理任务分配给一个线程工作状态为空闲的任务处理线程,将处理结果通过目标渲染刷新缓存进行渲染,通过将点云数据存储在预设共享内存空间中,由空闲的任务处理线程对预设共享内存空间中的点云数据进行处理,能够降低点云数据在内存中的拷贝成本,通过配置多个任务处理线程,由空闲的任务处理线程对点云数据进行处理,在大批量的点云数据的场景下,能够提升点云数据的处理速度,配合将多个预设渲染刷新缓存轮流确定为目标渲染刷新缓存,以目标渲染刷新缓存对点云数据的处理结果进行渲染,能够降低处理结果的等待渲染时长,实现对点云数据进行快速渲染,满足智能网联汽车的数据时效性需求。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术者来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本申请一示例性实施例示出的系统架构图;
图2是本申请的一示例性实施例示出的点云数据渲染方法的流程图;
图3是本申请的一示例性实施例示出的点云数据渲染装置的框图;
图4是本申请的一示例性实施例示出的点云数据渲染系统的框图;
图5示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
以下将参照附图和优选实施例来说明本发明的实施方式,本领域技术人员可由本说明书中所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。应当理解,优选实施例仅为了说明本发明,而不是为了限制本发明的保护范围。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
在下文描述中,探讨了大量细节,以提供对本发明实施例的更透彻的解释,然而,对本领域技术人员来说,可以在没有这些具体细节的情况下实施本发明的实施例是显而易见的,在其他实施例中,以方框图的形式而不是以细节的形式来示出公知的结构和设备,以避免使本发明的实施例难以理解。
近年来,随着自动驾驶技术的发展,激光雷达在自动驾驶的使用几乎成为必备设备。在市场的推动下,激光雷达在硬件方面获得了突破,在实用性方面取得了长足的进步,被越来越多地应用到实际生产中,利用物联网技术也得到突破性的发展,在很多场景,布设了大量的采集数据的传感器,在一些科研项目,如光学、声学、力学和电磁分析等,很多算法软件通过复杂的计算,如有限元分析等,产生大量的数据,在医学领域,一些物理检测也能获得大量的数据,然后基于算法,进行影像呈现,这些数据很多都是基于三维空间节点的点云数据,如何对这些数据加以利用,将冰冷的数据变成鲜活的影像,然后被引用、处理、分析和计算,是一个热门的研究方向。
目前在国内对点云数据三维可视化的起步较弱,大多停留在理论分析阶段,市面上也缺少相关的产品应用,基本依赖于软件的进口,而国外的软件,大多仅针对于具体的行业,功能也相当有限,无法进行具体问题具体分析,另外不同的数据的格式是不同的,也对数据的应用造成了干扰。由于硬件设备的技术性能提升,点云刷新速度更快、数量更多,基于目前的一般性能的激光雷达基本在10ms左右的刷新速率,甚至更快。点云的数量基本都在10多万以上。在自动驾驶过程中对每个环节的时间都是严格规定的。如目标识别、可行驶区域的确定均涉及到对点云数据的快速计算。但相关数据的点云数据算法很多是基于GPU(Graphics Processing Unit,图形处理器)来进行加速计算,在对点云数据进行可视化时,使用CPU(Central Processing Unit,中央处理器)来进行计算,在使用一般的CPU来进行点云计算会出现计算时间耗时过大的情况,因此亟需一种快速的对点云数据进行计算和渲染的点云数据处理方式,以满足智能网联汽车的数据需求。
本申请针对上述技术问题,提供了一种点云数据渲染方法,通过预先设置一预设共享内存,将获取到的智能网联汽车的点云数据均先存储在预设共享内存中,每一存储在预设共享内存中的点云数据均会生成对应的待处理任务,并生成该待处理任务的待处理任务通知,将该待处理任务通知分发给到任务管理器,由任务管理器进行任务调度,从该任务管理器所管理的多个任务处理线程中确定一线程工作状态为空闲的任务处理线程,由该空闲的任务处理线程对该待处理任务进行处理,如将待处理任务的点云数据进行格式统一、坐标系转换等,生成处理结果。将处理结果存储于渲染刷新缓存A或渲染刷新缓存B中任意一个,以通过渲染刷新缓存A或渲染刷新缓存B来对处理结果进行渲染。其中,渲染刷新缓存A和渲染刷新缓存B为交替工作状态,也即,渲染刷新缓存A和渲染刷新缓存B交替获取新的处理结果,并进行渲染,这样可以在一个渲染刷新缓存工作的过程中,不耽误下一个处理结果的渲染,提升渲染效率,能够快速的对点云数据进行渲染,减少时延,满足智能网联汽车的数据时效性需求。
请参见图1,图1为本申请一示例性实施例示出的系统架构图。如图1所示,车辆102通过激光雷达等设备进行点云数据的采集,通过网络发送至服务器101,服务器一方面通过预先设置一预设共享内存,将获取到的智能网联汽车的点云数据均先存储在预设共享内存中,每一存储在预设共享内存中的点云数据均会生成对应的待处理任务,并生成该待处理任务的待处理任务通知,将该待处理任务通知分发给到任务管理器,由任务管理器进行任务调度,从该任务管理器所管理的多个任务处理线程中确定一线程工作状态为空闲的任务处理线程,由该空闲的任务处理线程对该待处理任务进行处理,如将待处理任务的点云数据进行格式统一、坐标系转换等,生成处理结果。将处理结果存储于渲染刷新缓存A或渲染刷新缓存B中任意一个,以通过渲染刷新缓存A或渲染刷新缓存B来对处理结果进行渲染。其中,渲染刷新缓存A和渲染刷新缓存B为交替工作状态,也即,渲染刷新缓存A和渲染刷新缓存B交替获取新的处理结果,并进行渲染,这样可以在一个渲染刷新缓存工作的过程中,不耽误下一个处理结果的渲染,提升渲染效率,能够快速的对点云数据进行渲染,减少时延,满足智能网联汽车的数据时效性需求。可以将渲染结果下发给车辆,通过车辆的显示装置进行显示。当然,上述服务器101所执行的至少部分步骤也可以通过车辆本地的处理器实现,或者通过车辆本地的处理器和服务器共同协作完成。
车辆本地的处理器可以是车载终端的处理器,其中车载终端的实现设备包括但不限于个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备等任意支持车辆换道控制软件的终端设备。车载终端搭载有联网的终端软件,例如PC网站、手机网站、安卓APP、iOSAPP、微信小程序、智能手表APP、智能汽车APP以及其它智能硬件应用等。服务器101可以用独立的服务器或者是多个服务器组成的服务器集群来实现,该服务器/服务器集群例如TSP(Telematics Service Provider,汽车远程服务提供商)服务器。该服务器/服务器集群还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器,在此也不进行限制。
为解决上述问题,本申请的实施例分别提出一种点云数据渲染方法、一种点云数据渲染装置、一种电子设备、一种计算机可读存储介质以及一种计算机程序产品,以下将对这些实施例进行详细描述。
请参阅图2,图2是本申请的一示例性实施例示出的点云数据渲染方法的流程图。该方法可以通过图1所示的系统架构所执行,也可以通过本领域技术人员所知晓的其他实施环境执行。如图2所示,在一示例性的实施例中,该点云数据渲染方法至少包括步骤S201至步骤S204,详细介绍如下:
步骤S201,获取点云数据。
点云数据可以是通过智能网联汽车的激光雷达等设备所采集的数据。智能网联汽车可以搭载有一个或多个激光雷达,采集得到一份或多份点云,得到点云数据。本实施例中的点云数据根据本方法的应用场景,可以是一辆智能网联汽车所采集的点云数据,也可以是多辆智能网联汽车所采集的点云数据。例如,当本实施例的方法应用于某一智能网联汽车时,在确定该智能网联汽车的可行驶区域时,则可以通过激光雷达采集车辆前方、后方、侧方的环境点云,基于车载终端通过执行本实施例的方法,结合可行驶区域的确定的相关算法,渲染得到可行驶区域。又例如,当本实施例的方法应用于多辆智能网联汽车时,或者是基于多辆智能网联汽车所采集的点云数据进行渲染得到渲染结果时,则此时点云数据则可能来源于多辆智能网联汽车。当然,点云数据还可以是通过其他设备所采集。以上仅为示例性描述。
步骤S202,将点云数据存储于预设共享内存中,生成点云数据的待处理任务,以及待处理任务通知。
其中,待处理任务通知包括所述点云数据在所述预设共享内存中的内容地址和内容数据大小信息,通过内容地址能够方便后续任务处理线程拉取点云数据,通过内容数据大小信息能够方便后续任务处理线程准确获取到点云数据,并且能够方便基于内容数据大小信息分配合适的任务处理线程。内容数据大小信息可以理解为点云数据大小。通过内容地址以便任务处理线程对点云数据进行处理,能够降低点云数据在内存中的拷贝成本,便于多线程进行分批量的同时处理。
预设共享内存为本领域技术人员所预先设定的某一可以存储数据的数据存储空间,该预设共享内存的存储空间大小并非是固定的,可以根据当前对于点云数据的存储需要进行自动伸缩,以提升预设共享内存所在系统整体的内存利用率,避免内存空间的浪费。
在一示例性实施例中,将点云数据存储于预设共享内存中之前,该方法还包括:
获取点云数据的点云数据大小,以及预设共享内存的剩余内存空间的剩余内存大小;
若点云数据大小大于剩余内存大小,根据点云数据大小和剩余内存大小确定差额内存大小,并基于差额内存大小从系统内存中请求新增内存空间,新增内存空间的新增内存大小大于或小于差额内存大小,其中差额内存大小为剩余内存大小与点云数据大小之间的差值,新增内存大小必然是需要大于差额内存大小,才能保证扩容后的预设共享内存能够存储点云数据;
将新增内存空间增加至预设共享内存,并将点云数据存储于增加后的预设共享内存中。
通过在获取到点云数据之后,将点云数据存储在预设共享内存中之前,对预设共享内存的剩余内存大小与点云数据大小进行比较,能够及时知晓当前预设共享内存的剩余内存大小是否足够,若不足,能够及时向系统请求所需要的内存,需要说明的是,请求内存的请求大小大于差额内存大小,这样,将补足预设共享内存的内存缺口,保证点云数据能够被正常存储。
其中,一示例性的实施例中,新增内存大小可以是根据差额内存大小和点云数据大小来确定的。如:
C新增=C差额+C点云*α,
其中,C新增为新增内存大小,C差额为差额内存大小,C点云为点云数据大小,α为预设系数,α≥0。
在一示例性实施例中,若点云数据大小小于剩余内存大小,该方法还包括:
基于点云数据大小和剩余内存大小确定预设留存内存大小,基于预设留存内存大小和预设共享内存的总内存大小确定当前内存利用率;
获取多个历史时刻的历史内存利用率,历史时刻与当前时刻的时间差小于预设时差;
若历史内存利用率和当前内存利用率均小于预设利用率,根据目标内存利用率和总内存大小确定可释放内存大小,其中,可释放内存大小小于预设留存内存大小。
其中,目标内存利用率为历史内存利用率或当前内存利用率,或者,目标内存利用率大于历史内存利用率或当前内存利用率。例如,历史内存利用率分别为50%、45%、60%,当前内存利用率为70%,可见在一段时间内,均有至少30%的内存空间是闲置的,存在内存空间的浪费,此时,可以设置一个目标内存利用率为85%,此时,一种示例性的可释放内存大小的确定方式为:
C释放=C*(1-M);
其中,C释放为可释放内存大小,C为总内存大小,M为目标内存利用率。由于目标内存利用率必然是大于或等于当前内存利用率,则可释放内存大小必然小于预设留存内存大小。
当前内存利用率的一种确定方式如下:
C留存=C剩余-C点云
A=C留存/C*100%;
其中,C留存为预设留存内存大小,C剩余为剩余内存大小,C点云为点云数据大小,A为当前内存利用率,C为总内存大小。
历史时刻与当前时刻的时间差小于预设时差,通过控制预设时差的大小可以控制历史时刻的取值时间范围,进而可以控制取值的范围是基于当前时刻之前的若干时间段内的历史内存利用率来进行参考。
若历史内存利用率和当前内存利用率均小于预设利用率,则说明在一定时间范围内,如30分钟等,预设共享内存中存在相当一部分的内存空间是浪费的,此时可以通过释放一部分预设共享内存中的存储空间,以满足系统中其他模块的内存需求。预设利用率可以是由本领域技术人员所预先设定的值,该预设利用率可以是固定值,也可以是根据时间、当该方法应用于智能网联汽车时,基于车辆的行驶状态(如行驶速度、行驶路段、驾驶模式等)进行设定多个预设利用率,基于智能网联汽车的行驶状态确定当前的预设利用率。再基于该预设利用率对历史内存利用率和当前内存利用率进行比较。
在另一实施例中,若点云数据大小小于剩余内存大小,该方法还包括:
获取当前时刻之前预设历史时间段内的预设共享内存中的历史剩余内存大小,若历史剩余内存大小波动较为稳定,则可以保留安全内存大小后,将剩余内存释放。
历史剩余内存大小波动情况可以通过历史剩余内存大小中最大值与最小值之差确定,若差值小于差值阈值则稳定,否则则不稳定。安全内存大小可以由本领域技术人员进行设定,也可以由历史点云数据的历史点云数据大小来确定,比如历史点云数据大小中最大值的一定倍数,该倍数大于或等于1。
当点云数据存储或存储完成,则自动触发生成该点云数据的待处理任务,以及该待处理任务的待处理任务通知。
步骤S203,基于多个任务处理线程的线程工作状态,将待处理任务分配给一个线程工作状态为空闲的任务处理线程进行处理,得到处理结果。
其中,任务处理线程用于基于内容地址和内容数据大小信息从预设共享内存中读取点云数据,并进行处理。
步骤S203的实现可以通过任务管理器来进行处理。通过任务管理器对多个任务处理线程的线程工作状态进行管理,并从线程工作状态为空闲的多个任务处理线程中确定一个作为处理该点云数据对应的待处理任务的任务处理线程。
其中从线程工作状态为空闲的多个任务处理线程中确定一个作为处理该点云数据对应的待处理任务的任务处理线程的确定方式可以是随机确定,也可以是基于一定的处理顺序,轮流进行待处理任务的处理。又或者预先对多个任务处理线程通过在初始化时进行指定或者全服务类型线程。基于当前点云数据的需要进行处理的类型,选择对应的任务处理线程。其中点云数据的处理类型可以由点云数据在获取时同步获取。
在一实施例中,若各任务处理线程的线程工作状态均为占用,基于多个任务处理线程的线程工作状态,将待处理任务分配给一个线程工作状态为空闲的任务处理线程包括以下至少之一:
将点云数据丢弃;
将点云数据存放于预设暂存内存空间,以待存在至少一个任务处理线程的线程工作状态为空闲,通过空闲的任务处理线程处理点云数据;
创建至少一个任务处理线程,并通过创建的一任务处理线程处理点云数据。
当各任务处理线程均占用时,可以选择丢弃点云数据,待各任务处理线程不再满负荷工作,存在空闲的任务处理线程后,再将新的点云数据进行处理。这样可以避免由于点云数据的羁押,导致系统崩溃。
当各任务处理线程均占用时,也可以再次对点云数据进行暂存,由于存在多个任务处理线程,故一旦任务处理线程不再满负荷工作,则可以及时对暂存在预设暂存内存空间的点云数据进行处理,既满足了点云数据的处理要求,又保证了点云数据不会造成通路的堵塞。
也可以结合点云数据的丢弃和暂存两种方式进行处理,此时可以采用抽帧的方式实现,按照一定的规则对点云数据进行丢弃和暂存。
当需要创建新的任务处理线程时,可以按照预设的创建数量,比如一次性创建5个线程等,来进行创建,也可以逐一创建,直到满足需要,也即每次得到的待处理任务通知都存在空闲的任务处理线程来进行处理,这样相对而言更加节约任务处理线程的数量,降低系统的资源占用。
在一个实施例中,若至少两个任务处理线程的线程工作状态为空闲,基于多个任务处理线程的线程工作状态,将待处理任务分配给一个线程工作状态为空闲的任务处理线程之前,该点云数据渲染方法还包括:
获取多个任务处理线程的多个历史时刻的空闲线程数量,以及当前时刻的空闲线程数量,空闲线程数量为线程工作状态为空闲的任务处理线程的数量;
若各空闲线程数量均大于预设线程阈值,根据预设线程阈值和当前时刻的空闲线程数量确定减少线程数量;
将当前时刻的线程工作状态为空闲的任务处理线程中确定减少线程数量的任务处理线程为减少任务处理线程,将减少任务处理线程的线程工作状态调整为终止状态。
也即,当存在较多数量的任务处理线程均为空闲时,则说明可能当前的任务处理线程是超出需求的,此时可以通过终止一部分任务处理线程来释放相应的资源占用。
至于在多个空闲的任务处理线程中选择哪一个进行终止,可以由本领域技术人员预先进行各个任务处理线程优先级的标定,并优先终止优先级低的任务处理线程。或者,通过统计各个空闲的任务处理线程所处理的点云数据的次数,将次数较少的任务处理线程优先终止。
在一实施例中,通过任务处理线程对点云数据进行处理包括以下至少之一:
将点云数据投影至预设基准坐标系,得到点云数据在预设基准坐标系下的基准坐标系坐标信息,生成处理结果;
对点云数据进行校验,并基于通过校验的点云数据生成处理结果;
对点云数据进行切片,基于切片后的点云数据生成处理结果。
也即,可以对点云数据通过任务处理线程进行坐标系转换、校验、切片等处理中的一种,便于后续目标渲染刷新缓存进行渲染。
步骤S204,将处理结果通过目标渲染刷新缓存进行渲染。
其中,目标渲染刷新缓存为至少两个预设渲染刷新缓存中的一个,各预设渲染刷新缓存轮流确定为目标渲染刷新缓存。
也即预先设置至少两个预设渲染刷新缓存,预设渲染刷新缓存用于将获取到的处理结果进行渲染,得到渲染结果。
预设渲染刷新缓存还可以具有待处理数据队列,将获取的处理结果通过该待处理数据队列进行存储,并依次进行渲染,得到渲染结果。
在一实施例中,将处理结果通过目标渲染刷新缓存进行渲染之前,点云数据渲染方法还包括以下至少之一:
获取各预设渲染刷新缓存的上一点云数据获取时刻;
根据上一点云数据获取时刻和当前时刻确定获取工作时间差,将工作时间差最大的预设渲染刷新缓存确定为目标渲染刷新缓存。
也即,多个预设渲染刷新缓存轮流获取处理结果,这样可以在渲染周期的更替中,交替进行渲染和接收数据。
在一实施例中,将待处理任务分配给一个线程工作状态为空闲的任务处理线程之后,该点云数据渲染方法还包括:
向预设共享内存发送数据删除消息,以删除预设共享内存中的点云数据。
此时,由于点云数据已经被处理完成,不需要再占用预设共享内存,则可以释放预设共享内存的相应空间。
在一实施例中,将处理结果通过目标渲染刷新缓存进行渲染之后,该点云数据渲染方法还包括:
获取渲染结果的渲染类型;
基于渲染类型确定待显示界面,并通过待显示界面显示渲染结果。
也即,通过不同的显示界面显示不同类型的渲染结果。一显示界面可以对应一个或多个渲染类型。渲染结果的渲染类型所对应的显示界面作为待显示界面。
上述实施例提供了一种点云数据渲染方法,通过获取点云数据,将点云数据存储于预设共享内存中,生成点云数据的待处理任务,以及待处理任务通知,基于多个任务处理线程的线程工作状态,将待处理任务分配给一个线程工作状态为空闲的任务处理线程,将处理结果通过目标渲染刷新缓存进行渲染,通过将点云数据存储在预设共享内存空间中,由空闲的任务处理线程对预设共享内存空间中的点云数据进行处理,能够降低点云数据在内存中的拷贝成本,通过配置多个任务处理线程,由空闲的任务处理线程对点云数据进行处理,在大批量的点云数据的场景下,能够提升点云数据的处理速度,配合将多个预设渲染刷新缓存轮流确定为目标渲染刷新缓存,以目标渲染刷新缓存对点云数据的处理结果进行渲染,能够降低处理结果的等待渲染时长,实现对点云数据进行快速渲染,满足智能网联汽车的数据时效性需求。
通过对预设共享内存的扩容(引入新增内存空间)和释放,实现了预设共享内存的自动伸缩,提升了内存的利用率。
通过上述实施例提供的点云数据渲染方法,能够降低点云在内存中的拷贝成本,通过多线程进行分批量的同时处理。通过高效合理的调度算法对整个任务工作线程进行管理。共享内存池(预设共享内存)是一个能够自动伸缩的内存管理器,通过带有不同的管理策略对内存进行不同方式的管理。
图3是本申请的一示例性实施例示出的点云数据渲染装置的框图。如图3所示,该示例性的点云数据渲染装置300包括:
获取模块301,用于获取点云数据;
预设共享内存302,用于将点云数据存储于预设共享内存中,生成点云数据的待处理任务,以及待处理任务通知,待处理任务通知包括点云数据在预设共享内存中的内容地址和内容数据大小信息;
任务管理器303,用于基于多个任务处理线程的线程工作状态,将待处理任务分配给一个线程工作状态为空闲的任务处理线程,任务处理线程用于基于内容地址和内容数据大小信息从预设共享内存中读取点云数据,并进行处理;
渲染模块304,用于将处理结果通过目标渲染刷新缓存进行渲染,目标渲染刷新缓存为至少两个预设渲染刷新缓存中的一个,各预设渲染刷新缓存轮流确定为目标渲染刷新缓存。
需要说明的是,上述实施例所提供的点云数据渲染装置与上述实施例图2所提供的点云数据渲染方法属于同一构思,其中各个模块和单元执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。上述实施例所提供的点云数据渲染装置在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能,本处也不对此进行限制。
下面通过一个示例性的使用场景对本发明实施例提供的点云数据渲染方法进行示例性的说明。以两个预设渲染刷新缓存为例,参见图4,图4是本申请的一示例性实施例示出的点云数据渲染系统的框图。如图4所示,该系统包括激光雷达、共享内存池(预设共享内存空间)、任务管理器、双缓存刷新队列和显示系统,激光雷达硬件设备直接采集数据(点云数据)传入到共享内存池。共享内存池根据自身策略以及内存大小进行分配内存,在分配成功后,内存池将通过事件的方式通知(发出待处理任务通知)到任务管理器。任务管理器将会收到共享内存发送过来的待处理任务通知,该通知中包括内容地址以及内容数据大小。任务管理器通过设置的策略对共享内存发送过来的任务进行处理,在发现有可用的工作线程(空闲的任务处理线程)后将任务分发给工作线程。工作线程在收到任务管理器分配的任务后进行任务处理,具体的任务处理方式通过在初始化时进行指定或者全服务类型线程。在工作线程处理完后,将处理完成的结果发送至双缓存刷新队列,并发出信号给共享内存进行内容擦除。双缓存刷新队列在收取到工作任务线程发送过来的渲染数据时,自动存放在未进行渲染的队列中,在渲染周期的更替中,渲染刷新缓存A和渲染刷新缓存B交替进行渲染和接收数据。显示系统根据获取到的不同类型渲染数据,渲染不同界面显示效果。
本申请的实施例还提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现上述各个实施例中提供的点云数据渲染方法。
图5示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。需要说明的是,图5示出的电子设备的计算机系统1100仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,计算机系统1100包括中央处理单元(Central Processing Unit,CPU)1101,其可以根据存储在只读存储器(Read-Only Memory,ROM)1102中的程序或者从储存部分1108加载到随机访问存储器(Random Access Memory,RAM)1103中的程序而执行各种适当的动作和处理,例如执行上述实施例中所述的方法。在RAM 1103中,还存储有系统操作所需的各种程序和数据。CPU 1101、ROM 1102以及RAM 1103通过总线1104彼此相连。输入/输出(Input/Output,I/O)接口1105也连接至总线1104。
以下部件连接至I/O接口1105:包括键盘、鼠标等的输入部分1106;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1107;包括硬盘等的储存部分1108;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1109。通信部分1109经由诸如因特网的网络执行通信处理。驱动器1110也根据需要连接至I/O接口1105。可拆卸介质1111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1110上,以便于从其上读出的计算机程序根据需要被安装入储存部分1108。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。在该计算机程序被中央处理单元(CPU)1101执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
本申请的另一方面还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机的处理器执行时,使计算机执行如前所述的点云数据渲染方法。该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的,也可以是单独存在,而未装配入该电子设备中。
本申请的另一方面还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各个实施例中提供的点云数据渲染方法。
上述实施例仅示例性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,但凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

Claims (12)

1.一种点云数据渲染方法,其特征在于,所述点云数据渲染方法包括:
获取点云数据;
将所述点云数据存储于预设共享内存中,生成所述点云数据的待处理任务,以及所述待处理任务通知,所述待处理任务通知包括所述点云数据在所述预设共享内存中的内容地址和内容数据大小信息;
基于多个任务处理线程的线程工作状态,将所述待处理任务分配给一个线程工作状态为空闲的所述任务处理线程,所述任务处理线程用于基于所述内容地址和所述内容数据大小信息从所述预设共享内存中读取所述点云数据,并进行处理;
将处理结果通过目标渲染刷新缓存进行渲染,所述目标渲染刷新缓存为至少两个预设渲染刷新缓存中的一个,各所述预设渲染刷新缓存轮流确定为所述目标渲染刷新缓存。
2.如权利要求1所述的点云数据渲染方法,其特征在于,将所述点云数据存储于预设共享内存中之前,所述点云数据渲染方法还包括:
获取所述点云数据的点云数据大小,以及所述预设共享内存的剩余内存空间的剩余内存大小;
若所述点云数据大小大于所述剩余内存大小,根据所述点云数据大小和所述剩余内存大小确定差额内存大小,并基于所述差额内存大小从系统内存中请求新增内存空间,所述新增内存空间的新增内存大小大于或小于所述差额内存大小;
将所述点云数据存储于所述剩余内存空间和所述新增内存空间中。
3.如权利要求2所述的点云数据渲染方法,其特征在于,若所述点云数据大小小于所述剩余内存大小,所述点云数据渲染方法还包括:
基于所述点云数据大小和所述剩余内存大小确定预设留存内存大小,基于所述预设留存内存大小和所述预设共享内存的总内存大小确定当前内存利用率;
获取多个历史时刻的历史内存利用率,所述历史时刻与当前时刻的时间差小于预设时差;
若所述历史内存利用率和所述当前内存利用率均小于预设利用率,根据所述目标内存利用率和所述总内存大小确定可释放内存大小,所述目标内存利用率为所述历史内存利用率或所述当前内存利用率,所述可释放内存大小小于所述预设留存内存大小。
4.如权利要求1所述的点云数据渲染方法,其特征在于,若各所述任务处理线程的线程工作状态均为占用,基于多个任务处理线程的线程工作状态,将所述待处理任务分配给一个线程工作状态为空闲的所述任务处理线程包括以下至少之一:
将所述点云数据丢弃;
将所述点云数据存放于预设暂存内存空间,以待存在至少一个所述任务处理线程的线程工作状态为空闲,通过空闲的所述任务处理线程处理所述点云数据;
创建至少一个任务处理线程,并通过创建的一所述任务处理线程处理所述点云数据。
5.如权利要求1所述的点云数据渲染方法,其特征在于,若至少两个所述任务处理线程的线程工作状态为空闲,基于多个任务处理线程的线程工作状态,将所述待处理任务分配给一个线程工作状态为空闲的所述任务处理线程之前,所述点云数据渲染方法还包括:
获取多个任务处理线程的多个历史时刻的空闲线程数量,以及当前时刻的空闲线程数量,所述空闲线程数量为线程工作状态为空闲的所述任务处理线程的数量;
若各所述空闲线程数量均大于预设线程阈值,根据所述预设线程阈值和当前时刻的空闲线程数量确定减少线程数量;
将当前时刻的线程工作状态为空闲的所述任务处理线程中确定所述减少线程数量的任务处理线程为减少任务处理线程,将所述减少任务处理线程的线程工作状态调整为终止状态。
6.如权利要求1-5任一项所述的点云数据渲染方法,其特征在于,通过所述任务处理线程对所述点云数据进行处理包括以下至少之一:
将所述点云数据投影至预设基准坐标系,得到所述点云数据在所述预设基准坐标系下的基准坐标系坐标信息,生成所述处理结果;
对所述点云数据进行校验,并基于通过校验的所述点云数据生成所述处理结果;
对所述点云数据进行切片,基于切片后的所述点云数据生成所述处理结果。
7.如权利要求1-5任一项所述的点云数据渲染方法,其特征在于,将处理结果通过目标渲染刷新缓存进行渲染之前,所述点云数据渲染方法还包括以下至少之一:
获取各所述预设渲染刷新缓存的上一点云数据获取时刻;
根据所述上一点云数据获取时刻和当前时刻确定获取工作时间差,将所述工作时间差最大的所述预设渲染刷新缓存确定为所述目标渲染刷新缓存。
8.如权利要求1-5任一项所述的点云数据渲染方法,其特征在于,将所述待处理任务分配给一个线程工作状态为空闲的所述任务处理线程之后,所述点云数据渲染方法还包括:
向所述预设共享内存发送数据删除消息,以删除所述预设共享内存中的所述点云数据。
9.如权利要求1-5任一项所述的点云数据渲染方法,其特征在于,将处理结果通过目标渲染刷新缓存进行渲染之后,所述点云数据渲染方法还包括:
获取渲染结果的渲染类型;
基于所述渲染类型确定待显示界面,并通过所述待显示界面显示所述渲染结果。
10.一种点云数据渲染装置,其特征在于,所述点云数据渲染装置包括:
获取模块,用于获取点云数据;
预设共享内存,用于将所述点云数据存储于预设共享内存中,生成所述点云数据的待处理任务,以及所述待处理任务通知,所述待处理任务通知包括所述点云数据在所述预设共享内存中的内容地址和内容数据大小信息;
任务管理器,用于基于多个任务处理线程的线程工作状态,将所述待处理任务分配给一个线程工作状态为空闲的所述任务处理线程,所述任务处理线程用于基于所述内容地址和所述内容数据大小信息从所述预设共享内存中读取所述点云数据,并进行处理;
渲染模块,用于将处理结果通过目标渲染刷新缓存进行渲染,所述目标渲染刷新缓存为至少两个预设渲染刷新缓存中的一个,各所述预设渲染刷新缓存轮流确定为所述目标渲染刷新缓存。
11.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如权利要求1至9中任一项所述的点云数据渲染方法。
12.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,当所述计算机程序被计算机的处理器执行时,使计算机执行权利要求1至9中任一项所述的点云数据渲染方法。
CN202211229026.4A 2022-10-09 2022-10-09 点云数据渲染方法、装置、设备及存储介质 Pending CN115661316A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211229026.4A CN115661316A (zh) 2022-10-09 2022-10-09 点云数据渲染方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211229026.4A CN115661316A (zh) 2022-10-09 2022-10-09 点云数据渲染方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN115661316A true CN115661316A (zh) 2023-01-31

Family

ID=84986843

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211229026.4A Pending CN115661316A (zh) 2022-10-09 2022-10-09 点云数据渲染方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN115661316A (zh)

Similar Documents

Publication Publication Date Title
CN109213600B (zh) 一种基于ai云的gpu资源调度方法和装置
CN109408205B (zh) 基于hadoop集群的任务调度方法和装置
CN108959292B (zh) 一种数据上传方法、系统和计算机可读存储介质
CN108052384B (zh) 一种任务处理方法、服务平台及电子设备
CN108829518B (zh) 用于推送信息的方法和装置
CN114416352A (zh) 算力资源分配方法、装置、电子设备及储存介质
CN113656179A (zh) 云计算资源的调度方法及装置、电子设备和存储介质
CN109697055B (zh) 生成移动App页面的方法及系统
CN115543965A (zh) 跨机房数据处理方法、设备、存储介质及程序产品
CN111813541B (zh) 一种任务调度方法、装置、介质和设备
CN110648032A (zh) 信息更新方法和装置
CN109672931B (zh) 用于处理视频帧的方法和装置
CN115661316A (zh) 点云数据渲染方法、装置、设备及存储介质
CN105989012B (zh) 一种页面显示方法、装置、移动终端和系统
CN115599268A (zh) 一种屏幕截图方法、计算设备和存储介质
CN112559183B (zh) 计算资源管理方法、装置、电子设备及存储介质
CN114995914A (zh) 图片数据的处理方法、装置、计算机设备及存储介质
CN113763552A (zh) 三维地理模型的展示方法、装置、计算机设备和存储介质
CN110231983B (zh) 数据并发处理方法、装置及系统、计算机设备及可读介质
CN115174483B (zh) 基于时间窗口的限流方法、装置、服务器和存储介质
CN110659312B (zh) 数据处理的方法、装置、设备和计算机存储介质
CN109905443B (zh) 数据处理方法、系统、电子设备和计算机可读介质
CN113176909A (zh) 一种终端流畅度的确定方法、装置、电子设备和存储介质
CN114185682B (zh) 日志输出方法、装置、电子设备及存储介质
CN116737307B (zh) 一种界面显示方法、装置、电子设备及存储介质

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