掌桥专利:专业的专利平台
掌桥专利
首页

测量墙体的方法、装置、设备和介质

文献发布时间:2024-04-18 19:52:40



技术领域

本公开涉及人工智能领域,具体涉及计算机视觉和施工测量等技术领域,尤其涉及一种测量墙体的方法、装置、设备和介质。

背景技术

随着计算机技术和电子技术的发展,人工智能和机器人技术应用于越来越多的领域。但传统建筑领域通常还是采用落后的施工手段和方式,例如对建筑物砌筑结果的测量主要依赖人工通过手工工具、弹线等方式来实现,存在测量精度无法保证和人工成本越来越高的问题。

发明内容

本公开旨在提供一种利于提高测量精度、降低人工成本的测量墙体的方法、装置、电子设备和存储介质。

根据本公开的一个方面,提供了一种测量墙体的方法,包括:针对待测墙体包括的至少一个墙面中的每个墙面,基于针对待测墙体的点云数据将每个墙面投影至二维平面,得到每个墙面的二维图像;对于至少一个墙面中目标墙面的二维图像上的至少两个测量点,确定待测墙体上与至少两个测量点分别对应的至少两个墙体点的三维位置信息;以及根据至少两个墙体点的三维位置信息,确定针对待测墙体的测量结果,其中,测量结果由至少两个墙体点的相对位置关系表示。

根据本公开的另一个方面,提供了一种测量墙体的装置,包括:投影模块,用于针对待测墙体包括的至少一个墙面中的每个墙面,基于针对待测墙体的点云数据将每个墙面投影至二维平面,得到每个墙面的二维图像;墙体点确定模块,用于对于至少一个墙面中目标墙面的二维图像上的至少两个测量点,确定待测墙体上与至少两个测量点分别对应的至少两个墙体点的三维位置信息;以及测量结果确定模块,用于根据至少两个墙体点的三维位置信息,确定针对待测墙体的测量结果,其中,测量结果由至少两个墙体点的相对位置关系表示。

根据本公开的另一个方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开提供的测量墙体的方法。

根据本公开的另一个方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开提供的测量墙体的方法。

根据本公开的另一个方面,提供了一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令存储于可读存储介质和电子设备其中至少之一上,所述计算机程序/指令在被处理器执行时实现本公开提供的测量墙体的方法。

应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

附图用于更好地理解本方案,不构成对本公开的限定。其中:

图1是根据本公开实施例的测量墙体的方法和装置的应用场景示意图;

图2是根据本公开实施例的测量墙体的方法的流程示意图;

图3是根据本公开实施例的采集得到点云数据的原理示意图;

图4是根据本公开实施例的确定待测墙体的墙体点云数据的原理示意图;

图5是根据本公开另一实施例的确定待测墙体的墙体点云数据的原理示意图;

图6是根据本公开实施例的对墙面进行二维投影的原理示意图;

图7是根据本公开实施例的测量墙体的原理示意图;

图8是根据本公开实施例的测量墙体的装置的结构框图;以及

图9是用来实施本公开实施例的测量墙体的方法的电子设备的框图。

具体实施方式

以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

传统建筑行业面临诸多制约,例如落后的施工手段和方式、用工荒、工人老龄化、用工成本上升等。随着人工智能和机器人技术的发展,有望可以借助该些技术,将建筑行业的工人从传统的具有“危、繁、脏、重”特点的施工作业和环境中解脱出来,以从事更加需要人工作业的工作。

为了解决该问题,本公开提供了一种测量墙体的方法、装置、设备和介质。以下先结合图1对本公开提供的方法和装置的应用场景进行描述。

图1是根据本公开实施例的测量墙体的方法和装置的应用场景示意图。

如图1所示,该实施例的应用场景100可以包括采集设备110,该采集设备110例如可以为3D扫描设备,具体可以包括激光雷达、RGB双目相机、3D结构光相机或飞行时间深度相机(Time-Of-flight camera,TOF相机)等。该采集设备110例如可以用于采集其所在环境中任意物体的点云数据。

在一实施例中,在需要对墙体120进行测量时,例如可以在墙体120的正前方或根据需求在墙体120周边的任意位置架设采集设备110,以借助采集设备110对墙体120进行点云数据的采集。采集设备110例如还可以与电子设备130有线或无线通信连接,以将采集得到的点云数据传送给电子设备130,供电子设备130对采集的点云数据进行处理。其中,采集设备110的架设位置例如可以根据测量需求等来确定,本公开对此不做限定。

其中,电子设备130例如可以为具有处理功能的各种电子设备,包括但不限于膝上型便携计算机、台式计算机和服务器等等。例如,该电子设备130中还可以运行有各种客户端应用,例如可以运行有三维建模类应用、数据处理类应用、质量评估类应用、云平台类应用等(仅为示例)。

