点云聚类方法、图像处理设备及具有存储功能的装置与流程

文档序号:17624698发布日期:2019-05-10 23:31阅读:290来源:国知局
点云聚类方法、图像处理设备及具有存储功能的装置与流程

本申请涉及图像处理技术领域,特别是涉及一种点云聚类方法、图像处理设备及具有存储功能的装置。



背景技术:

随着三维扫描技术的发展,使三维点云数据模型成为一种新兴数字媒体,在工业制造、建筑设计、产品展示、医学、电子商务等方面有着广泛的应用。由于现有三维扫描设备精度得到极大提高,扫描得到的点云数据中包含大量数据点,此时若需要对点云数据进行聚类分析,获取不同类别的点云时,采用传统的聚类方法会导致聚类速度较慢的问题。



技术实现要素:

本申请主要提供一种点云聚类方法、图像处理设备及具有存储功能的装置,能够快速将点云分为不同类别。

为解决上述技术问题,本申请采用的一个技术方案是:提供一种点云聚类方法,包括:获取第一点云数据;将第一点云数据进行采样,得到第二点云数据;对第二点云数据进行聚类,得到至少一个类别的子点云;判断该子点云的类别数量是否大于一;若大于,则以至少一个类别的子点云为基准数据,将第一点云数据中的数据点划分到对应的子点云中,以得到聚类后的点云数据。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种图像处理设备,其特征在于,包括:相互连接的通信电路和处理器;该处理器利用通信电路获取点云数据,并执行程序以实现如上所述的点云聚类方法。

为解决上述技术问题,本申请采用的又一个技术方案是:提供一种具有存储功能的装置,存储有指令,该指令被执行时实现如上所述的点云聚类方法。

本申请的有益效果是:区别于现有技术的情况,本申请的实施例中,在获取第一点云数据,首先将第一点云数据进行采样,得到第二点云数据后,对采样后的第二点云数据进行聚类,得到至少一个类别的子点云,并在该子点云的类别数量大于一时,再以至少一个类别的子点云为基准数据,将第一点云数据中的数据点划分到对应的子点云中,以得到聚类后的点云数据。由此,本申请利用采样将需要进行聚类的数据量减少,从而可以减少计算量,加快聚类速度。

附图说明

图1是本申请点云聚类方法第一实施例的流程示意图;

图2是图1中步骤s12的具体流程示意图;

图3是图2中步骤s122的具体流程示意图;

图4是采用距离采样方法进行采样的场景示意图;

图5是图1中步骤s16的具体流程示意图;

图6是本申请点云聚类方法第二实施例的流程示意图;

图7是图6中步骤s132的具体流程示意图;

图8是图5中步骤s162的具体流程示意图;

图9是利用本申请点云聚类方法进行聚类的点云数据的变化过程示意图;

图10是本申请图像处理设备一实施例的结构示意图;

图11是本申请具有存储功能的装置一实施例的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

如图1所示,本申请点云聚类方法第一实施例包括:

s11:获取第一点云数据。

点云是表达物体表面的大量数据点,每个数据点均可以用三维坐标表示。其中,该第一点云数据至少包括表达某个三维图像轮廓的多个数据点的位置坐标,可以直接利用三维扫描设备扫描得到目标的三维点云数据(即该第一点云数据),也可以是从存储设备或其他设备中获取预先存储的该第一点云数据,此处不做具体限定。

s12:将第一点云数据进行采样,得到第二点云数据。

采样指按照某种规则从数据集中挑选样本数据的过程。其中,采样规则可以是随机采样、距离采样或分层采样等方法。

可选地,当采样规则是距离采样时,如图2所示,步骤s12包括:

s121:获取采样半径。

采样半径定义了以数据点为中心,以该采样半径为半径的一个圆形采样区域,每个采样区域内采样数据量相同。例如,每个采样区域内仅选取中心的数据点作为样本数据。其中,该采样半径是预先由用户或系统设定的值,其具体取值可以根据采样及后续聚类精度要求而定。

s122:基于采样半径对第一点云数据进行距离采样,以得到第二点云数据。

具体地,在一个应用例中,基于采样半径r,选择该第一点云数据中的一个数据点,将该数据点为中心,划分一个半径在r的采样区域,在该采样区域内的所有数据点仅选择其中部分数据点作为样本数据,其他数据点均删除/标记,基于上述采样规则,遍历该第一点云数据的所有未删除/未标记的数据点,最后将所有样本数据的集合作为该第二点云数据。

