微软专利为三维扫描建模提出网格孔洞区域检测

查看引用/信息源请点击:映维网Nweon

网格孔洞区域检测

映维网Nweon 2022年08月03日)增强现实系统可以利用区域的网格表示,而网格表示可以使用扫描设备生成。在扫描区域以创建网格表示时,区域的特定部分可能未正确扫描。另外,特定扫描设备可能难以表示反射或比其他区域暗的区域。同时,扫描过程可能无法捕捉三维对象的所有侧面。前述的任何一个问题都可能导致网格表示中存在漏洞孔洞,这会显著降低使用网格表示的应用性能。

针对这个问题,微软提出了名为“Mesh hole area detection”的网格孔洞区域检测。网格中的孔洞面积可用于评估环境质量,或甚至单个对象重建产品的质量。专利描述的各种示例提供了三维网格孔洞的近似百分比测量,而无需ground truth值重建。以这种方式,系统可以引导用户完善扫描,从而允许对由三维网格表示的任何数字模型进行更高效的计算,并节省处理时间。

图1是使用空间映射服务(例如Microsoft HoloLens)创建的环境重建网格100的示例。网格100以灰度表示。多个孔洞110很容易看到。孔洞110以白色显示,为了便于表示,只有少数孔洞110标有参考号110。如图1所示,如果网格100用于虚拟现实或增强现实体验,则提供给用户的视图将非常糟糕。

在图2中,网格200是三维网格,可以代表环境中的对象或对象的一部分,例如沙发、桌子、床、椅子、墙或环境中可能出现的任何其他物体。网格由多边形组成,例如三角形。边三角形包括具有边的三角形,例如边205,其中边仅与网格中的一个三角形,即边三角形相关联。

图3示出了在环境的网格表示中识别孔洞的计算机实现方法300。从操作310开始,获取代表扫描环境的网格。网格可以从存储设备获得,并且可以基于对环境的扫描。在一个实施例中,可以在扫描环境时创建网格。

在操作320中识别网格中的边界边。可以通过确定只有一个相邻网格面的边来识别网格中的边界边。在操作330,将边界边分组为有序、连接的三维闭合非相交多边形。在操作340中,至少一个多边形分类为孔洞。可以在操作350中确定孔洞的面积。同时可以实时提供关于孔洞的反馈,例如视觉反馈。

在操作330,对边界边进行分组可以包括首先将连接的三维多边形投影到二维平面之上。由于东东是一个三维结构,当投影到平面时,孔洞的边界可能会自行循环。可以执行线段到线段的相交测试,以识别自相交的线段或边。

在一个实施例中,每个连接的三维多边形可以从多个不同的角度迭代投影到一组二维平面之上,直到找到投影边缘不自相交的投影。最大的非自交投影用于将三维多边形分类为孔洞或外部边界。一旦确定了一个或多个孔洞,则可以丢弃投影。在各种实施例中,可以从多达300个或更多的角度查看环境中的对象,以识别孔多边形的最佳视图。如果没有发现不自交的投影,则三维多边形依然未分类为孔洞或外部边界。

可以通过使用孔网填充孔洞,然后计算孔网的面积来计算孔洞的面积。要计算孔网格的面积,可以通过计算每个三角形的面积并将所有面积相加来执行。在一个实施例中,用孔网填充孔洞时仅利用孔边界边的顶点,不引入新的顶点。

在一个实施例中,方法300包括确定网格中多个孔洞的各自面积,并计算孔网面积占包括孔网的整个网格面积的百分比。这提供了成功扫描环境的百分比表示。当用户正在扫描环境时,可以实时提供反馈,允许用户查看环境的哪些区域可能需要进一步扫描或从不同区域进行扫描,以便更充分地捕获环境并改进表示环境的网格。

将三维多边形分类为孔洞可以通过检查多边形面在平面上的非自交投影来实现。可以检查多边形的每个投影边,并且可以确定其相关投影面朝向或远离投影边界的内部。如果远离投影边界内侧的投影面数与朝向投影边界内侧的投影面数之比满足或超过某个阈值,则相关三维多边形视为孔洞,否则视为外部边界。为了完全确定边界是孔洞而不是外部边界,可以将阈值设置为1.0。

在一个实施例中,可以使用0.6的阈值。如果60%或更多的投影三角形朝向边界内部,则阈值对应于被分类为孔洞的多边形。发现阈值与人类对多边形是看看孔洞的感知基本一致。另外,可以使用低于1.0的其他阈值,以在孔洞识别中权衡误报和漏报。

图4是示出确定孔洞面积的方法400的流程图。图5是简单孔洞500的表示,其具有在510、511、512、513、514、515、516、517、518、519、520和521处指示的顶点或点。顶点通过边530、531、532、533、534、535、536、537、538、539、540和541连接。这种边是孔边界边。未显示从边缘向外延伸的三角形,因为它们与确定孔洞500的面积无关。因此,孔洞500可以定义为网格内边缘或点的有序列表。

确定孔洞500面积的一种简单方法包括在操作410使用孔洞500边界处的现有顶点简单地定义一组覆盖孔洞500的三角形。例如,连接点520和518定义了第一个三角形,所述三角形包括点519和520、点520和518以及点518和519之间的边。一旦定义了覆盖整个孔洞500的三角形,则在操作420计算每个三角形的面积,然后在操作430求和,得出第一组三角形的面积。

图7是用于扫描环境的界面700的屏幕截图。在一个示例中,在显示环境的窗口705中显示两个对象。所述物体包括椅子710和灯715。当用户扫描环境或只是查看环境时,窗口705可以通过头显显示器显示环境视图。在718,孔洞百分比表示为80%。

窗口705同时包括在720和725处两个对象未完成扫描的指示。在一个实施例中,所述指示是箭头,可以简单地指向包含孔洞的对象,甚至可以确定应进一步扫描相应对象的角度,从而通过减少或移除孔洞来改善整体扫描。指示725就是这样一个箭头。

注意,箭头720仅指向椅子710。孔洞不可见。可以提供进一步的指示来提醒用户:孔洞位于椅子的一侧。箭头可以表示最大的孔洞,随着进一步扫描填充网格,箭头可能会移动到下一个最大的孔洞以进行进一步的扫描。用户可以基于缺失或箭头或足够高的百分比718(例如超过90%、超过95%或超过99%)来决定何时停止扫描。

相关专利Microsoft Patent | Mesh hole area detection

名为“Mesh hole area detection”的微软专利申请最初在2022年1月提交,并在日前由美国专利商标局公布。

更多阅读推荐......

专栏