一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

孔洞位置的确定方法和元宇宙中三维模型的生成方法与流程

2022-12-07 00:08:29 来源:中国专利 TAG:


1.本公开涉及人工智能领域,具体涉及虚拟现实、增强现实、元宇宙、计算机视觉和深度学习等技术领域,尤其涉及一种孔洞位置的确定方法和三维模型的生成方法、装置、设备、介质。


背景技术:

2.随着计算机技术和网络技术的发展,各种新兴技术应运而生。例如,生成场景的三维模型的三维重建技术得到快速发展。通常,在三维重建技术中,场景中墙体包围的孔洞被当作墙体来处理。而为了景深漫游技术的实现,通常需要将三维重建技术所得到的三维模型中孔洞所在位置的墙体去除。


技术实现要素:

3.本公开旨在提供一种孔洞位置的确定方法和三维模型的生成方法、装置、设备和介质,以对孔洞进行定位,便于自动去除墙体中的孔洞。
4.根据本公开的一个方面,提供了一种孔洞位置的确定方法,包括:获取包括建筑物的图像中墙体区域的位置信息和墙体区域中每个像素点的深度值;确定墙体区域包括的至少一个像素点列中的目标列,目标列包括的多个像素点的深度值差异大于第一预定差异;以及根据目标列包括的像素点,确定孔洞的像素位置。
5.根据本公开的另一个方面,提供了一种三维模型的生成方法,包括:根据包括建筑物的图像,生成针对建筑物的点云数据;确定图像中孔洞的像素位置;以及去除点云数据中与像素位置对应的目标点云数据,得到建筑物的三维模型,其中,孔洞的像素位置是采用本公开提供的孔洞位置的确定方法所确定的。
6.根据本公开的另一个方面,提供了一种孔洞位置的确定装置,包括:信息获取模块,用于获取包括建筑物的图像中墙体区域的位置信息和墙体区域中每个像素点的深度值;目标列确定模块,用于确定墙体区域包括的至少一个像素点列中的目标列,目标列包括的多个像素点的深度值差异大于第一预定差异;以及位置确定模块,用于根据目标列包括的像素点,确定孔洞的像素位置。
7.根据本公开的另一个方面,提供了一种三维模型的生成装置,包括:点云生成模块,用于根据包括建筑物的图像,生成针对建筑物的点云数据;孔洞位置确定模块,用于确定图像中孔洞的像素位置;以及点云去除模块,用于去除点云数据中与像素位置对应的目标点云数据,得到建筑物的三维模型,其中,孔洞位置确定模块是采用本公开提供的孔洞位置的确定装置来确定孔洞的像素位置的。
8.根据本公开的另一个方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开提供的孔洞位置的确定方法和/或三维模型的生成方法。
9.根据本公开的另一个方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开提供的孔洞位置的确定方法和/或三维模型的生成方法。
10.根据本公开的另一个方面,提供了一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令在被处理器执行时实现本公开提供的孔洞位置的确定方法和/或三维模型的生成方法。
11.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
12.附图用于更好地理解本方案,不构成对本公开的限定。其中:
13.图1是根据本公开实施例的孔洞位置的确定方法和三维模型的生成方法、装置的应用场景示意图;
14.图2是根据本公开实施例的孔洞位置的确定方法的流程示意图;
15.图3是根据本公开一实施例的确定墙体区域和深度值的原理示意图;
16.图4是根据本公开实施例的确定目标像素点的原理示意图;
17.图5是根据本公开另一实施例的确定墙体区域和深度值的原理示意图;
18.图6是根据本公开实施例的确定目标列的原理示意图;
19.图7是根据本公开第一实施例的确定孔洞的像素位置的原理示意图;
20.图8是根据本公开实施例的三维模型的生成方法的流程示意图;
21.图9是根据本公开实施例的孔洞位置的确定装置的结构框图;
22.图10是根据本公开实施例的三维模型的生成装置的结构框图;以及
23.图11是用来实施本公开实施例的孔洞位置的确定方法或/或三维模型的生成方法的电子设备的框图。
具体实施方式
24.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
25.以下先对本公开涉及的专业术语进行解释:
26.景深漫游,depthpano,是虚拟现实领域的新兴技术,指在全景漫游的基础上,叠加三维空间信息,把数张全景图片渲染到统一的三维模型中,以使得浏览者的视角可以在三维空间中自由移动,并实现场景的切换,从而突破传统全景单点漫游的局限,使得物体具有空间感,有远近之分,达到可真实模拟三维空间内自由行走的漫游体验。
27.点云数据,point cloud data,是三维图像信息的一种表现形式,可以用来表达三维图像。具体的,点云数据是指在一个三维坐标系统中的一组向量的集合,每一个点云数据包含有三维坐标,还可以包含颜色信息(rgb)和/或反射强度信息(intensity)等。
28.漫游热点,即场景切换热点,用于同一个虚拟现实漫游作品中,以进行不同场景的
切换。
29.孔洞,可以为被墙体包围的任意孔洞,可以包括门洞、窗洞或在墙体上开的任意尺寸的孔洞。
30.基于景深漫游技术的系统在建立建筑物的三维模型时,为了便于进行场景切换,需要在建筑物包括的不同区域之间建立漫游热点。为了基于漫游热点进行场景切换,三维模型中不同区域之间应具有不被遮挡的通道。
31.在建筑物的三维模型的生成过程中,通常将可以作为不被遮挡通道的孔洞当作墙体处理。而为了借助漫游热点实现场景的切换,需要去除孔洞区域的墙体。通常在生成建筑物的三维模型后,由人工选择并去除孔洞区域的墙体的三维模型。该方法存在人工成本高,模型生成效率低的缺陷。
32.基于此,本公开旨在提供一种能够自动确定孔洞位置的方法,及基于确定的孔洞位置,生成三维模型的方法。
33.以下将结合图1对本公开提供的方法和装置的应用场景进行描述。
34.图1是根据本公开实施例的孔洞位置的确定方法和三维模型的生成方法、装置的应用场景示意图。
35.如图1所示,该实施例的应用场景100可以包括电子设备110,该电子设备110可以为具有处理功能的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机、台式计算机和服务器等等。
36.该电子设备110例如可以对采集的图像120进行处理,以得到目标对象的三维模型130。其中,图像120可以包括以不同视角拍摄得到的目标对象的图像,拍摄得到的图像可以为全景图像。例如,目标对象可以是建筑物,该建筑物具有多个墙体和至少一个孔洞。
37.根据本公开的实施例,为了避免生成的三维模型130中孔洞区域被构建为墙体,导致基于漫游热点无法进行场景切换的情形,电子设备110例如还可以对表示三维模型130的点云数据进行处理或对图像120进行处理,以确定图像中的墙体区域和墙体区域中各像素点的深度值,并根据该深度值确定图像中的孔洞位置。电子设备110可以通过删除孔洞位置对应的点云数据,来得到去除孔洞区域的墙体的三维模型130。
38.在一实施例中,如图1所示,该应用场景100中还可以包括服务器150,该服务器150例如可以为支持电子设备110中客户端应用运行的后台管理服务器。电子设备110可以通过网络与服务器150通信连接,网络可以包括有线或无线通信链路。
39.例如,电子设备110可以将根据图像120生成的点云数据140发送给服务器150,由服务器150确定图像120中的孔洞区域,并去除孔洞区域对应的点云数据,从而得到去除了孔洞区域的墙体的三维模型130。
40.在一实施例中,电子设备110还可以将采集的图像120经由网络发送给服务器150,由服务器150对图像120进行处理,得到目标对象的三维模型130。
41.需要说明的是,本公开提供的孔洞区域的确定方法和/或三维模型的生成方法可以由电子设备110执行,也可以由服务器150执行。相应地,本公开提供的孔洞区域的确定装置和/或三维模型的生成装置可以设置在电子设备110中,也可以设置在服务器150中。
42.应该理解,图1中的电子设备110和服务器150的数目和类型仅仅是示意性的。根据实现需要,可以具有任意数目和类型的电子设备110和服务器150。
43.以下将结合图2~图7对本公开提供的孔洞区域的确定方法进行详细描述。
44.图2是根据本公开实施例的孔洞位置的确定方法的流程示意图。
45.如图2所示,该实施例的孔洞位置的确定方法200可以包括操作s210~操作s230。
46.在操作s210,获取包括建筑物的图像中墙体区域的位置信息和墙体区域中每个像素点的深度值。
47.根据本公开的实施例,可以采用语义分割模型对图像进行处理,根据语义分割结果来确定图像中的墙体区域。其中,语义分割模型可以包括全卷积网络模型(fully convolutional networks)、用于图像分割的深度卷积编码-解码结构(a deep convolutional encoder-decoder architecture for image segmentation,segnet)等,本公开对此不做限定。
48.根据本公开的实施例,可以采用基于图像的单目深度估计方法来得到墙体区域中每个像素点的深度值。其中,基于深度学习的单目深度估计方法可以分为两大类:有监督的单目深度估计方法和自监督单目深度估计方法。有监督的单目深度估计方法需要地面真实深度作为监督,通常依赖高精度深度传感器来捕获地面真实深度信息。自监督单目深度估计的目的是使用连续帧之间的约束来预测深度信息。自监督单目深度估计框架有mlda-net(mult-level dual attention-based network for self-supervised monocular depth estimation)等,框架mlda-net以低分辨率的彩色图像作为输入,可以以自监督的方式估计对应的深度信息;该框架使用多级特征融合(multi-level feature extraction,mlfe)的策略,从不同尺度层中提取丰富的层次表示,用于高质量深度预测。该框架采用了双重注意策略来获得有效的特征,该策略通过结合全局和局部注意力模块来增强全局和局部的结构信息。该框架利用重新加权(re-weighted)的策略计算损失函数,对不同层级的输出的深度信息进行重新加权,从而对最终输出的深度信息有效监督。
49.例如,该实施例可以采用单目深度估计模型来生成图像的深度图。随后,确定深度图中与墙体区域每个像素点对应的深度值。其中,单目深度估计模型是一种生成模型,输入为一张图像,输出为一张包含深度信息的图像。该实施例可以通过将包括建筑物的图像中墙体区域的每个像素点与包含深度信息的图像中的像素点对应起来,即可得到墙体区域中每个像素点的深度值。
50.可以理解的是,可以预先处理包括建筑物的图像,得到图像中的墙体区域的位置信息和墙体区域中每个像素点的深度值,并将图像、位置信息和深度值存储在服务器或数据库中。在需要确定孔洞位置时,从服务器或数据库中获取图像、墙体区域的位置信息及墙体区域中每个像素点的深度值。
51.在操作s220,确定墙体区域包括的至少一个像素点列中的目标列,目标列包括的多个像素点的深度值差异大于第一预定差异。
52.根据本公开的实施例,可以根据墙体区域的位置信息,确定墙体区域包括的像素点列,针对每个像素点列,可以确定该每个像素点列包括的多个像素点的深度值的差异。该差异例如可以采用标准偏差或平均偏差等来表示,第一预定差异可以根据实际需求进行设定,本公开对此不做限定。例如,第一预定差异的大小可以与孔洞大小正相关,孔洞大小越大,则第一预定差异越大。
53.根据本公开的实施例,可以逐列地计算墙体区域中每一个像素点列的深度值的差
异,在该每一个像素点列的深度值的差异大于第一预定差异的情况下,确定该每一个像素点列为目标列。
54.在操作s230,根据目标列包括的像素点,确定孔洞的像素位置。
55.根据本公开的实施例,可以将目标列所在的位置作为孔洞的像素位置。或者,可以对目标列包括的像素点根据深度值进行聚类,得到至少两个像素点集,将包括目标列中沿列的延伸方向靠上区域的像素点的像素点集,作为墙体像素点集。则,可以确定除墙体像素点集外其他像素点集包括的像素点的位置,为孔洞的像素位置。
56.本公开实施例的孔洞位置的确定方法,通过定位墙体区域,并根据墙体区域中每个像素点列的像素点深度值的差异,来确定图像中存在孔洞的目标列,可以实现孔洞的像素位置的自动定位。如此,根据孔洞的像素位置可以确定常规方法生成的三维模型中孔洞对应的点云数据,通过去除该孔洞对应的点云数据,可以得到孔洞不被遮挡的建筑物的三维模型,利于根据漫游热点对场景进行切换。相较于人工去除墙体上的孔洞区域的技术方案,可以提高处理效率和处理稳定性,降低三维模型的构建成本。
57.以下将结合图3~图5对上述操作s210的实施做进一步扩展和限定。
58.图3是根据本公开一实施例的确定墙体区域和深度值的原理示意图。
59.根据本公开的实施例,可以在根据图像生成建筑物的点云数据后,可以先确定墙体对应的点云数据,并将墙体对应的点云数据投射到图像中,从而得到图像中的墙体区域。例如,设定点云数据所包括的三维坐标为基于相机构建的相机坐标系中的坐标值,则根据墙体对应的点云数据包括的坐标值,即可确定点云数据投射到的像素点的深度值。如此,在采用传统方法生成由点云数据表示的建筑物的三维模型后,可以依据点云数据来进行孔洞位置的定位,利于孔洞位置对应的墙体的去除。
60.在一实施例300中,可以采用深度学习模型320来对图像310进行处理,从而得到建筑物的点云数据330。其中,深度学习模型可以为3d点云生成网络(3d-point-cloud generation),该网络使用2d卷积运算从多个视点预测3d结构,并将几何推理和2d投影优化联合应用。深度学习模型还可以为虚拟3d扫描器(virtual 3d scanner),该扫描器用于模拟虚拟环境中的真实世界3d扫描仪。可以理解的是,上述深度学习模型仅作为示例以利于理解本公开,本公开对此不做限定,本公开可以采用能够根据单张图像生成点云数据的任意深度学习模型来得到建筑物的点云数据330的任意模型来生成点云数据330。可以理解的是,建筑物的点云数据可以实时生成,也可以预先生成后存储在数据库以备调用。
61.在得到建筑物的点云数据330后,该实施例可以采用平面检测算法340对点云数据330进行检测,得到点云数据中针对墙体的墙体点云数据350。其中,平面检测算法例如可以包括随机采样一致算法(random sample consensus,ransac)或基于霍夫变换的平面检测算法等,本公开对此不做限定。
62.示例性地,可以将检测得到的表示平面的点云数据均作为墙体点云数据。
63.示例性地,在采用平面检测算法检测得到的平面后,可以将表示每个平面的点云构成一个点云数据组,从而得到表示检测得到的至少一个平面的至少一个点云数据组。随后,根据至少一个平面中每个平面的法向量,来确定至少一个平面中的墙体平面。最后,将表示墙体平面的点云数据组中包括的点云数据作为墙体点云数据350。其中,例如可以根据表示平面的点云数据,采用内积法或者外积法等来确定平面的法向量。该实施例可以将法
向量近似垂直于高度方向的平面确定为墙体平面。该实施例通过根据法向量来确定墙体平面,可以地面、没有孔洞的建筑物顶部的墙体等对确定孔洞位置的干扰,提高孔洞位置的确定效率和精度。
64.在得到墙体点云数据350后,可以根据墙体点云数据350来确定图像310中与墙体点云数据350对应的目标像素点360及目标像素点的深度值。
65.例如,该实施例可以通过相机坐标系与图像坐标系之间的转换,将点云数据包括的坐标值转换至图像坐标系,从而得到图像中与墙体点云数据对应的目标像素点。同时,根据点云数据距离相机坐标系的原点的距离,来确定对应的目标像素点的深度值。在得到目标像素点后,可以将目标像素点所在的图像区域作为墙体区域。
66.根据本公开的实施例,若图像310为全景图像,则例如可以采用如图4所示的原理来确定图像310中墙体点云数据对应的目标像素点。
67.图4是根据本公开实施例的确定目标像素点的原理示意图。
68.如图4所示,该实施例400可以先将点云数据的坐标值转换至球坐标系,随后再将坐标值由球坐标系转换至图像坐标系。设定球坐标系的原点与相机坐标系的原点重合,且全景图像围成的球体为单位球体,则对于包括相机坐标系中的坐标值(x,y,z)的点云数据,在相机坐标系中对应点a,可以先将该点云数据投影到单位球体上,得到相机坐标系中的坐标值为(x’,y’,z’)的点a’。随后,根据三角函数原理,可以确定在球坐标系中,该点a’与球坐标系中原点o的连线oa’与z轴之间的夹角θ可以采用以下公式(1)表示。将点a’投影至xoy平面,得到点a”,该点a”与球坐标系中原点o的连线oa”的长度c可以采用以下公式(2)表示,连线oa”与x轴之间的夹角可以采用以下公式(3)表示,如此可以得到点a’在球坐标系中的坐标值为
69.θ=arccos(z

/1)
ꢀꢀ
公式(1)
70.c=sin(θ)
ꢀꢀ
公式(2)
[0071][0072]
在得到点a’在球坐标系中的坐标值后,可以根据球坐标系与像素坐标系之间的转换关系,计算得到点云数据a对应的像素点的像素位置。例如,设定图像的宽度为w,高度为h,可以理解的是,高度h与单位球体的直径相等。则,点云数据a对应的像素点在高度方向的像素坐标i可以采用以下公式(4)计算得到。点云数据b对应的像素点在宽度方向的像素坐标j可以采用以下公式(5)计算得到。
[0073]
i=(θ/π)*h
ꢀꢀ
公式(4)
[0074][0075]
图5是根据本公开另一实施例的确定墙体区域和深度值的原理示意图。
[0076]
在一实施例中,可以通过对图像进行处理来确定墙体区域和深度值。如此,可以无需采用各种坐标转换,可以提高获得墙体区域和深度值的效率。
[0077]
例如,该实施例500中,可以采用预定深度学习模型520来对图像510进行处理,得到针对图像的深度图530和图像中墙体的边界线540。随后,该实施例可以根据边界线,确定图像510中的墙体区域。例如,可以将墙体的上下边界线之间的区域作为墙体区域550。该实施例可以将深度图530中墙体区域550中的每个像素点所对应位置处的深度值,作为该每个像素点的深度值。
[0078]
根据本公开的实施例,预定深度学习模型520的输入为图像510,输出墙与天花板的交界线、墙与地面之间的交界线。该实施例可以将该两个交界线作为墙体区域的边界线。该预定深度学习模型520例如可以包括基于resnet-50的骨干网络、卷积层、重整型层、拼接层和双向lstm网络。其中,resnet-50用于提取不同感受野的多个特征图,卷积层包括并列排布的多个卷积块,每个卷积块以一个感受野的特征图作为输入。重整型层用于将多个卷积块输出的特征整形为相同尺寸的多个特征图。拼接层用于拼接相同尺寸的多个特征图。双向lstm网络用于对拼接得到的特征进行特征融合。双向lstm网络输出的特征经过两个分支,可以分别得到深度图和墙体的边界线。其中,得到深度图的分支可以设置上采样层,双向lstm网络输出的特征经由上采样层的处理,可以得到尺寸与输入的图像510的尺寸相等的矩阵,以表示深度图。得到墙体边界线的分支可以设置卷积层,用于基于双向lstm网络输出的特征对图像510中的每个像素点进行分类,类别包括背景类别、墙体与天花板的分界线类别和墙体与地面的分界线类别。
[0079]
在一实施例中。该预定深度学习模型520可以采用hohonet网络框架,该模型是一个利用低水平地貌全面理解室内360度全景的多功能和高效网络框架。可以理解的是,上述预定深度学习模型仅作为示例以利于理解本公开对此不做限定。
[0080]
以下将结合图6对上述操作s220的实施做进一步扩展和限定。
[0081]
图6是根据本公开实施例的确定目标列的原理示意图。
[0082]
根据本公开的实施例,在确定目标列时,例如可以通过将每一个像素点列包括的像素点根据在图像中自上至下的排列顺序划分为多个像素点组,将该多个像素点组作为一个整体,来确定每一个像素点列包括的多个像素点的深度值差异。如此,可以提高确定目标列的效率。
[0083]
如图6所示,在实施例中,墙体区域600包括的像素点列例如可以为多个。该实施例可以从多个像素点列中随机选择一个像素点列(例如选择了像素点列610),并将该像素点列610包括的多个像素点沿列的延伸方向(即如图6所示的空心箭头的方向),划分为多个像素点组。例如可以划分得到像素点组611~像素点组614。
[0084]
在得到多个像素点组后,该实施例可以先确定每个像素点组包括的像素点的深度值均值,作为针对该每个像素点组的深度值。例如,针对像素点组611~像素点组614,可以得到深度值均值621~深度值均值624。最后,根据该针对多个像素点的深度值,来确定像素点列610包括的多个像素点的深度值差异。例如,可以将深度值均值621~深度值均值624的平均偏差作为多个深度值均值的差异630,该差异630即为像素点列610包括的多个像素点的深度值差异。
[0085]
该实施例可以针对墙体区域600中的每一个像素点列,均采用上述方法确定该每一个像素点列包括的多个像素点的深度值差异。最后,将深度值的差异大于第一预定差异的像素点列,作为目标列。例如,在该实施例中,确定的目标列包括图6中有填充的像素点所在的列。
[0086]
例如,以孔洞包括的门洞为例,该实施例可以将目标列的像素位置作为孔洞的像素位置。或者,该实施例可以针对确定的每个目标列,分析针对每个目标列包括的多个像素点组的深度值,将深度值与沿列的延伸方向排在最下方的像素点组的深度值相等的像素点组,以及该排在最下方的像素点组包括的像素点所在的位置作为孔洞的像素位置。如此,可
以使得确定的孔洞的像素位置不包括目标列中墙体所在位置的像素点。这是由于门洞通常自地面向上延伸,孔洞所在的像素点列中,靠近地面部分的像素点通常表示门洞。可以理解的是,若以孔洞包括的窗洞为例,可以将深度值与沿列的延伸方向排在最上方(或次上方)的像素点组的深度值相等的像素点组,以及该排在最上方(或次上方)的像素点组包括的像素点所在的位置作为孔洞的像素位置。
[0087]
在一实施例中,在得到目标列后,还可以确定目标列中依次相邻且连续的多个列。将依次相邻且连续的多个列作为一个孔洞的备选位置。随后,根据该依次相邻且连续的多个列的个数。若该个数大于预定个数,则可以根据该依次相邻且连续的多个列包括的像素点,来确定孔洞的像素位置。其中,预定个数可以根据实际需求进行设定。例如,该预定个数可以与采集图像的相机的分辨率等相关,本公开对此不做限定。通过设定预定个数来筛选连续列,可以避免因点云数据不准确导致确定的深度值不准确,从而使得确定的目标列不准确的情形,可以提高确定的孔洞的像素位置的精度。
[0088]
可以理解的是,可以针对确定的多个连续列中的每个列,分析针对每个列包括的多个像素点组的深度值,将该每个列中,深度值与沿列的延伸方向排在最下方的像素点组的深度值相等的像素点组,以及该排在最下方的像素点组包括的像素点所在的位置作为孔洞的像素位置。
[0089]
以下将结合图7对上述操作s230的实施做进一步扩展和限定。
[0090]
图7是根据本公开第一实施例的确定孔洞的像素位置的原理示意图。
[0091]
根据本公开的实施例,在确定了目标列后,例如可以先从目标列中确定孔洞的边缘位置所对应的像素点列,将边缘位置所包围区域的像素点作为孔洞的像素位置。
[0092]
例如,可以通过遍历目标列中的每一列与该每一列的相邻像素点列之间的差异,来确定该每一列是否为孔洞的边缘位置所在的列。
[0093]
在一实施例中,可以针对目标列中的每一列,确定墙体区域中该每一列的相邻像素点列。该相邻像素点列可以为在与列的延伸方向垂直的方向上,与该每一列相邻的像素点列。例如,可以包括该每一列左侧的像素点列和/或该每一列右侧的像素点列。随后,可以确定相邻像素点列包括的像素点的深度值的均值,作为第一深度值均值。若该第一深度值均值与该每一列中目标像素点的深度值均值之间的差异大于第二预定差异,则可以确定该每一列为孔洞的边缘位置。其中,目标像素点可以为每一列包括的所有像素点。
[0094]
可以理解的是,在确定孔洞的边缘位置时,通常仅需考虑孔洞区域的左右边界,即可保证基于漫游热点的场景切换的实现。因此,该实施例可以仅确定孔洞的左右边缘的位置,因此可以仅根据目标列中的每一列与相邻像素点列之间的差异,来确定孔洞的像素位置。在需要确定孔洞的上边缘的位置时,可以采用如上文所示的方法,对目标列中的每一列包括的像素点沿列的延伸方向进行分组,根据各像素点组的深度值的差异,来确定孔洞的上边缘的位置。
[0095]
在一实施例中,需要确定的边缘位置可以包括第一方位的边缘位置和第二方位的边缘位置。其中,第一方位与第二方位彼此相反,且均垂直于列的延伸方向。例如,第一方位可以为左侧方位,第二方位可以为右侧方位。
[0096]
如此,如图7所示,在确定目标列中每一列的相邻像素点列时,可以根据确定的不同方位的边缘位置,选择不同方位的相邻像素点列。
[0097]
例如,在需要确定孔洞的第一方位的边缘位置时,可以选择墙体区域700中位于每一列的第一方位上,与该每一列相邻的第一预定数量个像素点列,作为该每一列的相邻像素点列。例如,在对目标列进行自左向右的遍历的过程中,通常先确定的是孔洞的左侧的边缘位置。设定第一方位即为左侧方位,则对于目标列中的像素点列710,确定的相邻像素点列例如可以包括像素点列720和像素点列730。
[0098]
类似地,在需要确定孔洞的第二方位的边缘位置时,可以选择墙体区域700中位于每一列的第二方位上,与该每一列相邻的第二预定数量个像素点列,作为该每一列的相邻像素点列。例如,在对目标列进行自左向右的遍历的过程中,若确定了孔洞的左侧的边缘位置后,则针对后续遍历的每一列,都需确定该每一列是否为孔洞的右侧的边缘位置。设定第二方位即为右侧方位,则对于目标列中的像素点列740,确定的相邻像素点列例如可以包括像素点列750和像素点列760。可以理解的是,第一预定数量与第二预定数量可以取相同的值,也可以取不同的值,本公开对此不做限定。
[0099]
根据本公开的实施例,在确定每一列的目标像素点时,例如可以采用如上文描述的方法,将每一列包括的多个像素点沿列的延伸方向划分为多个像素点组。将多个像素点组中沿列的延伸方向排在最后位置的像素点组作为目标像素点组。该目标像素点组中的像素点即为目标像素点。相应地,可以将该目标像素点组包括的像素点的深度值均值与相邻像素点列包括的像素点的深度值均值进行比较。若两个深度值均值的差异大于第二预定差异,则确定该每一列为孔洞的像素位置的边缘位置。在一实施例中,以门洞为例,目标像素点也可以为该每一列包括的像素点中沿列的延伸方向靠下的若干个像素点。这是由于门洞通常是自地面向上延伸的,若该列为门洞所在位置,则该列的靠下的若干个像素点的深度值更能反映门洞的深度值。通过该实施例的方法,可以提高确定的边缘位置的精度及确定边缘位置的效率。可以理解的是,第二预定差异可以根据实际需求进行设定,本公开对此不做限定。
[0100]
在一实施例中,在确定边缘位置时,除了确定目标像素点组包括的像素点的深度值均值与相邻像素点列包括的像素点的深度值均值的差异是否大于第二预定差异外,该实施例还可以将每一列划分得到的多个像素点组中像素点的深度值与目标像素点组中像素点的深度值进行比较。确定多个像素点组中与该目标像素点组中像素点的深度值相一致的像素点组所占比例。例如,可以计算得到每个像素点组中像素点的深度值的均值,并确定多个像素点组中,计算的深度值的均值与目标像素点组中像素点的深度值的均值相一致的像素点组。若该相一致的像素点组的比例大于预定比例,则确定该每一列为孔洞的像素位置。其中,预定比例例如可以为0.5、0.7等任意值,该预定比例可以根据孔洞的尺寸来设定,例如,对于较小尺寸的孔洞,则可以将该预定比例设置为较小的值,对于较大尺寸的孔洞,则可以将该预定比例设置为较大的值。通过该实施例,可以进一步提高确定的孔洞的像素位置的边缘位置的精度。这是由于,通常孔洞的高度占整个墙体高度的较大比例,若该像素点列中仅小比例的像素点的深度值与孔洞的深度值相一致,则说明该像素点列中与孔洞的深度值相一致的像素点可能是由不准确的点云数据对应得到的,或者可能是由于墙体的缺陷导致的。通过本公开实施例的技术方案,可以排除因该些原因而导致的边缘位置定位错误的情形。
[0101]
可以理解的是,相一致除了表示两个深度值均值相等外,还可以表示两个深度值
均值的相对误差小于预定误差。其中,预定误差可以为0.1等远小于1的值,该预定误差可以根据实际需求进行设定,本公开对此不做限定。
[0102]
本公开实施例在确定了左侧方位的边缘位置和右侧方位的边缘位置后,可以将两个边缘位置之间包括该两个边缘位置的区域的位置,作为孔洞的像素位置。或者,也可以先判断将两个边缘位置之间包括该两个边缘位置的区域中,像素点列的个数是否大于预定个数。若大于,再将该区域的位置作为孔洞的像素位置。如此,可以避免因点云数据不准确导致的孔洞的像素位置定位不准确的情形。其中,两个边缘位置之间包括该两个边缘位置的区域所包括的像素点列可以理解为两个方位的边缘位置之间夹设的像素点列。
[0103]
基于本公开提供的孔洞位置的确定方法,本公开还提供了一种三维模型的生成方法,以下将结合图8对该方法进行详细描述。
[0104]
图8是根据本公开实施例的三维模型的生成方法的流程示意图。
[0105]
如图8所示,该实施例的三维模型的生成方法800可以包括操作s810~操作s830。
[0106]
在操作s810,根据包括建筑物的图像,生成针对建筑物的点云数据。
[0107]
可以理解的是,该针对建筑物的点云数据可以是采用上文描述的3d点云生成网络生成的,也可以是采用其他根据单张图像对目标进行三维建模的任意方法得到的,本公开对此不做限定。
[0108]
可以理解的是,该针对建筑物的点云数据可以表示建筑物的初始三维模型。该初始三维模型中,孔洞区域是被当做墙体而进行的三维建模。
[0109]
在操作s820,确定图像中孔洞的像素位置。该操作s820可以采用上文描述的孔洞位置的确定方法来确定孔洞的像素位置。
[0110]
在操作s830,去除点云数据中与像素位置对应的目标点云数据,得到建筑物的三维模型。
[0111]
根据本公开的实施例,在确定了孔洞的像素位置后,可以采用与上述根据点云数据确定对应的像素位置的方法互逆的方法,来确定孔洞的像素位置处的像素点所对应的点云数据,将该所对应的点云数据作为目标点云数据。在得到目标点云数据后,从针对建筑物的点云数据中删除该目标点云数据,得到由剩余点云数据表示的建筑物的三维模型。
[0112]
本公开实施例的三维模型的生成方法,通过先确定孔洞的像素位置,并根据像素位置去除初始三维模型中与孔洞的像素位置对应的目标点云数据,可以使得最终得到的三维模型中,孔洞所在位置未被遮挡。如此,可以基于漫游热点实现场景的切换,可以提高生成的三维模型的逼真度,提高用户体验。
[0113]
基于本公开提供的孔洞位置的确定方法,本公开还提供了一种孔洞位置的确定装置。以下将结合图9对该装置进行详细描述。
[0114]
图9是根据本公开实施例的孔洞位置的确定装置的结构框图。
[0115]
如图9所示,该实施例的孔洞位置的确定装置900可以包括信息获取模块910、目标列确定模块920和位置确定模块930。
[0116]
信息获取模块910用于获取包括建筑物的图像中墙体区域的位置信息和墙体区域中每个像素点的深度值。在一实施例中,信息获取模块910可以用于执行上文描述的操作s210,在此不再赘述。
[0117]
目标列确定模块920用于确定墙体区域包括的至少一个像素点列中的目标列,目
标列包括的多个像素点的深度值差异大于第一预定差异。在一实施例中,目标列确定模块920可以用于执行上文描述的操作s220,在此不再赘述。
[0118]
位置确定模块930用于根据目标列包括的像素点,确定孔洞的像素位置。在一实施例中,位置确定模块930可以用于执行上文描述的操作s230,在此不再赘述。
[0119]
根据本公开的实施例,信息获取模块910可以包括:点云获取子模块、平面检测子模块和信息确定子模块。点云获取子模块用于获取根据图像生成的针对建筑物的点云数据。平面检测子模块用于采用平面检测算法对点云数据进行检测,得到点云数据中针对墙体的墙体点云数据。信息确定子模块用于根据墙体点云数据,确定图像中与墙体点云数据对应的目标像素点及目标像素点的深度值。其中,与墙体点云数据对应的目标像素点所在的图像区域为墙体区域。
[0120]
根据本公开的实施例,上述平面检测子模块可以包括检测单元和墙体确定单元。检测单元用于采用平面检测算法对点云数据进行检测,得到表示至少一个平面的至少一个点云数据组。墙体确定单元用于根据至少一个平面的法向量确定至少一个平面中的墙体平面。其中,表示墙体平面的点云数据组中的点云数据为墙体点云数据。
[0121]
根据本公开的实施例,上述信息获取模块910可以包括图像处理子模块、墙体确定子模块和深度值确定子模块。图像处理子模块用于采用预定深度学习模型对图像进行处理,得到针对图像的深度图和图像中墙体的边界线。墙体确定子模块用于根据边界线,确定图像中的墙体区域的位置信息。深度值确定子模块用于根据深度图,确定墙体区域中每个像素点的深度值。
[0122]
根据本公开的实施例,上述目标列确定模块920可以包括像素点划分子模块、均值确定子模块和列确定子模块。像素点划分子模块用于将像素点列包括的多个像素点沿列的延伸方向划分为多个像素点组。均值确定子模块用于确定像素点组包括的像素点的深度值均值,作为针对像素点组的深度值。列确定子模块用于响应于针对多个像素点组的多个深度值的差异大于第一预定差异,确定像素点列为目标列。
[0123]
根据本公开的实施例,上述位置确定模块930可以包括相邻列确定子模块、均值确定子模块、边缘位置确定子模块和孔洞位置确定子模块。相邻列确定子模块用于确定墙体区域中与目标列中的每一列对应的相邻像素点列。均值确定子模块用于确定相邻像素点列包括的像素点的第一深度值均值。边缘位置确定子模块用于响应于每一列中目标像素点的深度值均值与第一深度值均值之间的差异大于第二预定差异,确定每一列为孔洞的像素位置的边缘位置。孔洞位置确定子模块用于根据边缘位置,确定孔洞的像素位置。
[0124]
根据本公开的实施例,边缘位置包括第一方位的边缘位置和第二方位的边缘位置。上述相邻列确定子模块可以包括第一确定单元和第二确定单元。第一确定单元用于响应于确定第一方位的边缘位置,确定墙体区域中位于每一列的第一方位上,与每一列相邻的第一预定数量个像素点列为相邻像素点列。第二确定单元用于响应于确定第二方位的边缘位置,确定墙体区域中位于每一列的第二方位上,与每一列相邻的第二预定数量个像素点列为相邻像素点列。其中,第一方位与第二方位彼此相反、且垂直于每一列的延伸方向。
[0125]
根据本公开的实施例,上述边缘位置确定子模块可以包括像素点划分单元和边缘位置确定单元。像素点划分单元用于将每一列包括的多个像素点沿列的延伸方向划分为多个像素点组。边缘位置确定单元用于响应于多个像素点组中目标像素点组包括的像素点的
第二深度值均值,与第一深度值均值之间的差异大于第二预定差异,确定每一列为孔洞的像素位置的边缘位置。其中,目标像素点组沿列的延伸方向排在多个像素点组的最后位置。
[0126]
根据本公开的实施例,上述边缘位置确定单元可以包括比例确定子单元和边缘确定子单元。比例确定子单元用于响应于第二深度值均值与第一深度值均值之间的差异大于第二预定差异,确定多个像素点组中像素点的深度值均值与第二深度值均值相一致的像素点组的比例。边缘确定子单元用于响应于比例大于预定比例,确定每一列为孔洞的像素位置的边缘位置。
[0127]
根据本公开的实施例,边缘位置包括第一方位的边缘位置和第二方位的边缘位置;第一方位与第二方位彼此相反、且垂直于每一列的延伸方向。上述孔洞位置确定子模块可以包括个数确定单元和孔洞位置确定单元。个数确定单元用于确定第一方位的边缘位置与第二方位的边缘位置之间包括的像素点列的个数。孔洞位置确定单元用于响应于个数大于预定个数,确定孔洞的像素位置位于第一方位的边缘位置与第二方位的边缘位置围成的区域。
[0128]
根据本公开的实施例,上述位置确定模块930可以包括连续列确定子模块和位置确定子模块。连续列确定子模块用于确定目标列中依次相邻且个数大于预定个数的多个连续列。位置确定子模块用于根据多个连续列包括的像素点,确定孔洞的像素位置。
[0129]
基于本公开提供的三维模型的生成方法,本公开还提供了一种三维模型的生成装置,以下将结合图10对该装置进行详细描述。
[0130]
图10是根据本公开实施例的三维模型的生成装置的结构框图。
[0131]
如图10所示,该实施例的三维模型的生成装置1000可以包括点云生成模块1010、孔洞位置确定模块1020和点云去除模块1030。
[0132]
点云生成模块1010用于根据包括建筑物的图像,生成针对建筑物的点云数据。在一实施例中,点云生成模块1010可以用于执行上文描述的操作s810,在此不再赘述。
[0133]
孔洞位置确定模块1020用于确定图像中孔洞的像素位置。在一实施例中,孔洞位置确定模块1020可以用于执行上文描述的操作s820,在此不再赘述。可以理解的是,孔洞位置确定模块1020例如可以采用上文描述的孔洞位置的确定装置来确定孔洞的像素位置。
[0134]
点云去除模块1030用于去除点云数据中与像素位置对应的目标点云数据,得到建筑物的三维模型。在一实施例中,点云去除模块1030可以用于执行上文描述的操作s830,在此不再赘述。
[0135]
需要说明的是,本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
[0136]
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
[0137]
图11示出了可以用来实施本公开实施例的孔洞位置的确定方法和/或三维模型的生成方法的示例电子设备1100的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、
蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
[0138]
如图11所示,设备1100包括计算单元1101,其可以根据存储在只读存储器(rom)1102中的计算机程序或者从存储单元1108加载到随机访问存储器(ram)1103中的计算机程序,来执行各种适当的动作和处理。在ram 1103中,还可存储设备1100操作所需的各种程序和数据。计算单元1101、rom 1102以及ram 1103通过总线1104彼此相连。输入/输出(i/o)接口1105也连接至总线1104。
[0139]
设备1100中的多个部件连接至i/o接口1105,包括:输入单元1106,例如键盘、鼠标等;输出单元1107,例如各种类型的显示器、扬声器等;存储单元1108,例如磁盘、光盘等;以及通信单元1109,例如网卡、调制解调器、无线通信收发机等。通信单元1109允许设备1100通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0140]
计算单元1101可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1101的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元1101执行上文所描述的各个方法和处理,例如孔洞位置的确定方法和/或三维模型的生成方法。例如,在一些实施例中,孔洞位置的确定方法和/或三维模型的生成方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1108。在一些实施例中,计算机程序的部分或者全部可以经由rom 1102和/或通信单元1109而被载入和/或安装到设备1100上。当计算机程序加载到ram 1103并由计算单元1101执行时,可以执行上文描述的孔洞位置的确定方法和/或三维模型的生成方法的一个或多个步骤。备选地,在其他实施例中,计算单元1101可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行孔洞位置的确定方法和/或三维模型的生成方法。
[0141]
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0142]
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0143]
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可
读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0144]
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0145]
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
[0146]
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。其中,服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务(

virtual private server

,或简称

vps

)中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
[0147]
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
[0148]
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献