可选地,当采样时仅选择中心数据点作为样本数据时,如图3所示,步骤s122包括:

s1221:计算第一点云数据中的第一数据点和第二数据点的第一距离。

其中,该第一数据点是在该第一点云数据中选择的样本数据。初始选择该第一数据点时可以是随机的,也可以是选择存储器中保存的第一个数据点或者最后一个数据点作为该第一数据点。

第二数据点是除第一数据点以外的至少部分数据点。该第二数据点可以是第一点云数据中除第一数据点以外的所有数据点,该第二数据点也可以是该第一点云数据中的部分数据点,例如将数据点分成多个部分同时进行采样时,该第二数据点则是采样部分数据点中除第一数据点外的其他数据点。

具体地,在一个应用例中,结合图4所示,选择数据点a作为第一数据点后,可以从第一点云数据中获取第二数据点b,计算该第二数据点b与第一数据点a的距离时,可以根据a的位置坐标(x1,y1,z1)以及b的位置坐标(x2,y2,z2),然后可以利用如下公式即可以计算得到a和b之间的欧式距离。

s1222:判断第一距离是否小于采样半径。

若判断结果为是,则执行如下步骤s1223,否则执行步骤s1224。

s1223:删除第二数据点。

s1224:保留第二数据点。

具体地,在上述应用例中,获取a和b之间的距离d之后,将该距离d与该采样半径r进行比较,若该距离d小于该采样半径r,则表明该第二数据点b位于以第一数据点a为中心,以采样半径r为半径的圆形区域内,此时,则删除该第二数据点b。而当该第二数据点不位于以第一数据点a为中心,以采样半径r为半径的圆形区域内时,如图4中的点c,点c与点a之间的距离大于该采样半径r,此时,保留该第二数据点c。

s1225:判断第一点云数据中是否还存在未删除且不是样本数据的数据点。

若存在,则执行如下步骤s1226,否则执行步骤s1227。

s1226:按照预设采样顺序选择未删除的另一个数据点作为第一数据点,返回执行步骤s1221。

其中,该预设采样顺序是预先设置的顺序,可以是数据点存储的顺序,也可以是空间位置顺序,又或者随机选择等,此处不做具体限定。该另一个数据点是区别于已经被选择为样本数据的数据点。

s1227:最终保留的所有第一数据点组成该第二点云数据。

具体地,每次执行完步骤s1223或s1224之后,可以先判断是否已经完成第一点云数据的采样,即判断第一点云数据中是否还存在未删除且不是样本数据的数据点。也就是说,当某个数据点已经被选择作为第一数据点(即样本数据)进行上述步骤的采样后,部分第二数据点已经被删除,此时可以先判断剩余的数据点中是否还存在没有被删除且不是样本数据的数据点,即判断是否有数据点还未被处理过,若存在,则可以按照预设采样顺序继续选择未删除的另一个数据点作为该第一数据点,返回执行上述步骤s1221,继续执行采样步骤,直至遍历完成所有未删除的数据点,即所有未删除的数据点均以作为第一数据点执行过上述采样步骤,则采样过程完成,此时上述步骤s1225的判断结果为否,即每个未删除的数据点均作为第一数据点进行采样。最后,最终保留的所有第一数据点即可以组成该第二点云数据。

在其他实施例中,可以将点云数据划分成多个子点云后设置采样半径进行采样。

当然,在其他实施例中,也可以在第一点云数据中随机选取部分数据点作为样本,所有样本集合即为该第二点云数据,从而使得后续采用样本进行运算时可以减少计算量,节约计算机资源,提高计算速度。

s13:对第二点云数据进行聚类,得到至少一个类别的子点云。

聚类是将物理或抽象对象的集合分成由类似的对象组成的多个类的过程。其中,对第二点云数据进行聚类时,可以采用欧式距离聚类、k均值聚类或凝聚层次聚类等方法进行聚类,以将该第二点云数据划分为至少一个类别的子点云。

s14:判断该子点云的类别数量是否大于一个。

若大于,则执行如下步骤s16,否则,执行如下步骤s15。

s15:判定该第一点云数据属于同一个类别。

具体地,当第二点云数据进行聚类后得到的子点云的类别数量不大于一个时,也就是说,只有一个类别的子点云时,表示该第二点云数据中的数据点均属于同一个类别。由于第二点云数据是通过第一点云数据采样得到的,其很大程度上可以代表第一点云数据的特征,此时,可以推定该第一点云数据中的数据点也属于同一类别,可以结束聚类。然而,若子点云的类别数量大于一,即第二点云数据聚类后得到至少两个类别的子点云,此时需要执行如下步骤s16,将第一点云数据中的数据点划分到对应的子点云中。