在一实施例中,电子设备130例如可以通过对采集设备110采集的墙体120的点云数据进行处理,来得到墙体120中每个墙面的二维图像。根据二维图像中的测量点,来确定墙体120中与测量点对应的墙体点,随后基于多个墙体点彼此之间的相对位置关系,来确定针对墙体120的测量结果140。

在一实施例中,该应用场景100还可以包括服务器150。该服务器150例如可以为数据库服务器、云服务器或者区块链服务器等任意类型的服务器,该服务器150例如也可以为用于支持电子设备130中安装的客户端应用运行的后台管理服务器,本公开对此不做限定。

在一实施例中,电子设备130例如还可以将采集设备110针对墙体120所采集的点云数据发送给服务器150,由服务器150对该点云数据进行处理,以实现对墙体120的测量,得到测量结果140。

需要说明的是,本公开提供的测量墙体的方法可以由电子设备130执行,也可以由服务器150执行。相应地,本公开提供的测量墙体的装置可以设置在电子设备1 30中,也可以设置在服务器150中。

应该理解,图1中的电子设备130、墙体120和服务器150的数目和类型仅仅是示意性的。根据实现需要,可以具有任意数目和类型的电子设备130、墙体120和服务器150。

以下将结合图2~图7对本公开提供的测量墙体的方法进行详细描述。

图2是根据本公开实施例的测量墙体的方法的流程示意图。

如图2所示,该实施例的测量墙体的方法200可以包括操作S210~操作S230。

在操作S210,针对待测墙体包括的至少一个墙面中的每个墙面,基于针对待测墙体的点云数据将每个墙面投影至二维平面,得到每个墙面的二维图像。

根据本公开的实施例,针对待测墙体的点云数据例如可以为将采集设备设置在待测墙体中需要检测的墙面正前方,由采集设备所采集到的点云数据。在需要检测的墙面为多个墙面时,可以针对每个墙面采集得到一组点云数据,并对针对每个墙面采集得到的一组点云数据进行三维点云数据到二维图像的转换,从而得到每个墙面的二维图像。

例如,可以根据点云与图像的映射关系,将三维点云数据(x,t,z)转换为二维像素点(u,v),随后再根据二维像素点进行图像绘制,从而得到每个墙面的二维图像。

例如,在得到每个墙面的二维图像时,可以利用点云库(Point Cloud Library)读取点云数据(Point Cloud Data,PCD),并调用OpenCV库,将在三维坐标系中表示墙面深度的坐标值经过一定的变换得到图像中每个像素点的灰度值,由该灰度值表示每个像素点对应的深度值。如此,投影得到的二维图像中的每个像素都有对应的深度值。

例如,还可以采用OpenGL(Open Graphics Library)对点云数据进行坐标转换,从而得到点云数据投影后的二维数据,得到每个墙面的二维图像。具体例如可以采用正射投影变换,来将三维点云数据转换为二维坐标系下的数据,从而得到二维图像。可以理解的是,在该正射投影变换过程中,例如可以先将点云数据经由投影矩阵进行变换,得到与点云数据对应的裁剪空间中的裁剪坐标值,其中,裁剪坐标为齐次坐标。随后,在裁剪空间中对点云数据进行裁剪,对裁剪后的点云进行透视除法处理,得到变换至标准化设备坐标系(Normalized Device Coordinates,简称为NDC)中的点云数据,随后对变换至NDC坐标系中的点云数据进行视口变换,得到二维图像对应像素的坐标值,从而得到每个墙面的二维图像。

例如,可以根据采集设备的内外参,将采集得到的基于采集设备构建的坐标系下的点云数据转换至世界坐标系下,随后,将世界坐标系下的点云数据作为WorldToViewportPoint()工具的输入,由该工具返回点云数据对应的二维像素点所在的视口位置,以及二维像素点对应的墙体点的深度信息等。

根据本公开的实施例,在对墙体的点云数据进行投影时,例如可以对待测墙体的点云数据进行平面拟合,得到每个墙面的法向量,随后沿着每个墙面的法向量的方向,进行点云数据的投影,从而得到每个墙面的二维图像。

在操作S220,对于至少一个墙面中目标墙面的二维图像上的至少两个测量点,确定待测墙体上与至少两个测量点分别对应的至少两个墙体点的三维位置信息。

根据本公开的实施例,在投影得到每个墙面的二维图像后,例如可以经由显示设备显示该二维图像。经由用户对该显示设备显示的二维图像中目标二维图像的点选操作,确定至少两个测量点。可以理解的是,目标二维图像可以为显示的二维图像中的任一图像,目标墙面为与目标二维图像对应的墙面。

根据本公开的实施例,可以基于针对二维图像构建的坐标系与任意三维坐标系之间的变换关系,来确定与二维图像上的测量点对应的墙体点的三维位置信息。例如,任意三维坐标系可以为相对于待测墙体固定设置的参考物所在的三维坐标系,或者,任意三维坐标系可以为世界坐标系,本公开对此不做限定。在一实施例中,例如可以经由与操作S210的投影过程互逆的变换过程,来将至少两个测量点转换至三维坐标系中,从而得到与至少两个测量点分别对应的至少两个墙体点的三维位置信息。

在一实施例中,为了便于进行二维坐标到三维坐标的变换,该实施例在将每个墙面投影至二维平面的过程中,例如还可以存储有与二维图像中的每个像素点对应的深度信息。则在确定与至少两个测量点分别对应的至少两个墙体点的三维位置信息时,可以基于该深度信息进行二维坐标点到三维位置信息的变换。

在操作S230,根据至少两个墙体点的三维位置信息,确定针对待测墙体的测量结果。

根据本公开的实施例,例如可以根据至少两个墙体点的三维位置信息,确定至少两个墙体点彼此之间的相对位置关系。具体可以根据至少两个墙体点中任意两个墙体点的三维位置信息,计算该任意两个墙体点之间的距离,将该计算得到的距离作为针对待测墙体的测量结果。

根据本公开的实施例,例如可以根据任意两个墙体点的三维位置信息,确定该任意两个墙体点的连线与水平方向(和/或竖直方向)之间的夹角。将计算得到的夹角作为针对待测墙体的测量结果。

可以理解的是,测量结果例如还可以由指示相对位置关系的至少两个指标来表示。例如,测量结果可以既包括上述的任意两个墙体点之间的距离,又包括该任意两个墙体点的连线与水平方向(和/或竖直方向)之间的夹角,本公开对此不做限定。

本公开实施例的技术方案,通过将点云数据投影到二维平面,再结合二维平面上标记的测量点与三维墙体点的对应关系,可以实现对墙体的自动化测量和远程测量,测量过程无需人工采用测量工具进行测量。因此,可以降低测量成本,提高测量准确性。

图3是根据本公开实施例的采集得到点云数据的原理示意图。

根据本公开的实施例,可以在至少两个采集参数下对待测墙体进行点云数据的采集,随后通过对多个采集参数下采集的点云数据进行拼接,得到针对待测墙体的点云数据。如此,可以消除由于墙体某些区域不可见、被遮挡或由于强烈反光的作用导致采集的点云数据有所缺失的情形,利于提高得到的待测墙体的点云数据的完整性。

根据本公开的实施例,例如可以通过在至少两个采集参数下,由PhoXi3D扫描仪等向待测墙体投射编码结构光,并基于接收的反射光进行点云的解释和重建,从而采集得到点云数据。即,采集设备可以采用PhoXi 3D扫描仪等,本公开对此不做限定。

可以理解的是,采集点云数据的至少两个采集参数例如可以根据实际需要测量的墙面来设定。例如,在如图3所示的实施例300中,若需要对墙体的具有“帆船”图案的外墙面310进行测量,则至少两个采集参数可以包括外墙面正前方且朝向外墙面的至少两个角度、或者至少两个高度等,本公开对此不做限定。例如,可以将采集设备设置在如图3所示的位置301~位置303进行图像采集,在位置301~位置303处,采集设备的采集角度例如可以相同或不同,本公开对此不做限定。

例如,在该至少两个采集参数下,可以采集得到至少两组点云数据,该至少两组点云数据可以构成针对待测墙体采集到的原始点云数据。例如,可以将在位置301~位置303处采集的三组点云数据构成原始点云数据320。

在得到原始点云数据320后,该实施例可以将至少两组点云数据由不同的设备坐标系下转换至统一的目标坐标系下,从而得到变换后点云数据330。随后,可以对变换后点云数据进行拼接,得到针对待测墙体的点云数据340。

其中,目标坐标系例如可以为根据实际需求预先设定的任意坐标系,本公开对此不做限定。

在一实施例中,例如可以相对于待测墙体固定地设置参考物350,该参考物350例如可以为棋盘格、靶标等,参考物350例如可以与需要测量的外墙面310平行设置,且可以固定于外墙面310上,本公开对该参考物350的设置位置不做限定。

由于待测墙体与参考物350彼此是相对静止的,因此,该实施例可以将基于参考物350构建的坐标系作为目标坐标系。如此,该实施例还可以根据预先标定的参考物350与采集设备之间的相对位置关系,来确定针对采集设备构建的坐标系与针对参考物350构建的目标坐标系之间的变换关系。随后基于该变换关系,来将至少两组点云数据变换至统一的目标坐标系下,得到变换后点云数据330。