s16:以该至少一个类别的子点云为基准数据,将第一点云数据中的数据点划分到对应的子点云中,以得到聚类后的点云数据。

具体地,如图5所示,步骤s16包括:

s161:选择其中一个子点云作为待划分点云。

具体地,在一个应用例中,第二点云数据经过聚类后,得到n个子点云b1,b2……bn,然后,可以在其中选择一个子点云(如b1)作为该带聚类点云进行后续步骤。

s162:获取第一点云数据中与该待划分点云相匹配的数据点,将其划分到该待划分点云中,并将其从第一点云数据中删除。

其中,该第一点云数据中可以先将已经存在该待划分点云中的数据点删除。然后,判断剩余的数据点是否与该待划分点云相匹配时,可以基于距离选择与该待划分点云中的数据点邻近的数据点,作为与该待划分点云相匹配的数据点,也可以根据该待划分点云的特征(如曲率范围等),将第一点云数据中与该待划分点云的特征类似的数据点作为与该待划分点云相匹配的数据点。

s163:判断该第一点云数据中的数据点是否均被删除。

若判断结果为否,则执行如下步骤s164,否则划分结束。

s164:选择另一个子点云作为该待划分点云,返回执行步骤s142。

具体地,每个子点云经过上述步骤s162之后,第一点云数据中有部分数据点被划分到待划分点云,同时会从第一点云数据中删除,当第一点云数据中所有数据点均被删除后,则表明第一点云数据中所有数据点均已经被划分到对应的子点云中,此时可以结束划分流程。然而,但第一点云数据中仍然存在数据点时,则表明还有数据未被划分到对应的子点云,此时可以选择另一个子点云作为待划分点云,返回执行步骤s162,继续进行划分,以将所有数据点都划分到对应的子点云。

由于第二点云数据已经是经过聚类后得到至少两个类别的子点云,此时,只需要将第一点云数据中的数据点划分到对应的子点云中,即可以完成该第一点云数据的聚类,得到聚类后的第一点云数据,过程简单,计算量较少,有助于快速实现聚类。

本实施例中,在获取第一点云数据,首先将第一点云数据进行采样,得到第二点云数据后,对采样后的第二点云数据进行聚类,得到至少两个类别的子点云,再以至少两个类别的子点云为基准数据,将第一点云数据中的数据点划分到对应的子点云中,以得到聚类后的点云数据。由此,利用采样将需要进行聚类的数据量减少,从而可以减少计算量,加快聚类速度。

本申请的点云聚类方法中,对第二点云数据进行聚类时,可以采用欧式距离聚类。

具体如图6所示,本申请点云聚类方法第二实施例是在本申请点云聚类方法第一实施例的基础上,进一步限定步骤s13包括:

s131:获取聚类半径。

其中,该聚类半径是预先设定的判断数据点是否属于同一类别的子点云的距离范围。其具体取值与步骤s12的采样精度以及聚类精度相关。

当该第二点云数据是基于采样半径对第一点云数据进行距离采样后得到的点云时,该聚类半径应大于对第一点云数据进行采样时的采样半径,例如该采样半径r的取值可以为a*r1,其中r1为聚类半径,0<a<1,优选地,a取0.8,则该采样半径不会过大导致后续聚类精度过低。

s132:对第二点云数据进行欧式距离聚类,以得到至少两个类别的子点云。

在一个应用例中,对第二点云数据进行欧式距离聚类时,可以将数据点间距离在聚类半径内的数据点划分为同一个类别。

进一步地,如图7所示,步骤s132具体包括:

s1321:获取第二点云数据中的一个未处理第三数据点,建立一个类别队列中。

当第二点云数据中的第三数据点已经查找到邻域点,则该第三数据点和其邻域点可以被标记为已处理,未被标记的数据点即为未处理数据点。

s1322:查找该未处理第三数据点的邻域点,该邻域点为与该未处理第三数据点的距离小于聚类半径的数据点。

s1323:将所有邻域点加入该未处理第三数据点所在的类别中,并将该未处理第三数据点和所有领域点标记为已处理。