可以理解的是,对于在不同采集参数下采集点云数据的采集设备而言,确定的变换关系是不同的。对于任一采集参数下采集点云数据的采集设备,若设定以采集设备的中心点为针对采集设备构建的坐标系原点,以从采集设备的中心点垂直指向外墙面310的方向作为针对采集设备构建的坐标系Z轴,构建得到满足右手法则的针对采集设备的坐标系,则根据目标坐标系的坐标原点在该针对采集设备构建的坐标系中的坐标值(x

其中,a

根据本公开的实施例,点云数据的拼接是指任意位置的点云数据的重叠部分相互配准的过程。在对变换后点云数据进行拼接时,例如可以先采用迭代最近点算法(Iterative Closest Point,ICP算法)等点云配准算法确定统一至目标坐标系下的至少两组点云数据彼此之间的匹配关系,随后基于该匹配关系进行点云的拼接,从而得到针对待测墙体的完整点云P

本公开实施例通过相对于待测墙体固定设置参考物,便于进行至少两个采集参数下采集的点云数据的拼接,利于提高点云拼接效率和点云拼接的准确性。

图4是根据本公开实施例的确定待测墙体的墙体点云数据的原理示意图。

根据本公开的实施例,在设置有相对于待测墙体固定设置的参考物的情况下,采集设备所采集的点云数据中相应地包括有参考物的点云数据。则在对点云数据进行投影时,需要从拼接得到的针对待测墙体的点云数据中剔除该参考物的点云数据,从而得到相对而言仅描述待测墙体的墙体点云数据。随后基于该墙体点云数据来将每个墙面投影至二维平面,得到该每个墙面的二维图像。其中,例如可以将每个墙面投影至与该每个墙面对应的二维平面,该对应的二维平面例如可以是在该每个墙面的法线方向上的任意一个平面,本公开对此不做限定。

例如,该实施例可以基于参考物与待测墙体之间的相对位置信息来对针对待测墙体的点云数据进行分割处理,将分割处理得到的点云数据作为墙体点云数据。具体地,对点云数据进行分割处理的过程即为点云分割过程,点云分割的目的是为了提取点云数据中的不同物体。该实施例中,可以基于相对位置信息来确定分割阈值,该分割阈值的设置可以使得参考物的点云数据不在阈值范围内,如此即可基于分割阈值进行点云分割,从而得到墙体点云数据。

在一实施例中,对点云数据进行分割处理时,除了考虑参考物与待测墙体之间的相对位置信息之外,例如还可以考虑待测墙体的三维尺寸。该三维尺寸例如可以是基于待测墙体的预定三维模型确定的目标三维尺寸。基于该目标三维尺寸及相对位置信息,可以确定待测墙体在针对参考物构建的坐标系中的坐标范围,该实施例可以将该坐标范围的边界值作为分割阈值,进行点云分割。以将除描述待测墙体的点云数据外的其他点云数据剔除,排除参考物和扫描仪扫描过程中环境等对待测墙体的干扰。

例如,如图4所示,在该实施例400中,若设定待测墙体410的三维尺寸为长×宽×高(L×W×H)。且相对于待测墙体左下角顶点而言,针对参考物420构建的坐标系的原点O(0,0,0)位于待测墙体410的长度方向上长度为l,宽度方向上宽度为w,高度方向上高度为h的位置。则,根据待测墙体410的三维尺寸可以确定,待测墙体410在针对参考物420构建的坐标系中的坐标范围为X轴方向的范围(L-l,-l)、Y轴方向的范围(W-w,-w)、Z轴方向的范围(H-h,-h)。则该实施例可以将该三个范围分别作为三个轴的分割阈值401,保留针对待测墙体410的点云数据中位于该三个范围内的点云,剔除不位于该三个范围内的点云,从而得到待测墙体的墙体点云数据。

在一实施例中,可以将基于分割阈值401对针对待测墙体的点云数据402进行分割后所得到的点云数据作为分割后点云数据403,随后基于该分割后点云数据403来确定待测墙体的墙体点云数据。

示例性地,可以对该分割后点云数据403进行离群点滤波处理等,将离群点滤波处理所得到的点云数据作为待测墙体的墙体点云数据。通过离群点滤波处理,可以去除点云数据的采集过程中由于粉尘、飞虫等引入的噪点,利于提高确定的墙体点云数据的精度。可以理解的是,离群点滤波处理仅作为示例以利于理解本公开,例如还可以通过对分割后点云数据进行冗余点去除和/或孤点去除等滤波处理,从而得到墙体点云数据。

示例性地,还可以将前述的点云分割作为粗分割过程,随后通过对分割后点云数据403进行精细分割,将精细分割后的点云数据作为墙面点云数据。其中,精细分割时,例如可以基于待测墙体的预定三维模型来确定精细分割的依据,以使得最终确定的测量结果更能够反映真实墙体与墙体模型之间的差异,便于对墙体砌筑提供指导信息。

示例性地,在对分割后点云数据403进行精细分割之前,例如可以先对分割后点云数据403进行离群点滤波处理等,随后对滤波处理后得到的滤波后点云数据进行精细分割。

例如,可以依据待测墙体中每个墙面的预定纹理厚度来对分割后点云数据403进行精细分割。其中,每个墙面的预定纹理厚度是基于上文描述的待测墙体的预定三维模型确定的。

具体地,例如可以先确定分割后点云数据403中描述每个墙面的点云数据404,得到分别描述待测墙体410包括的至少一个墙面的至少一组点云数据,即每组点云数据描述一个墙面。例如,设定参考物与待测墙体410的外墙面平行,且针对参考物构建的坐标系的Z轴与该外墙面的法线方向平行,则该实施例可以根据分割后点云数据在针对参考物构建的坐标系中各个坐标轴方向的坐标值,将分割后点云数据划分为至少一个组,得到分别描述至少一个墙面的至少一组点云数据。或者,也可以采用平面拟合算法来对分割后点云数据进行平面拟合,拟合得到至少一个平面,将分割后点云数据中在拟合得到的每个平面的预定范围内的点云数据划分为一组点云数据,从而得到至少一组点云数据。

在得到每个墙面的点云数据后,可以基于每个墙面的预定纹理厚度405和该描述每个墙面的点云数据404,来确定在每个墙面的法线方向上的分割阈值。

例如,可以先根据描述该每个墙面的点云数据404沿该每个墙面的法线方向的坐标值,将坐标值中的众数作为该每个墙面在法线方向上的坐标值的中心值V

例如,在确定每个墙面的法线方向上的分割阈值时,可以先根据描述每个墙面的点云数据404,确定该每个墙面在每个墙面的法线方向上的位置信息406。即确定描述每个墙面的点云数据404沿该每个墙面的法线方向的坐标值。随后,可以根据该每个墙面在法线方向上的位置信息406和每个墙面的预定纹理厚度405,确定在每个墙面的法线方向上的查找范围407。例如,可以将上文描述的[V

在确定了在每个墙面的法线方向上的分割阈值后,即可根据在待测墙体410包括的所有墙面的法线方向上的分割阈值,来对点云数据进行精细分割处理,例如可以对分割后点云数据403进行精细分割处理,也可以对前述的滤波后点云数据进行精细分割处理,从而得到待测墙体的墙体点云数据410’。

图5是根据本公开另一实施例的确定待测墙体的墙体点云数据的原理示意图。

在一实施例中,例如可以将上文通过离群点滤波处理所得到的点云数据或者通过精细分割得到的点云数据作为待配准的点云数据。随后基于该待配准的点云数据,来确定待测墙体的墙体点云数据。例如,可以根据待配准的点云数据所对应的采集参数,对待配准点云进行配准并拼接,从而得到墙体点云数据。通过该配准,可以更好地消除配准偏差。这是由于在对墙体进行扫描和点云的采集过程中,在不同角度下采集的点云可能会由于双目相机成像畸变,存在参考物的点云位置不能完全与理想状态下的点云位置吻合的情况,从而会使得采集的点云数据在一定程度上有细微偏差。

可以理解的是,若在对点云数据进行分割处理之前,已经进行了在至少两个采集参数下采集的点云数据的配准和拼接,则该实施例所提及的对待配准的点云数据的配准则为二次配准,以进一步保证配准和拼接的精度。

如图5所示,在一实施例500中,可以将上文所提及的对分割后点云数据501进行精细分割后所得到的点云数据,或者对分割后点云数据501进行滤波处理后所得到的点云数据,作为待配准点云数据502。随后该实施例例如可以采用法向迭代最近点(NormalIterative Closest Point,NICP)算法来对该待配准点云数据502中采集设备在至少两个采集参数下采集到的点云数据进行配准,得到配准点云对503。该实施例可以基于该配准点云对,对该待配准点云数据502中采集设备在至少两个采集参数下采集到的点云数据进行拼接,从而得到待测墙体的墙体点云数据504。

其中,为了避免ICP算法等进行配准时容易陷入局部最优的情形,NICP算法在对点云数据进行配准时,同时考虑了点云数据的局部特征(例如法向量和曲率等特征)。同时,在迭代求解配准结果的过程中,所采用的误差函数不仅涉及需要配准的两组点云之间的投影距离,还涉及对应点云数据的法向量的角度差。如此,可以充分利用实际曲面的特征来对错误的点云匹配结果进行滤除。

NICP算法的点云数据的匹配规则为:如果点云数据没有明确定义(well define)的法向量,则拒绝对该点云数据进行匹配;如果两个点云数之间的距离大于距离阈值,则拒绝对该两个点云数据进行匹配;如果两个点云数据之间的曲率的差距大于差距阈值,则拒绝对该两个点云数据进行匹配;若果两个点云数据之间的法向量的角度差大于角度差阈值,则拒绝对该两个点云数据进行匹配。NICP算法的迭代过程中需要计算点云数据的法向量和曲率。其中,例如可以采用kd树搜索算法来估计点云数据的法向量和曲率。

图6是根据本公开实施例的对墙面进行二维投影的原理示意图。

根据本公开的实施例,在基于待测墙体的点云数据将每个墙面投影至二维平面时,例如可以先采用上文描述的实施例所描述的原理,基于针对待测墙体的点云数据来确定待测墙体的墙体点云数据。该墙体点云数据例如可以为上文针对图4描述的实施例所得到的墙体点云数据410’,也可以为上文针对图5描述的实施例所得到的墙体点云数据504,本公开对此不做限定。

如图6所示,在一实施例600中,设定确定的待测墙体的墙体点云数据包括的坐标值是在针对参考物构建的坐标系610下的。该实施例600在对每个墙面进行二维投影时,例如可以先将确定的待测墙体的墙体点云数据601由针对参考物构建的坐标系610变换至NDC坐标系620中,从而得到标准点云数据602。随后,该实施例可以将标准点云数据投影至与每个墙面对应的二维平面,从而得到每个墙面的二维图像603。

例如,在进行坐标变换之前,可以设定观察空间(例如针对参考物构建的坐标系610)为+X轴向右,+Y轴向上,+Z轴向屏幕外的一个右手坐标系,观察方向沿着-Z轴,即看向屏幕内部。通过坐标变换,点被变换到规则观察体(Canonical View Volume,简称CVV)中。其中,CVV也被称为齐次裁剪空间,即标准化设备坐标系620。CVV是左手坐标系,+X轴向右、+Y轴向上,+Z轴指向屏幕内部。在将墙体点云数据P

其中,例如可以将投影矩阵和透视除法整合为透视投影矩阵,以对待测墙体的墙体点云数据进行投影变换。经由投影变换和推导,可以得到P

/>

其中,视景体(frustum)的四个边平面在近视截面上所截出的矩形区域的左边在针对参考物的坐标系610中X轴的坐标值为m,所截出的矩形区域的右边在针对参考物的坐标系610中X轴的坐标值为r,所截出的矩形区域的顶边在针对参考物的坐标系610中Y轴的坐标值为p,所截出的矩形区域的底边在针对参考物的坐标系610中Y轴的坐标值为b,距离观察点的最近距离在针对参考物的坐标系610中Z轴的坐标值为-n,距离观察点的最远距离在针对参考物的坐标系610中Z轴的坐标值为-f。

例如,在得到标准点云数据602后,可以对标准点云数据602进行视口变换,得到二维图像对应像素的坐标值,从而转换得到每个墙面的二维图像603。可以理解的是,在进行视口变换的同时,可以将标准点云数据602在Z轴上的坐标值作为对应像素的深度信息,从而得到每个墙面在标准化设备坐标系中的深度信息。

在该实施例600中的基础上,在确定至少两个测量点对应的至少两个墙体点的三维位置信息时,可以基于目标墙面在标准化设备坐标系中的深度信息,对至少两个测量点在目标墙面的二维图像603上的像素位置604进行视口逆变换和投影逆变换,从而将至少两个测量点的像素位置变换为三维位置,得到对应的至少两个墙体点的三维位置信息605。可以理解的是,该三维位置信息605例如可以是在针对参考物的坐标系610下的位置信息,也可以是世界坐标系或任意坐标系下的位置信息,本公开对此不做限定。

例如,设定某个墙体点在针对参考物构建的坐标系610中的三维位置信息可以采用三维点向量v

v

其中,T

其中,col、row分别表示二维图像的像素总列数和总行数,

基于上述原理,可以根据至少两个测量点在目标墙面的为二维图像上的像素位置,及该至少两个测量点所在像素位置处像素所对应的深度信息,计算得到与至少两个测量点分别对应的至少两个墙体点的三维位置信息。

该实施例中,通过基于透视投影矩阵进行点云数据的投影,可以提高最终投影得到的二维图像的准确性和投影效率,且可以存储相对应的深度信息。再者,通过与投影互逆的计算过程,可以计算得到与二维图像上的位置点对应的墙体点的三维位置信息。

图7是根据本公开实施例的测量墙体的原理示意图。

根据本公开的实施例,在经由上述实施例得到至少两个墙体点的三维位置信息之后,即可基于该三维位置信息来确定待测墙体的测量结果。

在一实施例中,如图7所示,在实施例700中,设定至少两个墙体点至少包括墙体点701和墙体点702,其中,墙体点701的三维位置信息为

在一实施例中,如图7所示,在设定至少两个墙体点至少包括墙体点701、墙体点702和墙体点703,其中,墙体点703的三维位置信息为

其中,连线711可以采用从墙体点701指向墙体点702的向量

在一实施例中,如图7所示,在设定至少两个墙体点至少包括墙体点701、墙体点702、墙体点703和墙体点704,且其中的三个墙体点(例如墙体点702、墙体点703、墙体点704)不共线,另一个墙体点(例如作为指定墙体点的墙体点701)不在该三个墙体点的共面平面内。其中,墙体点704的三维位置信息为

具体地,该实施例可以采用主成分分析(Principle Component Analysis,PCA)方法等来拟合得到墙体点702、墙体点703和墙体点704所在的共面平面的平面法向量N。该实施例可以将解算得到的墙体点701在该平面法向量N上的分量的取值作为距离D2。可以理解的是,上述求解距离D2的原理仅作为示例以利于理解本公开,本公开对此不做限定。

可以理解的是,该实施例可以将前述的距离D1、夹角α和距离D2中的一个或多个作为针对待测墙体的测量结果。可以理解的是,上述的测量结果仅作为示例以利于理解本公开,本公开对此不做限定。

基于本公开提供的测量墙体的方法,本公开还提供了一种测量墙体的装置。以下将结合图8对该装置进行详细描述。

图8是根据本公开实施例的测量墙体的装置的结构框图。

如图8所示,该实施例的测量墙体的装置800可以包括投影模块810、墙体点确定模块820和测量结果确定模块830。

投影模块810用于针对待测墙体包括的至少一个墙面中的每个墙面,基于针对待测墙体的点云数据将每个墙面投影至二维平面,得到每个墙面的二维图像。在一实施例中,投影模块810可以用于执行上文描述的操作S210,在此不再赘述。

墙体点确定模块820用于对于至少一个墙面中目标墙面的二维图像上的至少两个测量点,确定待测墙体上与至少两个测量点分别对应的至少两个墙体点的三维位置信息。在一实施例中,墙体点确定模块820可以用于执行上文描述的操作S220,在此不再赘述。

测量结果确定模块830用于根据至少两个墙体点的三维位置信息,确定针对待测墙体的测量结果。其中,测量结果由至少两个墙体点的相对位置关系表示。在一实施例中,测量结果确定模块830可以用于执行上文描述的操作S230,在此不再赘述。

根据本公开的实施例,上述投影模块810可以包括墙体点云确定子模块和投影子模块。墙体点云确定子模块用于基于针对待测墙体的点云数据,确定待测墙体的墙体点云数据。投影子模块用于对待测墙体的墙体点云数据进行投影变换和视口变换,以将每个墙面投影至与每个墙面对应的二维平面,得到每个墙面的二维图像和每个墙面在标准化设备坐标系中的深度信息。上述墙体点确定模块820具体可以用于基于目标墙面在标准化设备坐标系中的深度信息,对至少两个测量点在目标墙面的二维图像上的像素位置进行视口逆变换和投影逆变换,得到与至少两个测量点分别对应的至少两个墙体点的三维位置信息。

根据本公开的实施例,上述测量结果确定模块830具体可以用于执行以下操作中的至少之一:根据至少两个墙体点中任意两个墙体点的三维位置信息,确定任意两个墙体点之间的距离;根据至少两个墙体点中三个墙体点的三维位置信息,确定连接三个墙体点的三条连线中任意两条连线之间的夹角;根据至少两个墙体点中四个目标墙体点的三维位置信息,确定四个目标墙体点中的指定墙体点到四个目标墙体点中其他三个墙体点的共面平面的距离;其中,其他三个墙体点不共线,指定墙体点不在其他三个墙体点的共面平面内。

根据本公开的实施例,上述测量墙体的装置800还可以包括点云获取模块、点云变换模块和点云拼接模块。点云获取模块用于获取采集设备在至少两个采集参数下针对待测墙体采集到的原始点云数据。点云变换模块用于根据针对采集设备构建的坐标系与目标坐标系之间的变换关系,将原始点云数据变换至目标坐标系下,得到变换后点云数据。点云拼接模块用于拼接变换后点云数据,得到针对待测墙体的点云数据。其中,目标坐标系为任意的预定三维坐标系。

根据本公开的实施例,上述原始点云数据包括相对于待测墙体固定设置的参考物的点云数据。上述测量墙体的装置800还可以包括变换关系确定模块,用于根据参考物与采集设备之间的相对位置关系,确定针对采集设备构建的坐标系与针对参考物构建的目标坐标系之间的变换关系。

根据本公开的实施例,针对待测墙体的点云数据包括相对于待测墙体固定设置的参考物的点云数据。上述投影模块810例如可以包括墙体点云确定子模块和投影子模块。墙体点云确定子模块用于基于针对待测墙体的点云数据,确定待测墙体的墙体点云数据。该墙体点云确定子模块可以包括点云分割单元和墙体点云确定单元。点云分割单元用于基于待测墙体的目标三维尺寸和参考物与待测墙体之间的相对位置信息,对针对待测墙体的点云数据进行分割,得到分割后点云数据。墙体点云确定单元用于基于分割后点云数据,确定待测墙体的墙体点云数据。投影子模块用于基于墙体点云数据将每个墙面投影至与每个墙面对应的二维平面,得到每个墙面的二维图像。其中,目标三维尺寸是基于待测墙体的预定三维模型确定的。

根据本公开的实施例,上述墙体点云确定单元可以包括滤波子单元和点云确定子单元。滤波子单元用于对分割后点云数据进行离群点滤波处理,得到第一点云数据。点云确定子单元用于基于第一点云数据,确定待测墙体的墙体点云数据。

根据本公开的实施例,上述墙体点云确定单元可以包括墙面点云确定子单元、分割阈值确定子单元、点云分割子单元和点云确定子单元。墙面点云确定子单元用于确定分割后点云数据中描述每个墙面的点云数据。分割阈值确定子单元用于基于每个墙面的预定纹理厚度和描述每个墙面的点云数据,确定在每个墙面的法线方向上的分割阈值。点云分割子单元用于基于分割后点云数据,根据在至少一个墙面的法线方向上的分割阈值对点云数据进行分割处理,得到第二点云数据。点云确定子单元用于基于第二点云数据,确定待测墙体的墙体点云数据。其中,每个墙面的预定纹理厚度是基于预定三维模型确定的。

根据本公开的实施例,上述分割阈值确定子单元具体用于:根据描述每个墙面的点云数据,确定每个墙面在每个墙面的法线方向上的位置信息;根据位置信息和每个墙面的预定纹理厚度,确定在每个墙面的法线方向上的查找范围;在查找范围内查找描述每个墙面的点云数据,确定在每个墙面的法线方向上的极值点云数据;以及根据极值点云数据包括的沿每个墙面的法线方向的坐标值,确定针对每个墙面的分割阈值。

根据本公开的实施例,针对第一点云数据和第二点云数据中的任一点云数据,该任一点云数据包括采集设备在至少两个采集参数下采集到的数据。上述点云确定子单元具体可以用于:采用法向迭代最近点算法对任一点云数据中采集设备在至少两个采集参数下采集到的点云数据进行配准,得到配准点云对;以及根据配准点云对,对任一点云数据中采集设备在至少两个采集参数下采集到的点云数据进行拼接,得到待测墙体的墙体点云数据。

需要说明的是,本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。

根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。

图9示出了可以用来实施本公开实施例的测量墙体的方法的示例电子设备900的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。

如图9所示,设备900包括计算单元901,其可以根据存储在只读存储器(ROM)902中的计算机程序或者从存储单元908加载到随机访问存储器(RAM)903中的计算机程序,来执行各种适当的动作和处理。在RAM 903中,还可存储设备900操作所需的各种程序和数据。计算单元901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。

设备900中的多个部件连接至I/O接口905,包括:输入单元906,例如键盘、鼠标等;输出单元907,例如各种类型的显示器、扬声器等;存储单元908,例如磁盘、光盘等;以及通信单元909,例如网卡、调制解调器、无线通信收发机等。通信单元909允许设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

计算单元901可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元901的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元901执行上文所描述的各个方法和处理,例如测量墙体的方法。例如,在一些实施例中,测量墙体的方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元908。在一些实施例中,计算机程序的部分或者全部可以经由ROM 902和/或通信单元909而被载入和/或安装到设备900上。当计算机程序加载到RAM 903并由计算单元901执行时,可以执行上文描述的测量墙体的方法的一个或多个步骤。备选地,在其他实施例中,计算单元901可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行测量墙体的方法。

本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。其中,服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务(″Virtual Private Server″,或简称″VPS″)中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

技术分类

06120116334480