具体地,初始时,对该第二点云数据进行欧式距离聚类时,可以先选取第二点云数据中的一个未处理第三数据点,建立该未处理第三数据点的类别队列,在该第二点云数据的未处理数据点中查找该未处理第三数据点的邻域点,也就是说,可计算未处理数据点与该未处理第三数据点的距离,当该距离小于聚类半径r1时,该未处理数据点即为第三数据点的邻域点。通过上述方法,即可以查找到第二点云数据中该第三数据点的所有邻域点,将该所有邻域点加入该未处理第三数据点所在的类别中,即可以得到一个类别的子点云,同时可以将该未处理第三数据点和所有领域点标记为已处理,以便于后续计算时不需要再计算标记为已处理的数据点,从而简化计算过程,降低计算量,有助于提高聚类速度。

s1324:判断第二点云数据中所有数据点是否均被标记为已处理。

若判断结果为否,则执行如下步骤s1325,否则结束聚类。

s1325:获取第二点云数据中的下一个未处理的数据点作为未处理第三数据点,建立一个新的类别队列,返回执行步骤s1322。

具体地,每次完成一个类别队列后,第二点云数据中的数据点会有部分被标记为已处理,即部分数据点被划分到一个类别的子点云中,然后需要判断聚类是否结束,此时可以判断第二点云数据中所有数据点是否均被标记为已处理,若所有数据点均被标记为已处理,则表明所有数据点均已经被划分到对应类别的子点云中,此时可以结束聚类。若第二点云数据中存在未被标记为已处理的数据点,则表明还有部分数据点未被划分到对应类别的子点云中,此时可以获取第二点云数据中的下一个未处理的数据点作为未处理第三数据点,建立一个新的类别队列,返回执行步骤s1322,直到第二点云数据中所有数据点都被标记为已处理。

经过上述聚类后,第二点云数据被划分为至少两个类别的子点云,后续在划分数据点时,可以基于距离将该子点云中数据点的邻近数据点划分到同一个子点云中。此时,可选地,如图8所示,步骤s162包括:

s1621:计算第一点云数据中的数据点与待划分点云中的每个第四数据点的第二距离。

s1622:判断第二距离是否小于聚类半径。

若小于,则执行如下步骤s1623,否则,执行步骤s1624。

s1623:判定该数据点为与待划分点云相匹配的数据点。

s1624:判定该数据点与待划分点云不匹配。

具体地,在一个应用例中,该第一点云数据中可以先将已经存在该第二点云数据中的数据点删除。然后,选择一个子点云作为待划分点云(如b1),然后选择待划分点云b1中的一个第四数据点,计算该第四数据点与第一点云数据中剩余数据点的第二距离,若该第二距离小于聚类半径,则表明第一点云数据中的该数据点为第四数据点的邻域点,此时可以判定该数据点为与待划分点云b1相匹配的数据点,可以将高数据点划分到待划分点云b1中,并将该数据点从第一点云数据中删除。若该第二距离不小于聚类半径,则判定该数据点与待划分点云b1不匹配。根据上述步骤的判断过程,则可以找到所有属于待划分点云b1的数据点,其他待划分点云也可以采用相同的方式获取匹配的数据点,最终可以实现对第一点云数据的聚类。

如图9所示,原始的第一点云数据a经过步骤s12(如距离采样)后得到第二点云数据b,该第二点云数据b经过步骤s13(如欧式距离聚类)后可以划分为多个子点云b1~b6,将第一点云数据a中的数据点经过步骤s14划分到对应的子点云后,即可以得到聚类后的点云数据a1~a6。本申请利用采样将需要进行聚类的数据量减少,从而可以减少计算量,加快聚类速度。

如图10所示,本申请图像处理设备20一实施例包括:相互连接的通信电路201和处理器202。

其中,该通信电路201用于发送和接收数据,是图像处理设备20与其他设备进行通信的接口。具体地,该通信电路201用于获取第一点云数据。

处理器202控制图像处理设备的操作,处理器202还可以称为cpu(centralprocessingunit,中央处理单元)。处理器202可能是一种集成电路芯片,具有信号的处理能力。处理器202还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

具体地,该处理器202用于执行程序以实现如本申请点云聚类方法第一或第二实施例所提供的方法。

当然,在其他实施例中,该图像处理设备20还可以包括存储器(图未示)等其他部件,此处不做具体限定。

本实施例中的图像处理设备可以是移动终端、固定终端、服务器等,也可以是集成的独立部件,例如图像处理芯片。

如图11所示,本申请具有存储功能的装置一实施例中,具有存储功能的装置30内部存储有指令301,该指令301被执行时实现如本申请点云聚类方法第一或第二实施例所提供的方法。

其中,具有存储功能的装置30可以是便携式存储介质如u盘、光盘,也可以是终端、服务器或集成的独立部件,例如图像处理芯片等。

以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1