CN111191083B - 用于对象标识的方法和计算系统 - Google Patents
用于对象标识的方法和计算系统 Download PDFInfo
- Publication number
- CN111191083B CN111191083B CN202010126664.8A CN202010126664A CN111191083B CN 111191083 B CN111191083 B CN 111191083B CN 202010126664 A CN202010126664 A CN 202010126664A CN 111191083 B CN111191083 B CN 111191083B
- Authority
- CN
- China
- Prior art keywords
- vertex
- vertices
- spatial structure
- structure data
- vector
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Image Analysis (AREA)
Abstract
本发明涉及用于对象标识的方法和计算系统。具体地,提供了用于处理空间结构数据的系统和方法。所述系统访问空间结构数据,所述空间结构数据描述对象结构并且具有表示所述对象结构的多个层的深度信息。所述系统还从所述空间结构数据中提取所述空间结构数据的表示所述多个层中的一层的一部分。所述系统从所述空间结构数据的所述部分中标识描述所述层的轮廓的多个顶点。另外,所述系统还基于所述多个顶点标识所述层的凸角,并根据所述凸角执行对象识别。
Description
本申请是申请日为2020年1月17日、题为“用于对象标识的方法和计算系统”的发明专利申请202010050029.6的分案申请。
技术领域
本公开涉及用于处理空间结构数据的计算系统和方法。特别地,本公开的实施方案涉及对用空间结构数据来描述其结构的对象的角的检测。
背景技术
随着自动化变得越来越普遍,机器人在更多的环境中使用,例如在仓库和制造环境中。例如,机器人可用于在仓库中将物品装载到托盘上或从托盘上卸下,或在工厂中从传送带上拾取物品。机器人的运动可以是固定的,或者可以基于输入,例如由仓库或工厂中的一个或多个传感器获得的空间结构数据。可以通过根据空间结构数据执行的对象识别来辅助机器人引导。因此,改善对象识别的方法和技术是有价值的。
发明内容
在一个实施方案中,提供一种包括非暂时性计算机可读介质和处理电路的计算系统。当描述对象结构的空间结构数据存储在非暂时性计算机可读介质中时,处理电路被配置为执行以下方法:访问空间结构数据,该空间结构数据具有表示对象结构的多个层的深度信息;从空间结构数据中提取出空间结构数据中表示多个层中的一层的一部分;从空间结构数据的该一部分中标识出描述该层的轮廓的多个顶点。在一个实施方案中,非暂时性计算机可读介质具有指令,这些指令在由处理电路执行时使处理电路执行上述方法。
附图说明
图1A至图1F示出了根据本发明的实施方案的被配置用于访问和处理空间结构数据的空间结构感测设备和计算系统。
图2A-2C提供了框图,这些框图示出了根据本发明的实施方案的被配置为处理空间结构数据的计算系统。
图3提供了示出根据本文的实施方案的处理空间结构数据的方法的流程图。
图4A-4E示出了根据本文的实施方案的计算系统的操作的各方面。
图5A-5G示出了根据本文的实施方案的计算系统的操作的各方面。
图6A-6C示出了根据本文的实施方案的计算系统的操作的各方面。
具体实施方式
本公开提供用于处理诸如点云之类的空间结构数据的系统和方法,并且更具体地涉及从空间结构数据标识凸角。在一个实施方案中,空间结构数据可以描述一个或多个对象的结构(可以称为对象结构),并且凸角通常可以对应于对象结构的外角。在某些情况下,凸角可用于执行对象识别,这可能涉及确定空间结构数据表示什么对象或对象类型。如果通过诸如深度摄像头之类的空间结构感测设备获取空间结构数据,则对象识别可以确定空间结构感测设备正在或已经感测了什么对象或对象类型。在某些情况下,对象识别的输出可以被机器人控制系统用来引导机器人或其他机械的运动以与由空间结构感测设备感测的一个或多个对象进行交互。例如,机器人可以被配置为抓握、提升和/或移动仓库、工厂或机器人的某种其他环境中的物体。引导机器人的运动可能涉及使机器人的运动适应于不同的对象或不同的对象类型,这些对象的形状、大小和/或方向可能不同。更具体地,实施这种引导可能涉及执行对象识别以识别机器人正在与之交互或将要与之交互的对象或对象类型,或者识别对象的形状、尺寸和/或方向。提供准确的对象识别以供机器人控制系统使用可以提高机器人操作的效率和/或有效性。
在一个示例中,作为卸垛操作的一部分,机器人可能与一堆单独的对象进行交互,例如与一堆箱子进行交互。在这种情况下执行对象识别可能具有挑战性,因为可能很难检测单个对象之间的边界以及每个对象的角开始的位置。通过标识和识别单个对象的一个或多个轮廓、表面、边缘和/或角,可以增强或以其他方式改善对象识别。更特别地,可以通过标识对象结构(即,一个或多个对象的结构)的凸角来增强对象识别。例如,对象识别可以仅依赖于凸角,而不依赖于在空间结构数据中标识的所有点。使用凸角本身进行对象识别可以提供足够的精度水平,并且可以减少执行对象识别所需的时间量或处理能力。
在一个实施方案中,标识凸角可以逐层地执行。例如,一堆对象可以具有形成多个层的对象结构。每一层都可以表示例如对象结构的特定表面(例如,与地面平行的表面),并且相对于对象结构的其他层可以具有不同的高度或深度。在这种情况下,可以为对象结构的每一层确定一组凸角。在一个实施方案中,可以从(或更一般地基于)对象结构的特定层的顶点来标识凸角。顶点可以是描述层的轮廓的点,因此也可以称为轮廓点。
在一些实施方式中,标识凸角可以涉及确定空间结构数据中的哪些顶点是3D角。3D角可以是满足正交性标准的3D顶点,其中3D顶点通常可以指空间结构数据中的这样的顶点:其是由于噪声、干扰或其他误差来源而被引入到空间结构数据中的伪像的可能性较低。例如,空间结构数据可以包括例如标识或以其他方式(例如,经由坐标)描述多个点的点云,该多个点是对象结构的一个或多个表面上的位置。点云中标识的某些点可能是与对象结构中任何物理点都不对应的伪像。换句话说,在点云中标识的某些点可能会显示为结构的相应顶点,但是出现在空间结构数据中的那些顶点可能是不表示对象结构上任何实际物理顶点的伪像。因此,本文中确定顶点是3D顶点还是3D角的一个方面涉及确定从空间结构数据标识出的特定顶点是否表示对象结构上的物理顶点,或者所标识出的顶点是否是伪像。
在一个实施方案中,确定从空间结构数据标识的顶点是否是伪像可以基于该顶点是否满足一个长度标准或多个长度标准。长度标准可用于评估例如空间结构数据中的特定顶点与其相邻顶点之间的距离是否满足或超过定义的长度阈值(也称为阈值长度)。长度标准可以反映某些这样的情况,其中由于空间结构数据中的伪像而出现的特征(例如,对象结构的边缘)相对于对象结构的其他实际物理特征而言,尺寸可能较小,因为例如引起伪像的成像噪声或其他误差源可能仅影响空间结构数据的局部部分。因此,由伪像产生的顶点或作为伪像的一部分的顶点可能位于相邻的顶点或某个其他相邻的特征附近。在这样的示例中,不满足长度标准的顶点可以被认为可能是伪像,并且可以被忽略或者不用于标识凸角。满足一个或多个长度标准的顶点可以有资格用于标识凸角。
在一个实施方案中,可以针对3D顶点(或任何其他顶点)评估正交性标准,以确定3D顶点是否可以是3D角。更具体地,顶点可以是对象结构的两个边缘的相交。在该实施方案中,3D角可以包括其中两个边缘彼此正交或基本正交(也称为彼此基本垂直)的那些3D顶点。可以从3D角中选择或以其他方式标识至少一些凸角。在一个实施方案中,正交性标准还可有助于检测和排除可能是伪像的顶点。在一个实施方案中,对于预期大多数或所有要识别的对象(例如,盒子)具有正交角的情况,正交性标准可以简化对象识别。
在一个实施方案中,标识凸角可以涉及确定3D角的凸度。在某些情况下,可以基于背离顶点和/或朝向两个相应的相邻顶点的两个矢量之间的叉积来确定顶点的凸度。叉积可以是或可以包括正交于两个矢量的叉积矢量。在该实施方案中,可以基于叉积矢量是否指向定义的方向或沿着定义的方向来确定顶点的凸度。在某些情况下,可以按沿着层的轮廓以顺时针或逆时针的方式历经这些顶点的顺序,在多次迭代中评估多个顶点。在这样的情况下,与叉积矢量进行比较的定义方向可以基于多个迭代是否以顺时针方式历经顶点或多个迭代是否以逆时针方式历经顶点。
在一个实施方案中,如果顶点不满足正交性标准,则可以生成融合角。融合角可以是在顶点附近并且基于顶点生成的正交角。例如,顶点可以在基本上不正交的第一边缘和第二边缘的交点处。生成融合角可以涉及标识与第一边缘(或第二边缘)正交的第三边缘。在某些情况下,边缘可以对应于矢量,或对应于沿着矢量延伸的线,如下面更详细地讨论的。如果融合角是凸的,则可以将其标识为凸角。
在某些情况下,对象识别可以涉及基于凸角来确定、生成或修改检测假设。在某些情况下,对象识别可以涉及基于凸角来过滤检测假设。该检测假设可以涉及例如试图通过将模板的模板特征映射到空间结构数据,来将空间结构数据与模板匹配。模板可以描述对象或对象类型的对象结构,并且模板特征可以标识例如对象结构的形状、其角或边缘或对象结构的其他特征。凸角可以例如简化将模板特征映射到空间结构数据的过程,和/或提高该映射的准确性。例如,对象识别可以将模板的特征与仅凸角进行比较,而不是与在空间结构数据中标识的所有点进行比较。
图1A示出了用于生成和处理空间结构数据的系统100(下面将更详细地讨论空间结构数据)。系统100可以包括计算系统101和空间结构感测设备151。在一个实施方案中,空间结构感测设备151可以被配置为生成空间结构数据,并且可以被配置为使空间结构数据对于计算系统101可用,该计算系统可以被配置为处理空间结构数据。在某些情况下,计算系统101和空间结构感测设备151可以位于相同的场所,例如仓库或工厂。在某些情况下,计算系统101和空间结构感测设备151可以彼此远离。
在一个实施方案中,空间结构感测设备151可以被配置为经由通信接口和/或数据存储设备(也可以称为存储设备)使空间结构数据可用。例如,图1B描绘了系统100A,其是图1A的系统100的实施方案。系统100A包括计算系统101,空间结构感测设备151,并且还包括数据存储设备198(或任何其他类型的非暂时性计算机可读介质)。数据存储设备198可以是空间结构感测设备151的一部分,或者可以与空间结构感测设备151分离。例如,存储设备198可以位于远离空间结构感测设备151的数据中心中,并且可以接收和存储由空间结构感测设备151生成的空间结构数据。在该实施方案中,计算系统101可以被配置为通过从数据存储设备198检索(或更一般地,接收)数据来访问空间结构数据。
在图1B中,存储设备198可以包括任何类型的非暂时性计算机可读介质(或多个介质),其也可以被称为非暂时性计算机可读存储设备。这样的非暂时性计算机可读介质或存储设备可以被配置为存储数据并提供对数据的访问。非暂时性计算机可读介质或存储设备的示例可以包括但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或其任何合适的组合,例如诸如计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪存)、固态驱动器、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能磁盘(DVD)和/或记忆棒。
在一个实施方案中,计算系统101和空间结构感测设备151可以被配置为经由网络传送空间结构数据。例如,图1C描绘了系统100B,其是图1A的系统100的实施方案,和/或图1B中的系统100A的实施方案。在系统100B中,计算系统101可以被配置为经由网络199从空间结构感测设备151接收空间结构数据。网络199可以提供单独的网络连接或一系列网络连接,以允许计算系统101接收根据本文的实施方案的空间结构数据。
在图1C中,网络199可以经由有线或无线链路进行连接。有线链路可能包括数字用户线(DSL)、同轴电缆线或光纤线。无线链路可能包括Bluetooth LowEnergy(BLE)、ANT/ANT+、ZigBee、Z-Wave、Thread、全球微波访问互操作性移动NFC、SigFox、LoRa、随机相位多址(RPMA)、失重N/P/W、红外通道或卫星频段。无线链路还可以包括在移动设备之间进行通信的任何蜂窝网络标准,包括作为2G、3G、4G或5G的标准。无线标准可以使用各种信道访问方法,例如,FDMA、TDMA、CDMA或SDMA。在一些实施方案中,可以经由不同的链路和标准来发送不同类型的数据。在其他实施方案中,可以通过不同的链路和标准来发送相同类型的数据。网络通信可以通过任何适当的协议来进行,包括例如http、tcp/ip、udp、以太网,ATM等。
网络199可以是任何类型和/或形式的网络。网络的地理范围可以广泛地变化,并且网络199可以是身体局域网(BAN)、个人局域网(PAN)、局域网(LAN)(例如,内部网、城域网(MAN))、广域网(WAN)或互联网。网络199的拓扑可以是任何形式,并且可以包括例如以下任何一种:点对点、总线、星形、环形、网状或树形。网络199可以是本领域普通技术人员已知的能够支持本文描述的操作的任何这样的网络拓扑。网络199可以利用不同的技术和协议层或协议栈,包括例如以太网协议、互联网协议套件(TCP/IP)、ATM(异步传输模式)技术、SONET(同步光网络)协议,或SDH(同步数字体系)协议。TCP/IP互联网协议套件可以包括应用层、传输层、互联网层(包括例如IPv4和IPv4)或链路层。网络199可以是广播网络、电信网络、数据通信网络或计算机网络中的一种类型。
在一个实施方案中,计算系统101和空间结构感测设备151可能能够经由直接连接而不是网络连接进行通信。例如,在这样的实施方案中,计算系统101可以被配置为经由专用通信接口(诸如RS-232接口、通用串行总线(USB)接口)和/或经由本地计算机总线(例如外围部件互连(PCI)总线)来接收空间结构数据。
图1D示出了系统100C,其可以是系统100的实施方案,用于生成和处理空间结构数据。系统100C包括计算系统101A、空间结构感测设备151A、存储设备198和网络199。空间结构感测设备151A被配置为捕获或以其他方式生成描述一个或多个对象190的结构的空间结构数据。计算系统101A被配置为访问和处理空间结构数据。在图1D的实施方案中,计算系统101A可以是台式计算机,其是图1A的计算系统101的实施方案,空间结构感测设备151A可以是深度感测摄像头(例如,飞行时间摄像头或结构化光摄像头),其是图1A的空间结构感测设备151的实施方案。进一步地,在该示例中,计算系统101A可以经由任何合适的手段来访问空间结构数据。例如,计算系统101A可以经由存储设备198,通过网络199,和/或经由与空间结构感测设备151A的直接连接来从空间结构感测设备151检索(或更一般地,接收)空间结构数据。
在一个实施方案中,如上所述,可以生成空间结构数据以促进对机器人的控制。例如,图1E示出了能够生成和处理空间结构数据并基于该处理来控制机器人161的机器人操作系统100D(其是系统100的实施方案)。例如,空间结构感测设备151可以是深度感测摄像头,其被配置为生成空间结构数据,该空间结构数据描述深度感测摄像头的视场中的一个或多个对象的结构。计算系统101可以被配置为接收空间结构数据并且使用该数据来确定一个或多个对象的尺寸、形状、位置和/或方向。在这些情况下,机器人161的运动可以被控制为基于一个或多个对象的确定的尺寸、形状、位置和/或方向与它们进行交互。
在一个实施方案中,计算系统101可以被配置为基于通过对空间结构数据的处理确定的信息来直接控制机器人161的运动。例如,计算系统101可以被配置为基于所确定的信息来生成一个或多个运动命令(例如,电动机命令),并将该一个或多个运动命令传送至机器人161。在这样的示例中,计算系统101可以充当机器人控制系统(也称为机器人控制器)。
在另一个实施方案中,计算系统101可以被配置为将所确定的信息传送给与计算系统101分离的机器人控制系统,并且机器人控制系统可以被配置为基于所确定的信息,来控制机器人161的运动(例如,通过生成一个或多个运动命令)。例如,图1F描绘了包括机器人控制系统162的机器人操作系统100E(其是图1A的系统100和图1E的系统100D的实施方案)。更具体地,图1F中的计算系统101和空间结构感测设备151可形成视觉系统150,该视觉系统被配置为向机器人控制系统162提供关于机器人161的环境的信息,并且更具体地,关于该环境中的机器人161将要操纵或以某种其他方式与之交互的对象的信息。计算系统101可以用作视觉控制器,其被配置为处理空间结构数据以确定该信息,该信息可以包括例如指出对象的类型、对象的形状或尺寸和/或对象相对于机器人161(例如,相对于机器人161的机器人手臂)的位置的分类。计算系统101可以被配置为将所确定的信息传送给机器人控制系统162,机器人控制系统可以被配置为基于从计算系统101接收到的信息来生成一个或多个运动命令。
如上所述,图1A至图1F的空间结构感测设备151可被配置为生成空间结构数据,该空间结构数据描述了空间结构感测设备151的环境中的一个或多个对象的结构。如本文所使用的,空间结构数据是指描述一个或多个物理对象(也称为一个或多个对象)的结构的任何类型的数据(也称为信息),并且更具体地,可以包括关于一个或多个物理对象的形状、方向、排列和/或尺寸的数据。在一个实施方案中,空间结构数据可以包括位置数据,该位置数据描述了该结构相对于空间结构感测设备151,相对于机器人161或相对于某个其他元件的位置。
在一个实施方案中,空间结构数据可以包括图像数据,并且本文关于空间结构数据描述的任何和所有系统、方法和技术,除非另有明确说明,可以等同地应用于图像数据,这是空间结构的数据一种形式。例如,空间结构数据可以包括是深度图或包括深度图的图像。深度图可以是具有多个像素的图像,并且还包括深度信息。深度信息可以包括例如分配给一些或所有像素或与一些或所有像素包括在一起的相应深度值。特定像素的深度值可以指出由该像素表示或以其他方式对应于该像素的位置的深度。
更具体地,深度信息表示沿着与空间结构感测设备151所位于的假想平面正交的轴的距离的信息。在某些情况下,如果空间结构感测设备151是具有图像传感器的摄像头,则假想平面可以是由图像传感器定义的图像平面。在一个实施方案中,如本文中所使用的深度信息可以表示距空间结构感测设备151的距离。在一个实施方案中,深度信息可以被操纵以表示与平行于空间结构感测设备151所在的假想平面的任何合适平面的相对距离。例如,合适的平面可以由房间的天花板、地板或墙壁或一个或多个对象位于其上的平台来定义。在一个示例中,如果空间结构感测设备151位于一个或多个对象上方,则深度信息可以表示一个或多个对象的各个点和表面相对于一个或多个对象所位于的表面的高度。在另一示例中,如果一个或多个对象相对于空间结构感测设备151水平移位或以其他方式水平偏移,则深度信息可以表示一个或多个对象从空间结构感测设备水平延伸多远。在一个实施方案中,空间结构数据的深度信息可以表示一个或多个对象的多个深度层,并且可以根据这些深度层来组织,如下面更详细地讨论的。多个深度层包括多个层,每一层都表示沿着与空间结构感测设备151所在的假想平面正交的轴测量的离散的深度水平。在一些实施方案中,每一层可以表示单个深度值。在一些实施方案中,每一层可以表示深度值的一个范围。因此,尽管深度信息可以包括连续可变的距离测量值,但是可以使用有限数量的层来捕获所有深度信息。
在一个实施方案中,空间结构数据可以是点云。如本文所使用的,点云可以标识描述对象结构(即,描述一个或多个对象的结构)的多个点。多个点可以是例如对象结构的一个或多个表面上的相应位置。在某些情况下,点云可以包括标识或以其他方式描述多个点的多个坐标。例如,点云可以包括指定对象结构的相应位置或其他特征的一系列笛卡尔坐标或极坐标(或其他数据值)。可以相对于空间结构感测设备151的坐标系或相对于某种其他坐标系来表达相应坐标。在某些情况下,相应坐标是离散的并且彼此间隔开,但是可以理解为表示对象结构的连续表面。在一个实施方案中,可以从深度图或其他图像数据生成点云(例如,由计算系统101)。
在一些实施方案中,空间结构数据还可以根据任何适当的格式存储,例如多边形或三角形网格模型、非均匀有理基础样条模型、CAD模型、基元的参数化(例如,可以根据中心和x,y和z方向的延伸来定义矩形,可以通过中心、高度、上半径和下半径等来定义圆柱体等)。
如上所述,经由空间结构感测设备151捕获或以其他方式生成空间结构数据。在一个实施方案中,空间结构感测设备可以是或包括摄像头或任何其他图像感测设备。摄像头可以是深度感测摄像头,例如飞行时间(TOF)摄像头或结构光摄像头。摄像头可以包括图像传感器,例如电荷耦合器件(CCD)传感器和/或互补金属氧化物半导体(CMOS)传感器。在一个实施方案中,空间结构感测设备可以包括激光器、LIDAR设备、红外设备、明/暗传感器、运动传感器、微波检测器、超声检测器,RADAR检测器或被配置为捕获空间结构数据的任何其他设备。
如上所述,由空间结构感测设备151生成的空间结构数据可以由计算系统101处理。在一个实施方案中,计算系统101可以包括服务器或被配置为服务器(例如,具有一个或多个刀片式服务器、处理器等)、个人计算机(例如,台式计算机、膝上型计算机等)、智能手机、平板计算设备和/或任何其他计算系统。在一个实施方案中,计算系统101的任何或所有功能都可以作为云计算平台的一部分来执行。计算系统101可以是单个计算设备(例如,台式计算机),或者可以包括多个计算设备。
图2A提供了示出计算系统101的实施方案的框图。计算系统101包括处理电路110和非暂时性计算机可读介质(或多个介质)120。在一个实施方案中,处理电路110包括一个或多个处理器,一个或多个处理核,可编程逻辑控制器(“PLC”),专用集成电路(“ASIC”),可编程门阵列(“PGA”),现场可编程门阵列(“FPGA”),其任何组合或任何其他处理电路。在一个实施方案中,非暂时性计算机可读介质120可以是存储设备,诸如电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或其任何合适的组合,例如诸如计算机软盘、硬盘、固态驱动器(SSD)、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能磁盘(DVD)、记忆棒,其任意组合或任何其他存储设备。在某些情况下,非暂时性计算机可读介质可以包括多个存储设备。在某些情况下,非暂时性计算机可读介质120被配置为存储从空间结构感测设备151接收到的空间结构数据。在某些情况下,非暂时性计算机可读介质120还存储计算机可读程序指令,计算机可读程序指令在由处理电路110执行时使处理电路110执行在此描述的一种或多种方法,例如关于图3所描述的操作。
图2B描绘了计算系统101A,其是计算系统101的实施方案并且包括通信接口130。通信接口130可以被配置为例如经由图1B的存储设备198、图1C的网络199或者经由更直接的连接从空间结构感测设备151接收空间结构数据。在一个实施方案中,通信接口130可以被配置为与图1E的机器人161或图1F的机器人控制系统162进行通信。通信接口130可以包括例如被配置为通过有线或无线协议执行通信的通信电路。例如,通信电路可以包括RS-232端口控制器、USB控制器、以太网控制器、控制器、PCI总线控制器,任何其他通信电路或其组合。
在一个实施方案中,处理电路110可以由存储在存储设备120上的一个或多个计算机可读程序指令来编程。例如,图2C示出了计算系统101B,其是计算系统101的实施方案,其中处理电路110由数据管理器202、分段管理器204、对象标识管理器206和对象识别管理器208编程。将理解的是,本文讨论的各种管理器的功能是代表性的而非限制性的。
在各种实施方案中,术语“软件协议”、“软件指令”、“计算机指令”、“计算机可读指令”和“计算机可读程序指令”用于描述被配置为执行各种任务和操作的软件指令或计算机代码。如本文所使用的,术语“管理器”广义上是指被配置为使处理电路110执行一个或多个功能任务的软件指令或代码的集合。为了方便起见,实际上,当管理器、计算机指令和软件协议对硬件处理器进行编程以执行操作和任务时,各种管理器、计算机指令和软件协议将被描述为执行各种操作或任务。尽管在不同地方被描述为“软件”,但是应当理解,由“管理器”、“软件协议”和“计算机指令”执行的功能可以更一般地实现为固件、软件、硬件或其任何组合。此外,从方法步骤、功能步骤和其他类型的发生的角度来描述本文的实施方案。在一个实施方案中,这些动作根据由处理电路110执行的计算机指令或软件协议发生。
在一个实施方案中,数据管理器202是在计算系统101上运行的软件协议。数据管理器202被配置为访问(例如,接收、检索、存储)空间结构数据,并且执行与计算系统101正在接收或处理(例如,分析)的空间结构数据有关的任何其他合适的操作。例如,数据管理器202可以被配置为访问存储在非暂时性计算机可读介质120或198中的空间结构数据,或者经由网络199和/或图2B的通信接口130来访问。数据管理器202还可以被配置为通过网络199与其他设备,与数据存储单元198,与非暂时性计算机可读介质120和/或与空间结构感测设备151进行交互以请求、检索、访问、发送、存储或以其他方式对空间结构数据执行操作。
在各实施方案中,数据管理器202还被配置为向用户提供访问工具以管理和操纵空间结构数据。例如,数据管理器202可以被配置为生成和/或提供对数据库、表、文件存储库和其他数据存储结构的访问。在各实施方案中,数据管理器202可以提供数据保留能力。数据管理器202被配置为访问存储设备120,数据存储单元198和其他存储器单元以存档、存储和/或以其他方式保留空间结构数据和在计算机系统101的处理期间生成的任何其他数据。
在一个实施方案中,分段管理器204是在控制系统101上运行的软件协议。分段管理器204被配置为将空间结构数据分段或提取空间结构数据的一些部分。例如,分段管理器204可以被配置为提取表示一层对象结构的空间结构数据的一部分,如下面更详细地讨论的。空间结构数据的这一部分可以表示空间段或称为空间段。
在一个实施方案中,对象标识管理器206是在控制系统101上运行的软件协议。对象标识管理器206被配置为接收或访问由分段管理器204生成的一个或多个空间段并提供进一步的处理。例如,对象标识管理器206可以被配置为标识一层对象结构的顶点,并基于顶点来标识凸角,如下面更详细地讨论的。
在一个实施方案中,对象识别管理器208是在计算系统101上运行的软件协议。对象识别管理器208可以被配置为根据检测到的凸角来执行对象识别。例如,对象识别管理器208可以使用凸角来生成、修改和/或过滤检测假设,如下面更详细地讨论的。
图3是示出用于处理空间结构数据的方法300的示例操作的流程图。在一个示例中,方法300可以是卸垛过程的一部分,在卸垛过程中,卸载一堆对象(例如,盒子或其他包装)。例如,图4A示出了其中针对一系列对象401、402生成空间结构数据的实施方案。对象401、402可以是例如要由机器人161A(可以是图1E和1D的机器人161的实施方案)从堆叠中卸下的一堆盒子或其他包装。空间结构数据可以描述对象401、402的结构(其可以被称为对象401、402的对象结构)。在图4A的示例中,对象401的顶表面411可以形成对象结构的第一层,并且对象402的顶表面412可以形成对象结构的第二层。图4B从图4A的空间结构感测设备151A的有利位置示出了对象401、402,空间结构感测设备可以直接放置在对象401、402上方。从这个有利位置,空间结构感测设备151A仅分别看到对象401和402的顶表面411和412。表面411和412平行于平台410,并且垂直于深度维度,深度维度可以是与平台410正交并且与轴线480平行的维度。如以下相对于图4C更详细地讨论的,由空间结构感测设备151A生成的空间结构数据可以指出顶表面411和412相对于空间结构感测设备151A处于不同深度(如沿着图4A的轴线480测量的)并且相对于平台410处于不同的高度。
在一个实施方案中,当描述对象结构的空间结构数据存储在计算系统101的非暂时性计算机可读介质(例如,120)中时,图3的方法300可以由图2A至2C的计算系统101执行,并且更具体地由处理电路110执行。在一个实施方案中,图2A至2C的非暂时性计算机可读介质120可以进一步存储多个指令(例如,计算机程序指令),当由处理电路110执行时,这些指令使处理电路110执行方法300。在一个实施方案中,方法300可以涉及从空间结构数据中标识凸角,并且将凸角用于随后的(或同时的)对象识别操作。
在一个实施方案中,图3的方法300包括操作302,其中(图2A-2C的)计算系统101的处理电路110访问描述对象结构的空间结构数据。在某些情况下,操作302可以由图2C的数据管理器202执行。在一个实施方案中,访问空间结构数据可以涉及从非暂时性计算机可读介质120或从任何其他设备检索(或更一般地,接收)空间结构数据。在某些情况下,空间结构数据可能已经由计算系统101从空间结构感测设备151接收,例如经由图2B的通信接口130,并且可能已经存储在非暂时性计算机可读介质120中,其可以为空间结构数据提供临时缓冲或长期存储。例如,空间结构数据可以包括从空间结构感测设备151接收并存储在非暂时性计算机可读介质120中的点云。然后在操作302中,处理电路110可以访问点云。
在某些情况下,被访问的空间结构数据可以被存储在非暂时性计算机可读介质120中,并且可能已经由处理电路110本身基于从空间结构感测设备151接收到的信息而预先生成。例如,处理电路110可以被配置为基于从空间结构感测设备151接收到的原始传感器数据来生成点云,并且可以被配置为将所生成的点云存储在非暂时性计算机可读介质120中。然后,在操作302中,处理电路110可以访问点云(例如,通过从非暂时性计算机可读介质120中检索数据)。
如上所述,空间结构数据可以描述一个或多个对象(例如图4A中的对象401、402)的结构。在一个实施方案中,空间结构数据可以包括深度图,其可以具有多个像素[u,v],其中一些或全部可以具有深度值。深度图中的每个像素都可以对应于由像素捕获或以其他方式表示的相应物理位置,并且深度值可以表示空间结构感测设备(例如,图4A的151A)与该物理位置的距离。物理位置可以在例如对象401、402的表面上,或者在对象401、402所在的平台410的表面上。在某些情况下,可以沿着与空间结构感测设备151A所在的假想平面430正交的轴480来测量距离。在某些情况下,分配给像素[u,v]的深度值可以表示相应物理位置的坐标的Z分量。例如,空间结构感测设备151A可以是深度感测摄像头。在这种情况下,深度图中的特定像素[u,v]可以对应于对象401、402或平台410的表面上的物理位置,其中物理位置具有坐标[X,Y,Z],其X分量和Y分量基于深度感测摄像头的逆投影矩阵,并且Z分量等于或以其他方式基于分配给像素[uv]的深度值(坐标[XYZ]可能在深度感测摄像头的坐标系中)。
在一个实施方案中,空间结构数据可以包括点云。如上所述,点云可以包括多个坐标,该多个坐标标识多个点,这些点是对象结构上的物理位置,诸如图4A的对象401、402的一个或多个表面上的物理位置。在一个实施方案中,如果空间结构数据包括点云,则在某些情况下可以基于上述深度图来生成(例如,由空间结构感测设备151或计算系统101生成)。
图4C示出了点云的示例,该点云表示图4A的对象401、402的对象结构。更具体地,该图示出了由点云表示的多个点。多个点可以是对象401、402的一个或多个表面上的物理位置。点云可以包括多个点中的每个点的相应坐标(例如,[X Y Z]坐标)。由点云表示的物理点的密度可以大于或小于图4C所示的密度,这取决于空间结构感测设备151/151A的分辨率。特定点的坐标的Z分量可以表示该点的深度值。在图4C的示例中,点云可以标识对象401的图4A的顶表面411上的物理点的深度值Z=Z1(例如,150cm),标识对象402的图4A的表面412上的物理点的深度值Z=Z2(例如,200cm),以及标识图4A的平台410的表面上的物理点的深度值Z=Z3(例如,260cm)。
在一个实施方案中,空间结构数据可具有表示一个或多个对象(例如,401、402)的结构的多个层的深度信息。在某些情况下,每一层都可以指出或包括结构上具有相同深度值或基本相同深度值的点(例如,物理位置),或者指出结构上深度值逐渐变化和/或以平滑、连续的方式(而不是以急剧或突然的方式)变化的点。例如,图4C涉及点云,该点云标识表示对象401的顶表面411的第一组点411a,标识表示对象402的顶表面412的第二组点412a,以及标识表示平台410顶表面的410a的第三组点。在该示例中,第一组点411a具有相同的深度值Z1,因此可以表示对象结构的第一层。类似地,第二组点412a可以全部具有相同的深度值Z2,而第三组点410a可以全部具有相同的深度值Z3,因此第二组点412a和第三组点410a可以分别代表一个或多个对象402和平台410的对象结构的第二层和第三层。如上所述,每一层都可以对应于对象结构的不同表面。例如,第一层可以对应于图4A的顶表面411,而第二层可以对应于顶表面412。在某些情况下,这些层可以仅对应于平行于空间结构感测设备130的图像平面(例如假想平面430)的表面。
在一个实施方案中,可以基于深度值的急剧变化,将由点云(或其他形式的空间结构数据)表示的点划分为不同的层。例如,如果变化的绝对值或变化率超过定义的阈值,则可以将其视为急剧变化。例如,由图4C的点云表示的点包括第一组点411a与第二组点412a之间的Z2-Z1(例如,50cm)的变化,并且包括第二组点412a与第三组点410a之间的Z3-Z2(例如,60cm)的变化,更具体地说是相邻点之间的变化。这样的变化可能超过定义的阈值(例如0.5cm或1cm),因此可以认为是急剧变化。由于急剧的变化,第一组点411a,第二组点412a和第三组点410a可以被认为在对象结构的不同层上。
回头参考图3,方法300可以进一步包括操作304,其中计算系统101的处理电路101从空间结构数据中提取代表多个层中的一层的空间结构数据的一部分(该部分也可以称为空间段)。在一个实施方案中,操作304可以由分段管理器204执行。如果空间结构数据捕获一个或多个对象的图像,例如灰度图像或彩色图像,则从空间结构数据提取的那部分也可以称为图像段。在一些实施方式中,提取的那部分可以仅表示对象结构的多个层中的一层。
图4D描绘了这样的示例,其中操作304从点云或其他空间结构数据提取表示对象结构的第一层421的第一部分,并且提取表示对象结构的第二层422的第二部分。第一部分可以包括第一组点411a,或更具体地包括表示那些点的第一组坐标。第二部分可以包括第二组点412a,更具体地包括第二组坐标,其表示第二组点412a。图4E还示出了提取的第一层421和第二层422,并且还示出了第一层421的轮廓423和第二层422的轮廓424。因此,在一个实施方案中,空间结构数据包括标识多个点的点云,这些点分别是对象结构的一个或多个表面上的位置,并且所提取的空间结构数据的一部分标识代表特定层的一组点。
在一个实施方案中,操作304可以涉及从空间结构数据中提取标识具有相同深度值或者其深度值在定义的范围内的一组点的数据值(例如,坐标)。例如,对于图4C和4D的示例,操作304可以涉及从该示例中的空间结构数据中标识第一组点411a,因为第一组点411a具有相同的深度值。类似地,由于第二组点412a具有相同的深度值,因此操作304可以可替代地或附加地涉及从空间结构数据中标识第二组点412a。
在一个实施方案中,在操作304中提取的部分(其可以被称为空间段)可以表示空间结构数据的一部分,该部分的深度值落入与多个层中的一层相对应的定义范围内。当操作304完成时,每个空间段都可以表示多个层中的不同层。在一个实施方案中,多个层中的全部层或一些层可以由空间段来表示。在一个实施方案中,一个或多个对象的结构的某些层在适当深度处可能没有对应的表面,因此没有对应的空间段。在其他示例中,在操作304中提取的空间段的数量(例如,由分段管理器204提取的)将对应于由空间结构数据表示的检测到的层的数量。
在一个实施方案中,操作304可以涉及计算系统101将空间结构数据划分为表示对象结构的不同级别或表示该对象结构的不同相应深度的表面的部分或段。在某些情况下,划分空间结构数据可以基于标识空间结构数据的具有不同深度值的各个部分来进行。在某些情况下,划分空间结构数据可以基于检测在空间结构数据的各部分之间的深度值的急剧变化来进行。例如,执行图4D的操作304可涉及检测该示例的空间结构数据的两组点之间的深度值从深度值Z1到值Z2的急剧变化。可以将这两组标识为第一组点411a和第二组点412a。
在一个实施方案中,操作304可以适应具有带有倾斜表面的结构的一个或多个对象。倾斜的表面可以是例如与空间结构感测设备151/151A不平行的表面,更具体地,不与其图像平面(例如,图4A的假想平面430)平行的表面。因此,相对于空间结构感测设备151/151A,倾斜的表面可在整个表面上具有不同的深度值。在各实施方案中,可以选择层以适应这样的倾斜的表面。例如,可以为包括整个倾斜的表面的空间分割选择一层。因此,可以特别选择空间结构数据中的层以确保倾斜的表面包含在单个空间段中。
如上所述,在操作304中提取的空间结构数据的部分也可以被称为空间段。在一个实施方案中,可以将所提取的空间段存储为(例如,通过分段管理器204)作为掩模。每个掩模都可以包括指定作为一个或多个对象的对象结构的相应层的一部分的一个或多个区域的信息,并且可以排除不是对象结构的相应层的一部分的所有区域。换句话说,掩模可以包括指定一个或多个区域的信息,该一个或多个区域是在给定深度的结构的一部分,并且可以排除在给定深度的不是该结构的一部分的所有区域。每个空间段都可以存储在例如图1B的数据存储设备198中,或其他非暂时性计算机可读存储介质中。在一个实施方案中,可以直接从分段管理器204或者经由数据存储设备198或者图2A的非暂时性计算机可读介质120接收空间段,以供图2C的对象标识管理器206进一步进行处理。
返回图3,方法300可以包括操作306,其中计算系统101的处理电路110从在操作304中提取的空间结构数据的那部分中标识出多个顶点(也称为轮廓点),这些顶点描述针对操作304讨论的层的轮廓。例如,图5A示出了为层422提取的多个顶点512a-512f。在一个实施方案中,操作306可以由对象标识管理器506执行。
如上所述,在某些情况下,空间结构数据包括标识对象结构表面上的点的点云。在操作304中从点云提取的表示层的那部分可以标识从由点云标识的多个点中提取的一组点(例如,图4D的点412a)。在这种情况下,处理电路110可以通过例如标识形成表示层(例如422)的一组点的边缘(例如直边缘)的多个线段,并且将操作306的多个顶点标识为线段的端点,来执行操作306。例如,图5B描绘形成该组点412a的直边缘的多个线段513a-513f。每个线段都可以是具有由两个相应端点定义的两个相对端的线。例如,线段513a具有由端点512a和512b(在操作306中可以将其标识为两个顶点)定义的两个相对端。在某些情况下,如果特定线段延伸穿过该组点412a的边缘点,则可以将其视为边缘,如图5B所示。一组点(例如,组412a)的边缘点可以是在该组点的外围的那些点。更一般地,边缘点可以是表示特定层的一个或多个外边缘的点。在某些情况下,即使一组点中的某些点略微超出特定的线段,该线段也可能在边缘点附近,也可以被视为边缘。在某些情况下,只有当该组点中的任何点都没有超出特定的线段时,才可以将该线段视为边缘。
在某些情况下,处理电路110可以通过从一组点(例如,412a)中提取(或更一般地,标识)多个边缘点,并且确定拟合穿过多个边缘点的多条线来执行操作306。在这样的情况下,处理电路110可以将多条线相交的交点标识为多个顶点。例如,图5C示出了多条线514a-514e,其拟合穿过从操作304提取的空间结构数据的那部分的多个边缘点。作为示例,线514f可以是被拟合为近似于图5C中的边缘点515的轮廓的线。该图仅示出了层422的边缘点的一部分,其围绕该层的整个轮廓。图5C进一步描绘了多个顶点512a-512f作为线514a-514e之间的交点,。例如,顶点512a可以是线514a与线515f之间的交点。在操作306中标识的多个顶点(例如512a-512f)可以包括上述线(例如,线514a-514f)之间的所有交点,或者仅包括交点的子集。
在一个实施方案中,由捕获的空间结构数据表示的边缘点515可以不沿直线排列。在这样的实施方案中,操作306可以涉及(例如,经由对象标识管理器206)以最接近边缘点的各个位置的方式拟合线514a-514f的集合。拟合线集合的过程可以使用任何合适的算法来将线514a-514f拟合到边缘点515,包括例如最小二乘分析等。在生成线514a-514f之后,可以根据线514a-514f的交点来标识多个顶点512a-512f。两条或多条线514a-514f相交的交点中的每个交点或一些交点可以被定义或以其他方式标识为层422的顶点512a-512f中的一个。因此,多个顶点512a-512f可以定义层的轮廓。在一个实施方案中,使用图5B所示技术标识的多个顶点可以与使用图5C所示技术标识的多个顶点相同。
返回图3,方法300可以包括操作308,其中计算系统110的处理电路110基于多个顶点来标识该层的凸角。在一个实施方案中,操作308可以由对象标识管理器206执行。凸角可以是或表示例如对象结构上的物理位置,从这些物理位置执行对象识别更方便、更有效率或更有效,或者一个或多个对象和机器人(例如,图1F的161)之间的交互可以方便的物理位置。在某些情况下,如果对象结构包括盒形或其他矩形棱柱,则凸角可包括例如矩形棱柱的一些或所有外角,并且在某些情况下,凸角可包括或仅表示那些位置。在某些情况下,对象结构的凸角可以是外角,可以为其绘制一个平面,该平面仅在该角处与对象结构相交。如下面更详细地讨论的,标识凸角的一些实施方案可以涉及标识凸的3D角。3D角可以是满足正交性标准的3D顶点,如下面更详细地讨论的。3D顶点可以是满足第一长度标准和/或第二长度标准的顶点,这也在下面更详细地讨论。第一长度标准、第二长度标准和正交性标准可以更一般地分别称为第一标准、第二标准和第三标准。在一些实施方案中,标识凸角可以涉及确定或以其他方式标识一个或多个融合角,这也在下面更详细地讨论。
在一个实施方案中,操作308可以涉及确定一种关系,该关系至少表示多个顶点(例如,从操作306标识出的那些)中的两个或更多个顶点之间的距离。该操作可以进一步涉及根据该关系,将多个顶点的子集标识为3D角,并且将凸的3D角标识为凸角。在某些情况下,该关系还表示由几对矢量形成的相应角度,其中每个矢量都在多个顶点中的一对顶点之间延伸。
在一个实施方案中,如下面更详细地讨论的,3D角可以是满足正交性标准的3D顶点。操作308可以涉及基于顶点之间的关系来标识一组3D顶点。3D顶点通常可以是成为伪像的可能性低的顶点。更具体地说,噪声、干扰或其他误差源可能会在操作302中访问的空间结构数据中引入伪像。作为空间结构数据的伪像的顶点是指空间结构数据的不表示对象结构上的物理顶点的一部分。可以从该组3D顶点中排除这样的顶点。在某些情况下,从该组3D顶点中标识出该组3D角,并且可以从3D角中标识出至少一些凸角,如下面更详细地讨论的。
在一些实施方式中,该组3D顶点可以包括这样的顶点:每个顶点到相邻顶点的相应距离等于或超过定义的长度阈值(也称为阈值长度)。该组3D顶点可以进一步排除与相邻顶点的相应距离小于定义的长度阈值的任何顶点。换句话说,由于空间结构数据是基于传感器数据的,因此容易受到噪声、误差、伪像和其他缺陷的影响,因此,多个已标识的顶点可能不完全准确地表示一个或多个对象的结构的角或其他物理特征。例如,一个对象可能具有矩形棱柱(也称为矩形框)的结构,在该结构的一层上具有四个顶点,但是该对象的结构的空间结构数据可能表明该层具有七个顶点。因此,可执行操作以将空间结构数据的是伪像的可能性低的3D顶点与可能是空间结构数据中的伪像的顶点区别开。
在某些情况下,此操作是基于一个或多个长度标准执行的。一个或多个长度标准可以评估从特定顶点到相邻顶点(例如,最接近的相邻顶点)的距离是否超过定义的阈值。例如,如果两个顶点在空间结构数据中太靠近(例如,基于阈值长度和/或长度标准),则顶点之一可能是伪像,因为导致伪像的噪声或干扰可能会被集中在空间结构数据内,因此任何作为伪像或作为伪像的结果出现的特征相对于对象结构的实际物理特征而言可能较小。因此,如下面更详细地讨论的,一个或多个长度标准可以用于标识哪些顶点应当作为3D顶点被包括在一组3D顶点中。此外,该组3D角可包括该组3D顶点中的表示对象结构的正交角的3D顶点。
在一个实施方案中,操作308涉及基于上述长度标准和/或正交性标准来确定(例如,由对象标识管理器206)(操作306的)多个顶点中的每个顶点是否是3D角。这种确定还可以涉及针对多个顶点中的每个顶点,确定该顶点与多个顶点中的至少一个其他顶点之间的关系,或者该顶点与其他两个顶点(例如,两个最接近的相邻顶点)之间的关系。
在一个实施方案中,作为操作308的一部分,标识3D角可以涉及确定是否将多个顶点中的第一顶点包括到一组3D角中。作为示例,第一顶点可以是图5D中的顶点512b。在某些情况下,操作308可以涉及评估多个顶点中的所有顶点以确定它们是否是3D顶点和/或确定它们是否是3D角的多次迭代,并且第一顶点可以是例如其中一个迭代的一部分。迭代可以例如以顺时针方式或逆时针方式以遵循层422的轮廓423的顺序遍历多个顶点。在这种情况下,第一顶点可以是该特定迭代的当前顶点或当前轮廓点(可以称为cVx或cPt)。
上面的关于第一顶点是否是3D角的确定可以涉及(例如,由对象标识管理器206)从多个顶点中选择第二顶点,该第二顶点是在第一方向上沿着层的轮廓与第一顶点最接近的相邻顶点。例如,第二顶点可以是顶点512a,其是沿着第一方向A(例如,如虚线箭头所示的逆时针方向)沿着层422的轮廓423与顶点512b最接近的相邻顶点(也称为最接近的相邻顶点)。如上所述,操作308可以涉及遍历在操作306中标识的多个顶点(例如,以顺时针方式)进行的多次迭代,以便评估多个顶点中的每个顶点以确定该顶点是否是3D顶点,和/或确定该顶点是否为3D角。在该示例中,第二顶点可以是前一顶点或前一轮廓点(被称为pVx或pPt)。前一顶点可以是在前一迭代(例如,前一连续的迭代)中评估了的顶点。例如,如果当前迭代正在评估顶点512b以确定其是否是3D角,则顶点512b可以是当前顶点,并且顶点512a可以是前一顶点。此外,在该示例中,顶点512c可以是下一顶点。下一顶点或下一轮廓点可以是将在下一连续迭代中评估的顶点,以确定该顶点是否为3D顶点和/或确定该顶点是否为3D角(可以称为nVx或nPt)。
上述确定第一顶点是否为3D角的实施方案还可以涉及定义从第一顶点到第二顶点(因此指向远离第一顶点的方向)的第一矢量。例如,第一矢量可以是图5D中的矢量551。在某些情况下,图5D的第一矢量551可以是图5B的线段513a的一种版本,其中线段具有方向性。在某些情况下,如果第一顶点由第一坐标[X1,Y1,Z1]表示,第二顶点由第二坐标[X2,Y2,Z2]表示,则第一矢量可以被定义为<X2-X1,Y2-Y1,Z2-Z1>。在某些情况下,如果顶点的各自坐标具有相同的Z分量,则可以忽略Z分量。在这种情况下,第一矢量可以被定义为<X2-X1,Y2-Y1>。在某些情况下,第一矢量是从当前顶点或当前轮廓点(cVx或cPt)到前一顶点或前一轮廓点(pVx或pPt)。
上述确定第一顶点是否为3D角的实施方案还可以涉及:从多个顶点中选择第三顶点,该第三顶点是沿着层的轮廓在第二方向上与该第一顶点最接近的相邻顶点,其中第二方向不同于上面讨论的第一方向。例如,第三顶点可以是图5D中的顶点512c,其是沿着由部分/空间段定义的层的轮廓423在第二方向B(例如,如虚线箭头所示的顺时针方向)上最接近顶点512b的相邻顶点。第二方向B与第一方向A不同。更具体地,图5D的第一方向A可以是沿逆时针方向描绘图中的该层的轮廓423的流动方向,而第二方向B可以是沿顺时针方向描绘该轮廓423的流动方向。在某些情况下,第三顶点可以是下一顶点或下一轮廓点(称为nVx或nPt)。此外,在该实施方案中可以确定第二矢量,其中第二矢量是从第一顶点到第三顶点(因此也指向远离第一顶点的方向)。例如,第二矢量可以是图5D中的矢量552,其是从顶点512b到顶点512c。与以上示例类似,如果第三顶点由第三坐标[X3,Y3,Z3]表示,则第二矢量可以被定义为<X3-X1,Y3-Y1,Z3-Z1>。在某些情况下,第二矢量可以是从当前顶点或当前轮廓点到下一顶点或下一轮廓点。
上述实施方案可以进一步涉及确定第一矢量是否满足第一长度标准,以及第二矢量是否满足第二长度标准。这种确定可以涉及将第一矢量的长度(可以称为第一长度)与定义的阈值长度进行比较,以及将第二矢量的长度(可以称为第二长度)与定义的阈值长度进行比较。第一长度可以是例如从顶点512b到顶点512a的距离。在某些情况下,如果第一矢量是从当前顶点cVx到前一顶点pVx的矢量,则第一长度可以被定义为Norm(cVx-pVx),其中“Norm”是确定两个顶点之间的欧几里得距离的函数。第二长度可以是例如从顶点512b到顶点512c的距离。在某些情况下,如果第二矢量是从当前顶点cVx到下一顶点nVx的矢量,则第二距离可以被定义为Norm(cVx-nVx)。如上所述,将矢量的长度与阈值长度进行比较可确保第一顶点(例如512b)与第二顶点(例如512a)和第三顶点(例如512c)相距足够远,才能确定第一顶点是伪像的可能性小。在某些情况下,如果顶点满足第一长度标准和第二长度标准,则可以将其视为3D顶点。在某些情况下,如果顶点不满足第一和第二长度标准之一,或者不满足第一和第二长度标准两者,则确定该顶点不是3D顶点(因此不是3D角)。如果确定顶点不是3D顶点,则可以不将其用于标识凸角。例如,当标识凸角时,处理电路110可以忽略该顶点,这将在下面更详细地讨论。在某些情况下,处理电路110可以被配置为从空间结构数据中去除与不是3D顶点的这种顶点相对应的数据值。
以上示例中的阈值长度可以根据几种技术中的一种或多种来确定或以其他方式定义。在各实施方案中,阈值长度可以由图1A-1C的计算系统101的用户、管理者或其他操作者预定。阈值长度可以根据对被图1A-1C的空间结构感测设备151感测或将要感测的对象或对象的类型的知识来预先确定。例如,如果已知对象的边缘具有最小期望长度,则可以选择阈值长度以消除或以其他方式滤除形成小于最小期望长度的边缘的空间结构数据的顶点。在某些情况下,可以基于空间结构感测设备151的知识(例如,关于设备151所属于的空间结构感测设备的类型的准确度的知识)来确定阈值长度。
在各实施方案中,最小期望长度可以乘以校正因子以达到阈值长度。校正因子可以是例如在0与1之间的预定标量值。可以根据空间结构数据中的噪声量来确定校正因子。如果空间结构数据有噪声,则校正因子可以是较小的数字。对于有噪声的空间结构数据,可以预期在空间结构数据中将有更多的顶点是伪像。较小的校正因子会降低阈值长度,以考虑空间结构数据中的较大变化和噪声,从而滤除更多伪像。另一方面,如果空间结构数据的噪声较小,则校正因子可以是较大的数字(即,在空间结构数据的变化或噪声较小的情况下提高阈值长度)。在各实施方案中,对象标识管理器206可以分析空间结构数据的噪声,然后可以根据空间结构数据中噪声的度量来选择校正因子。在各实施方案中,可以根据对象的预期布置来选择或以其他方式确定校正因子。参考图5E示出了该特征,该图描绘了由空间结构数据的一部分/空间段定义的层590,空间结构数据描述了对象580、581的结构。对象580、581可以具有相同的尺寸,并且可以不规则地布置或彼此偏移。例如,这样的对象580、581彼此不对齐。由于布置中的偏移,这种对象580、581可以被感测为结构具有不同长度的边缘。更具体地,对象580和581是正方形的并且具有相同的尺寸,每个对象都具有四个长度相同的边缘。因此,可以选择最小预期长度作为任意一条边缘(例如,对象580的边缘583)的长度。但是,图5E描绘了对象580与对象581之间的空间偏移,其在空间段590中产生了短边缘584。如果将校正因子设置为较高的值(例如,接近1),则阈值长度将仅稍短于边缘583的长度。因此,校正因子的如此高的值将导致边缘584不符合上述第一长度标准和第二长度标准,这可能导致例如顶点582不被识别为3D顶点,即使顶点582不是伪像。因此,在各实施方案中,对象标识管理器206可以选择较小的校正因子(例如,具有接近于0的值的校正因子),从而导致阈值长度小于边缘584的长度,使得顶点582不会不符合第一和第二长度标准。
在一个实施方案中,上述确定第一顶点是否为3D角的实施方案还可以涉及确定第一顶点是否满足正交性标准。这可以涉及确定以上讨论的第一矢量和第二矢量是否基本彼此正交。例如,正交性标准可以涉及评估图5D的矢量551和图5D的矢量552是否基本正交(也称为基本垂直)。如本文所使用的,基本正交是指以大约90o的角度相遇的两条线或两个矢量。大约90o可能包括+/-0.1o、0.5o、1o、2o、3o、4o和/或5o的大约90o度范围。在某些情况下,可以通过确定第一矢量和第二矢量的点积是否为零或基本上为零来执行上述确定。在一个实施方案中,如果顶点满足所讨论的第一长度标准,第二长度标准和正交性标准,则可以将顶点(例如,顶点512b)确定为3D角,或将其包括在一组3D角中。在一个实施方案中,可以评估在操作306中标识出的多个顶点中的每个顶点,以确定该顶点是否是3D角。如果顶点是满足第一和第二长度标准的3D顶点但由于不满足正交性标准而不是3D角,则该3D顶点仍可用于确定融合角,如下文更详细地讨论。
在一些实施方案中,确定第一矢量和第二矢量(例如,矢量551和552)是否彼此基本正交可以涉及(例如,由对象标识管理器206)将两个矢量投影到共享平面,以及然后确定投影的矢量是否基本正交。例如,从空间结构数据提取的部分/空间段可以包括具有一定范围的深度值的空间信息,并且可以表示形成倾斜表面(例如,相对于图1A-1C的空间结构感测设备151的图像平面)的层。在这种情况下,第一矢量和第二矢量可能彼此不在同一平面上。为了解决这种情况,对象标识管理器206(或更一般地,计算系统101的处理电路110)可以被配置为将第一矢量和第二矢量投影到共享平面上,并使用投影矢量之间的角度来确定它们是否基本上彼此正交。
在一个实施方案中,操作308还涉及确定作为3D角的顶点的凸度(即,确定3D角的凸度),或更一般地,确定3D角是否是凸角。该确定可以由例如对象标识管理器206执行。一个形状的凸角可以是形状内部的角度小于180o的角,而一个形状的凹角可以是形状外部的角度小于180o的角。举例来说,图5D中的顶点512b为3D角,因为它满足正交性标准,并且还可以是凸角,因为在顶点512b处图5D的形状内部的角度516具有大致90°的角度,该角度小于180°的角度。图5D中的顶点512d可以是3D角,因为它也满足正交性标准,但是也可以是凹角,因为在顶点512d处图5D形状外部的角度517基本上是90o,小于180o。对于三维对象,形状的凸角可以理解为这样一个角,即可以为该角绘制一个平面,该平面仅在一个点—凸角本身—与形状相交。凸角和凹角也可以由它们周围空间的内容来定义。例如,顶点可被理解为四个象限相交的点,并且确定顶点的凸度可涉及确定多少个象限包含该形状的一部分。如果仅一个象限包含该形状的一部分,则可以确定顶点为凹的。如果三个象限包含该形状的一部分,则可以确定顶点为凸的。
在一个实施方案中,确定作为3D角的顶点是否也是凸角涉及确定(例如,由对象标识管理器206)第一矢量和第二矢量的叉积,这是在上面讨论的指向远离顶点的两个矢量。叉积可以包括或可以是叉积矢量。例如,图5F示出了作为叉积运算的结果的叉积矢量553和556。更具体地,该图提供了层422的透视图。图5F还示出了空间结构感测设备151A相对于所捕获的空间段422的位置。在图5F的示例中,叉积矢量553是矢量551、552的叉积的结果,并且与矢量551、552两者正交。此外,叉积矢量556是矢量554、555叉积的结果。如右手定则所确定的叉积矢量553或556的方向可以指出作为3D角的特定顶点(例如,图5F中的顶点512b或顶点512d)是否也是凸角或凹角。右手定则是确定叉积矢量方向的常用约定。例如,考虑叉积方程使用右手,食指指向的方向,中指指向的方向。当这样布置食指和中指时,伸出的拇指指向叉积的方向,确定顶点是否是凸角可能涉及确定与顶点相对应的叉积矢量的方向是否与定义方向匹配。如下面更详细地讨论的,叉积矢量与之匹配的方向可以是计算系统101遍历多个顶点的方向(操作306)。
因为叉积运算是反交换的,所以矢量和顶点的排序会影响上述确定的结果。例如,如果计算系统101的处理电路110正在确定多个顶点中的每个顶点是否为3D顶点,确定每个顶点是否为3D角,和/或确定每个顶点是否为凸角,则顶点的排序可以指处理电路110是按照顺时针方式还是逆时针方式遍历多个顶点的顺序执行上述确定。举例来说,如果处理电路110按顺序评估图5D或5F的顶点512a、512b、512c、512d、512e和512f,以确定每个顶点是否是凸角,则可以认为处理电路110沿着层422的轮廓423以顺时针方式遍历顶点。在这样的示例中,与叉积矢量进行比较的定义方向可以是指向图5F所示的层422之外的方向(也称为从层向上指向空间结构感测设备151A)。在此示例中,如果顶点的叉积矢量指向或以其他方式匹配定义的方向,则可以将其视为凸角;如果其叉积矢量没有指向或更一般地不匹配定义的方向,则可以将其视为凹角。例如,如果评估图5F的顶点,作为矢量551和552的叉积的叉积矢量553将指向由空间段表示的层422之外(或从该层向上)。叉积矢量533可以被认为与定义的方向匹配,因此其对应的顶点(512b)可以被认为是凸角。在图5F的示例中,第一矢量551沿着方向A指向,该方向可以被认为是逆时针方向或者被认为是沿着轮廓423的逆时针流动的方向。
在一个实施方案中,遍历多个顶点的序列可以被类比为遵循轮廓(例如,轮廓423)的流,该流以顺时针或逆时针的方式连续到达轮廓的多个顶点,并且定义的方向(叉积矢量与该方向进行比较)可能与该流的卷曲矢量的方向相反。例如,如果对多个顶点的评估以顺时针方式进行,则如右手定则所定义的,卷曲矢量可以指向下方(远离空间结构感测设备151A)。所定义的方向可以与卷曲矢量的方向相反。如果以逆时针方式评估多个顶点,则卷曲矢量可能指向上方。
在图5F的示例中,操作308可以确定顶点512d是凹角,或更一般地,顶点512d不是凸角。如上所述,顶点512d可被认为是轮廓423的凹角,因为在顶点512处轮廓423外部的角度小于180o。确定顶点512d是凹角还是凸角也可以基于背离该顶点指向两个相应的最近相邻顶点的两个矢量的叉积。对于图5F,这两个矢量是矢量554、555。矢量554沿逆时针方向指向最接近的相邻顶点,而矢量555沿顺时针方向指向最接近的相邻顶点。矢量554、556的叉积包括叉积矢量556。叉积矢量556指向该层内(也称为向下指向,远离空间结构感测设备151A)。叉积矢量556的方向(向下)可以与定义的方向(向上)相反。因此,对应于叉积矢量556的顶点512d可以被认为是凹角,或更一般地不是凸角。
如上所述,在计算叉积中使用的矢量和顶点的排序可能会影响所得叉积矢量的方向。在图5F所示的示例中,可以在多个相应的迭代中对顶点进行评估,按以顺时针方式遍历顶点的顺序(也称为顺时针顺序),其中第一矢量用于计算沿逆时针流动方向(从当前顶点到前一顶点)的叉积点,第二矢量用于计算沿顺时针流动方向(从当前顶点到下一顶点)的叉积点。叉积矢量可以指向朝向空间结构感测设备151A的方向。在另一个示例中,可以按照以逆时针方式遍历顶点的顺序(也称为逆时针顺序)来评估顶点。在这样的示例中,第一矢量用于计算沿顺时针流动方向(从当前顶点到前一顶点)的叉积点,第二矢量用于计算沿逆时针流动方向(从当前顶点到下一顶点)的叉积点。叉积矢量可以指向远离空间结构感测设备151A的方向。因此,取决于是按顺时针方式还是逆时针方式遍历顶点,上述两个示例中的叉积矢量可以指向不同的方向。因此,当标识顶点是否为凸角时,处理电路110(例如,执行对象标识管理器206)可考虑是以顺时针方式还是逆时针方式评估顶点。例如,如果以顺时针方式对顶点进行评估,则处理电路110可以确定是否将定义的方向(将叉积矢量与其进行比较)作为指向上方、朝向空间结构感测设备151A的方向。如果以逆时针方式对顶点进行评估,则处理电路110可以确定是否将所定义的方向作为指向向下、远离空间结构感测设备151A的方向。
在各实施方案中,处理电路110(例如,在执行对象标识管理器206的同时)可以以任何合适的顺序确定哪些顶点是3D角以及确定哪些顶点是凸角。在一些实施方案中,可能必须在确定哪些顶点是凸角之前确定哪些顶点是3D角。处理电路110可以在确定哪些顶点也是凸角之前评估操作306的多个顶点中所有顶点以标识3D角,或者处理电路可以在仅评估了一些顶点以确定这些顶点是否是3D角之后就开始标识凸角。在一些实施方案中,处理电路可以在将特定顶点确定为3D角之后立即确定该顶点是否为凸角。
在一个实施方案中,操作308可以涉及确定可以被认为是凸角的融合角。在某些情况下,融合角可以是近似于由空间结构数据描述的对象结构的形状的正交角,并且靠近正被评估的顶点。融合角可以被确定为角融合技术的一部分,这将在下面更详细地讨论。这样的实施方案可以应用于以下情况:顶点被确定为3D顶点(因为它满足第一长度标准和第二长度标准),但是不是3D角(因为它不满足正交性标准)。例如,图5G描绘了由空间结构数据的一部分/空间段描述的结构的层622,其中该层是在例如操作304中提取的。更具体地,该图描绘了描述层622的轮廓的多个顶点532a-532g。顶点可能已经例如在操作306中被标识。在该示例中,顶点532b可以是多个顶点中的第一顶点(例如,当前顶点),而顶点532a可以是第二顶点(例如,前一顶点),并且顶点532c可以是第三顶点(例如,下一顶点)。顶点532a可以是沿着层622的轮廓在第一方向A上最接近于顶点532b的顶点(也称为最接近),而顶点532c是沿着层622的轮廓在第二方向B上最接近于顶点532b的顶点。可以定义第一矢量561以从顶点532b延伸到顶点532a,而可以定义第二矢量562以从顶点532b延伸到顶点532c。在该示例中,顶点532b可以被确定为3D顶点,因为它满足第一长度标准和第二长度标准,但是不被认为是3D角,因为它不满足正交性标准。因为第一矢量561和第二矢量562不彼此正交,所以不满足正交性标准。
在这种情况下,处理电路110可以选择第四顶点,该第四顶点是沿该层的轮廓在第二方向上与第一顶点第二最接近的相邻顶点,并且可以在第四顶点与第三顶点之间定义第三矢量。在图5G的示例中,第四顶点是532d,其是沿着方向B与顶点532b的第二最接近的相邻顶点。此外,在该示例中,第三矢量是矢量563,其位于顶点532c与顶点532d之间,并且更具体地,从顶点532c至顶点532d。在某些情况下,处理电路110可以(例如,通过执行对象标识管理器206)通过将第三矢量563与阈值长度进行比较来确定第三矢量是否满足第三长度标准。在某些情况下,可以省略这种比较。
在上述角融合技术的示例中,处理电路110可以进一步确定或以其他方式定义沿着第一矢量延伸的第一线和沿着第三矢量延伸的第二线。例如,图5G描绘了其中第一线是线571而第二线是线573的示例。线571可以沿着矢量561延伸,并且可以延伸超过顶点532a并且延伸超过顶点532b。类似地,线573沿着矢量563延伸,并且延伸超过顶点532c和532d。
在上述角融合技术的示例中,处理电路110可以进一步标识交点(例如,图5G的点532h),该交点是第一线(例如,571)与第二线(例如,573)之间的交点。在将点532h标识为顶点之后,可以将点532h与顶点532a-g一起添加到多个顶点中。如图5G所示,交点532h可以是在由图中所示的层形成的形状之外,或更具体地在该层的轮廓之外的假想点。在某些情况下,处理电路110可以例如通过确定第一线(例如571)是否正交于或基本正交于第二线(例如,573)来确定交点(例如532h)是否满足正交性标准。如果限定交点的第一线和第二线彼此正交,则该交点可以被称为融合角。
在上述角融合技术的示例中,处理电路110可以进一步确定融合角是否为凸。在某些情况下,该确定可以基于确定第一矢量和第三矢量的叉积,类似于上面对第一矢量与第二矢量之间的叉积的讨论。融合角的凸度可以基于相应叉积矢量的方向是否与上面讨论的定义方向匹配。在某些情况下,确定融合角是否为凸可以涉及确定融合角是否在由多个顶点描述的层的轮廓之外。例如,点532h是凸的融合角,因为它在层622的轮廓623之外。如果确定融合角为凸,则可以将其标识为操作308的凸角。
如上所述,可以通过多次迭代来针对多个顶点中的每一个执行确定顶点是否是3D角,或者基于该顶点确定融合角。在以上关于图5G讨论的示例中,正在针对顶点532b执行当前迭代,使得顶点532b是当前顶点,并且顶点532a和532c分别是该迭代的前一顶点和下一顶点。在下一连续的迭代中,处理电路110可以进行到下一未检查的顶点。在将点532h标识为融合角之后,处理电路110可以跳过顶点532c,并且继续确定顶点532d是3D顶点还是3D角。由于顶点532c在确定点532h为融合角时被使用了,因此无需再次评估该点。
在进一步的实施方案中,在将点532h标识为融合角之后,处理电路可以前进到点532h的下一最接近的相邻顶点。例如,在该示例中,它可以前进到顶点532c。在此示例中,顶点532c成为当前顶点,而点532h(已添加到多个顶点)和532d分别是该迭代的前一顶点和下一顶点。因为点532h在连接顶点532c和532d的线573上,所以顶点532c不能满足第三标准(正交性),并且处理电路110将确定顶点532c不是3D顶点或3D角。
如上所述,角融合方法在多种情况下可能是有利的。这样的情况可能涉及具有非垂直(即,成角度的或圆形的)角的不规则形状的对象,和/或可能涉及具有相对于图1A-1D和图5F的空间结构感测设备151/151A而言被遮挡的角的特定物理对象。例如,第一对象的角可能被堆叠在第一对象上面的第二对象遮挡。在另一个示例中,在对象的一角处的颜色或材料(例如,反射带)上的差异可能会导致不准确的空间结构数据捕获。在这种情况下,角融合技术可以弥补这种不准确性。
返回图3,方法300还包括操作310,其中计算系统101的处理电路110根据在操作308中标识出的凸角来执行对象识别。在某些情况下,操作310可以由对象识别管理器208来执行。在一个实施方案中,操作310可以包括生成检测假设,修改检测假设和/或过滤检测假设,如本文所述。
在一个实施方案中,检测假设可以指的是对由图1A-1C的空间结构感测设备151感测什么对象,对象的类型和/或对象方向的估计。在某些情况下,检测假设可以是确定是否通过空间结构数据(例如操作302的空间结构数据)描述特定对象或对象类型(例如,特定类型的盒子或其他包装)。在某些情况下,检测假设可以是空间结构数据与模板的模板特征之间的确定的映射,其中模板描述了对象结构。模板可以通过模板特征来描述对象结构,例如对象结构的角、表面和/或边缘的一系列坐标。图6A描绘了用于特定类型(诸如是仓库中的库存的一部分的特定类型的盒子)的对象的模板的示例。如上所述,模板可以描述对象类型的多个特征,例如表示角、边缘、一个或多个表面或一些其他特征的一系列坐标。在图6A的示例中,模板包括描述特定类型的对象(例如,盒子)上的四个点612a-612d的四个坐标。四个坐标可以表示例如该类型的对象的四个角。在一些实施方式中,检测假设可以包括针对以上讨论的模板中的一个或多个特征,关于空间结构数据的一个或多个部分映射或者以其他方式对应于一个或多个特征的估计。
在一个实施方案中,操作310涉及使用在操作308中标识的凸角来生成检测假设。例如,由图6A中的点512a表示的凸角可用于生成检测假设。图6A中的检测假设可以是估计的映射,其将模板的点612a映射到由点512a表示的凸角,如图6A和6B所示。在某些情况下,检测假设还可涉及确定模板的点612a-612d将与所标识的凸角对齐。例如,这样的确定可以涉及点612a-612d具有这样的方向,使得点612a与612d之间的线与点512a与512f之间的线平行,和/或使得点612a与612b之间的线与点512a与512b之间的线平行。使用步骤308的凸角来生成检测假设可以增大检测假设正确的机会。更具体地,在操作308中标识的凸角可能更可能对应于一个或多个对象(例如,图4A的401、402)的结构的物理特征,例如一个或多个对象的角。如果模板还标识特定对象或对象类型的物理特征,则其中模板的特征与凸角匹配的检测假设准确的可能性较高。在某些情况下,可以修改和完善检测假设,凸角可以为确定正确的检测假设提供起点。因此,在一个实施方案中,操作310可以涉及确定凸角是否与定义对象形状的模板中的特征对齐。
在一个实施方案中,操作310可以涉及确定是否滤除或以其他方式忽略检测假设。更一般而言,这样的实施方案可以涉及确定检测假设是否可能不正确。例如,图6C描绘了另一种检测假设,其涉及模板的哪个部分(由点612a-612d表示)被映射到空间结构数据的另一部分的另一估计。在该实施方案中,因为没有模板特征被映射到凸角(例如,点512a),所以为了对象识别的目的,可以滤除检测假设或以其他方式忽略该检测假设。在另一示例中,检测假设可能必须将模板的至少一个模板特征映射到空间结构数据的表示足够接近凸角的位置的那一部分。如果检测假设未将任何模板特征映射到足够接近凸角的位置,则可以滤除该检测假设。
根据本公开的其他实施方案至少包括以下内容。
实施方案1是一种计算系统,包括非暂时性计算机可读介质;至少一个处理电路,其被配置为当描述对象结构的空间结构数据被存储在非暂时性计算机可读介质中时,用于:访问空间结构数据,该空间结构数据具有表示对象结构的多个层的深度信息;从空间结构数据中提取空间结构数据的表示多个层中一层的一部分;从空间结构数据的该一部分中标识描述该层的轮廓的多个顶点;基于多个顶点标识该层的凸角;以及根据凸角执行对象识别。
实施方案2是如实施方案1所述的计算系统,其中空间结构数据包括标识多个点的点云,这些点表示对象结构的一个或多个表面上的相应位置,并且其中空间结构数据的被提取的那一部分标识一组点,这些点表示多个点的一部分,并且代表该层。
实施方案3是如实施方案2所述的计算系统,其中所述处理电路被配置为通过以下方式来标识描述所述层的轮廓的多个顶点:标识形成表示所述层的一组点的直边缘的多个线段,以及将多个顶点标识为线段的端点。
实施方案4是如实施方案2或3所述的计算系统,其中所述处理电路被配置为通过以下方式来标识描述所述层的轮廓的多个顶点:从所述一组点中标识多个边缘点,其中所述边缘点表示所述一组点外围的点;确定拟合穿过所述多个边缘点的多条线;将多条线相交的交点标识为多个顶点。
实施方案5是如实施方案1-4中任一项所述的计算系统,其中所述处理电路还被配置为通过以下方式从多个顶点中标识所述层的凸角:确定表示多个顶点中的两个或更多个顶点之间至少一个或多个距离的关系;根据所述关系将所述多个顶点的子集标识为3D角;以及将凸的3D角标识为凸角。
实施方案6是如实施方案5所述的计算系统,其中所述关系还表示由矢量对形成的相应角度,每个矢量都在所述多个顶点中的一对顶点之间延伸。
实施方案7是如实施方案1至6中任一项所述的计算系统,其中所述处理电路还被配置为通过以下方式从所述多个顶点中标识所述层的凸角:从所述多个顶点中标识一组3D顶点,从这组3D顶点中标识一组3D角,并从这组3D角中标识至少一些凸角,其中这组3D顶点包括的每个顶点都与最接近的相邻顶点具有等于或超过定义的阈值长度的相应距离,并且从该组顶点中排除与最接近的相邻顶点的相应距离小于定义的阈值长度的任何顶点,并且其中所述一组3D角包括所述一组3D顶点中的表示对象结构的正交角的3D顶点。
实施方案8是如实施方案7所述的计算系统,其中所述处理电路还被配置为通过按以下方式确定是否将所述多个顶点在的第一顶点包括到所述一组3D角中来标识所述一组3D角:从多个顶点中选择第二顶点,该第二顶点是在第一方向上沿着层的轮廓与第一顶点最接近的相邻顶点;定义从第一顶点到第二顶点的第一矢量;从多个顶点中选择第三顶点,该第三顶点是沿着层的轮廓在第二方向上与第一顶点最接近的相邻顶点,第二方向不同于第一方向;定义从第一顶点到第三顶点的第二矢量;通过将第一矢量的第一长度与定义的阈值长度进行比较来确定第一顶点是否满足第一长度标准;通过将第二矢量的第二长度与定义的阈值长度进行比较来确定第一顶点是否满足第二长度标准;通过确定第一矢量和第二矢量是否基本上彼此正交来确定第一顶点是否满足正交性标准;以及响应于确定第一顶点不满足第一长度标准、第一顶点不满足第二长度标准或者第一顶点不满足正交性标准,确定将第一顶点从该组3D角中排除,响应于确定第一顶点满足第一长度标准、第一顶点满足第二长度标准以及第一顶点满足正交性标准,确定将第一顶点包括在该组3D角中。
实施方案9是如实施方案8所述的计算系统,其中所述处理电路还被配置为:响应于确定将所述第一顶点作为3D角包括在该组3D角中,通过确定第一矢量和第二矢量的叉积来确定3D角的凸度,以进一步确定所述3D角是否为凸角。
实施方案10是如实施方案9所述的计算系统,其中确定叉积包括确定叉积矢量,并且其中确定3D角是否为凸角包括确定叉积矢量的方向是否与定义方向匹配。
实施方案11是如实施方案10所述的计算系统,其中所述处理电路被配置为针对所述多个顶点中的每个顶点,确定是否将所述顶点作为相应3D角包括在所述一组3D角中,并按照以顺时针方式或逆时针方式沿着层的轮廓遍历多个顶点的序列来执行所述确定,并且其中与叉积矢量的方向进行比较的定义方向取决于序列是否以顺时针方向遍历多个顶点,或者序列是否以逆时针方向遍历多个顶点。
实施方案12是如实施方案8至11中的任一项所述的计算系统,其中所述处理电路被配置为:响应于确定所述第一顶点不满足所述正交性标准,基于所述第一顶点来确定融合角,其中融合角是基于对象结构的形状的正交角,并且是通过以下方式确定的:选择第四顶点,该第四顶点是沿着层的轮廓在第二方向上与第一顶点第二最接近的相邻顶点;定义第四顶点与第三顶点之间的第三矢量;确定沿第一矢量延伸的第一线和沿第三矢量延伸的第二线;标识第一线与第三线之间的交点;通过确定所述第一线和所述第三线是否彼此基本正交来确定所述交点是否满足所述正交性标准;响应于确定交点满足正交性标准,将交点标识为融合角。
实施方案13是如实施方案12所述的计算系统,其中所述处理电路被配置为:通过确定所述融合角是否在所述层的轮廓之外来确定所述融合角是否为凸的,并且响应于确定融合角是凸的,将所述融合角标识为所述凸角之一。
实施方案14是如实施方案8至13中任一项所述的计算系统,其中所述处理电路还被配置为在定义第一矢量和第二矢量之前以及在确定第一顶点是否满足第一长度标准、第二长度标准和正交性标准之前,将第一顶点、第二顶点和第三顶点投影到共享平面上。
实施方案15是如实施方案1至14中的任一项所述的计算系统,其中所述处理电路还被配置为通过根据所述凸角生成检测假设来执行对象识别。
实施方案16是如实施方案1至15中任一项所述的计算系统,其中所述处理电路被配置为通过基于凸角确定如何将描述对象结构的空间结构数据映射到也描述对象结构的模板中的特征来执行对象识别。
实施方案17是如实施方案1至16中任一项所述的计算系统,其中所述处理电路还被配置为通过根据所述凸角修改检测假设来执行所述对象识别。
实施方案18是其上存储有指令的非暂时性计算机可读介质,所述指令在由处理电路执行时使处理电路执行以下操作:访问描述对象结构的空间结构数据,其中该空间结构数据具有表示对象结构的多个层的深度信息;从空间结构数据中提取空间结构数据的表示多个层中一层的一部分;从空间结构数据的该部分中标识描述该层的轮廓的多个顶点;基于多个顶点标识该层的凸角;以及根据凸角执行对象识别。
实施方案19是如实施方案18所述的非暂时性计算机可读介质,其中所述指令在由所述处理电路执行时,通过以下方式使所述处理电路从多个顶点中标识所述层的凸角:确定表示多个顶点中的两个或更多个顶点之间至少一个或多个距离的关系;根据所述关系将所述多个顶点的子集标识为3D角;以及将凸的3D角标识为凸角。
实施方案20是由计算系统执行的方法,该方法包括:访问描述对象结构的空间结构数据,其中该空间结构数据具有表示对象结构的多个层的深度信息;从空间结构数据中提取空间结构数据的表示多个层中的一层的一部分;从空间结构数据的该部分中标识描述该层的轮廓的多个顶点;以及基于多个顶点标识该层的凸角;以及根据凸角执行对象识别。
对于相关领域的普通技术人员将显而易见的是,在不脱离任何实施方案的范围的情况下,可以对本文所述的方法和应用进行其他适当的修改和改编。上述实施方案是说明性示例,并且不应解释为将本发明限于这些特定实施方案。应当理解,本文所公开的各种实施方案可以以与说明书和附图中具体呈现的组合不同的组合来进行组合。还应当理解,取决于示例,本文描述的任何过程或方法的某些动作或事件可以以不同的顺序执行,可以被添加、合并或完全省略(例如,所有描述的动作或事件对于执行方法或过程可能不是必需的)。此外,尽管为了清楚起见,本文实施方案的某些特征被描述为由单个部件、模块或单元来执行,但是应当理解,本文描述的特征和功能可以由部件、单元或模块的任意组合来执行。因此,在不脱离所附权利要求书所限定的本发明的精神或范围的情况下,本领域技术人员可以进行各种改变和修改。
Claims (20)
1.一种计算系统,包括:
非暂时性计算机可读介质;
至少一个处理电路,当描述对象结构的空间结构数据存储在所述非暂时性计算机可读介质中时,所述至少一个处理电路被配置为用于:
访问所述空间结构数据,所述空间结构数据具有表示所述对象结构的多个层的深度信息;
从所述空间结构数据中提取所述空间结构数据的表示所述多个层中的一层的一部分;
从所述空间结构数据的所述一部分中标识描述所述一层的轮廓的多个顶点;
基于所述多个顶点来标识所述一层的凸角;以及
根据所述凸角执行对象识别。
2.如权利要求1所述的计算系统,其中所述空间结构数据包括标识多个点的点云,所述多个点表示在所述对象结构的一个或多个表面上的相应位置,并且其中所述空间结构数据的被提取的所述一部分标识一组点,所述一组点表示所述多个点的一部分并且代表所述一层。
3.如权利要求2所述的计算系统,其中所述处理电路被配置为通过以下方式来标识描述所述一层的所述轮廓的所述多个顶点:标识形成表示所述一层的所述一组点的直边缘的多个线段,以及将所述多个顶点标识为所述线段的端点。
4.如权利要求2所述的计算系统,其中所述处理电路被配置为通过以下方式标识描述所述一层的所述轮廓的所述多个顶点:
从所述一组点中标识出多个边缘点,其中所述边缘点表示在所述一组点的外围上的点;
确定拟合穿过所述多个边缘点的多条线;以及
将所述多条线相交的交点标识为所述多个顶点。
5.如权利要求1所述的计算系统,其中所述处理电路还被配置为通过以下方式从所述多个顶点中标识所述一层的所述凸角:
确定至少表示所述多个顶点中的两个或更多个顶点之间的一个或多个距离的关系;
根据所述关系,将所述多个顶点的子集标识为3D角;以及
将凸的3D角标识为所述凸角。
6.如权利要求5所述的计算系统,其中所述关系还表示由矢量对形成的相应角度,所述矢量中的每个矢量都在所述多个顶点中的一对顶点之间延伸。
7.如权利要求1所述的计算系统,其中所述处理电路还被配置为通过以下方式从所述多个顶点中标识所述一层的所述凸角:
从所述多个顶点中标识一组3D顶点,
从所述一组3D顶点中标识一组3D角,以及
从所述一组3D角中标识出所述凸角中的一个或多个凸角,
其中所述一组3D顶点包括的每个顶点都与最接近的相邻顶点具有等于或超过定义的阈值长度的相应距离,并且所述一组3D顶点排除与最接近的相邻顶点的相应距离小于所述定义的阈值长度的任何顶点,并且
其中所述一组3D角包括所述一组3D顶点中的表示所述对象结构的正交角的3D顶点。
8.如权利要求7所述的计算系统,其中所述处理电路还被配置为通过按以下方式确定是否将所述多个顶点中的第一顶点包括到所述一组3D角中来标识所述一组3D角:
从所述多个顶点中选择第二顶点,所述第二顶点是沿着所述一层的所述轮廓在第一方向上与所述第一顶点最接近的相邻顶点;
定义从所述第一顶点到所述第二顶点的第一矢量;
从所述多个顶点中选择第三顶点,所述第三顶点是沿着所述一层的所述轮廓在第二方向上与所述第一顶点最接近的相邻顶点,所述第二方向不同于所述第一方向;
定义从所述第一顶点到所述第三顶点的第二矢量;
通过将所述第一矢量的第一长度与所述定义的阈值长度进行比较来确定所述第一顶点是否满足第一长度标准;
通过将所述第二矢量的第二长度与所述定义的阈值长度进行比较来确定所述第一顶点是否满足第二长度标准;
通过确定所述第一矢量和所述第二矢量是否彼此正交来确定所述第一顶点是否满足正交性标准;以及
响应于确定所述第一顶点不满足所述第一长度标准、所述第一顶点不满足所述第二长度标准或所述第一顶点不满足所述正交性标准,确定从所述一组3D角中排除所述第一顶点,
响应于确定所述第一顶点满足所述第一长度标准、所述第一顶点满足所述第二长度标准以及所述第一顶点满足所述正交性标准,确定将所述第一顶点包括在所述一组3D角中。
9.如权利要求8所述的计算系统,其中所述处理电路还被配置为:响应于确定将所述第一顶点作为3D角包括在所述一组3D角中,通过确定所述第一矢量和所述第二矢量的叉积来确定所述3D角的凸度,以进一步确定所述3D角是否为凸角。
10.如权利要求9所述的计算系统,其中确定所述叉积包括确定叉积矢量,并且其中确定所述3D角是否为凸角包括确定所述叉积矢量的方向是否与定义方向匹配。
11.如权利要求10所述的计算系统,其中所述处理电路被配置为针对所述多个顶点中的每个顶点,确定是否将所述顶点作为相应3D角包括在所述一组3D角中,并按照以顺时针方式或逆时针方式沿着所述一层的所述轮廓遍历所述多个顶点的序列来执行所述确定,并且其中与所述叉积矢量的所述方向进行比较的所述定义方向取决于所述序列是否以所述顺时针方向遍历所述多个顶点,或者所述序列是否以所述逆时针方向遍历所述多个顶点。
12.如权利要求8所述的计算系统,其中所述处理电路被配置为:响应于确定所述第一顶点不满足所述正交性标准,基于所述第一顶点来确定融合角,其中所述融合角是基于所述对象结构的形状的正交角,并且是通过以下方式确定的:
选择第四顶点,所述第四顶点是沿着所述一层的所述轮廓在所述第二方向上与所述第一顶点第二最接近的相邻顶点;
定义所述第四顶点与所述第三顶点之间的第三矢量;
确定沿所述第一矢量延伸的第一线和沿所述第三矢量延伸的第二线;
标识所述第一线与所述第二线之间的交点;
通过确定所述第一线和所述第二线是否彼此正交来确定所述交点是否满足所述正交性标准;以及
响应于确定所述交点满足所述正交性标准而将所述交点标识为融合角。
13.如权利要求12所述的计算系统,其中所述处理电路被配置为:
通过确定所述融合角是否在所述一层的所述轮廓之外来确定所述融合角是否为凸的;以及
响应于确定所述融合角是凸的,将所述融合角标识为所述凸角之一。
14.如权利要求8所述的计算系统,其中所述处理电路还被配置为:在定义所述第一矢量和所述第二矢量之前以及在确定所述第一顶点是否满足所述第一长度标准、所述第二长度标准和所述正交性标准之前,将所述第一顶点、所述第二顶点和所述第三顶点投影到共享平面上。
15.如权利要求1所述的计算系统,其中所述处理电路还被配置为通过根据所述凸角生成检测假设来执行所述对象识别。
16.如权利要求1所述的计算系统,其中所述处理电路被配置为通过基于所述凸角确定如何将描述所述对象结构的所述空间结构数据映射到也描述所述对象结构的模板中的特征来执行对象识别。
17.如权利要求1所述的计算系统,其中所述处理电路还被配置为通过根据所述凸角修改检测假设来执行所述对象识别。
18.一种其上存储有指令的非暂时性计算机可读介质,所述指令在由处理电路执行时使所述处理电路执行以下操作:
访问描述对象结构的空间结构数据,其中所述空间结构数据具有表示所述对象结构的多个层的深度信息;
从所述空间结构数据中提取所述空间结构数据的表示所述多个层中的一层的一部分;
从所述空间结构数据的所述一部分中标识描述所述一层的轮廓的多个顶点;
基于所述多个顶点来标识所述一层的凸角;以及
根据所述凸角执行对象识别。
19.如权利要求18所述的非暂时性计算机可读介质,其中所述指令在由所述处理电路执行时使所述处理电路通过以下方式从所述多个顶点中标识所述一层的所述凸角:
确定至少表示所述多个顶点中的两个或更多个顶点之间的一个或多个距离的关系;
根据所述关系,将所述多个顶点的子集标识为3D角;以及
将凸的3D角标识为所述凸角。
20.一种由计算系统执行的方法,所述方法包括:
访问描述对象结构的空间结构数据,其中所述空间结构数据具有表示所述对象结构的多个层的深度信息;
从所述空间结构数据中提取所述空间结构数据的表示所述多个层中的一层的一部分;
从所述空间结构数据的所述一部分中标识描述所述一层的轮廓的多个顶点;以及
基于所述多个顶点来标识所述一层的凸角;以及
根据所述凸角执行对象识别。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/578,900 US10614340B1 (en) | 2019-09-23 | 2019-09-23 | Method and computing system for object identification |
US16/578,900 | 2019-09-23 | ||
CN202010050029.6A CN112541097A (zh) | 2019-09-23 | 2020-01-17 | 用于对象标识的方法和计算系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010050029.6A Division CN112541097A (zh) | 2019-09-23 | 2020-01-17 | 用于对象标识的方法和计算系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111191083A CN111191083A (zh) | 2020-05-22 |
CN111191083B true CN111191083B (zh) | 2021-01-01 |
Family
ID=70730177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010126664.8A Active CN111191083B (zh) | 2019-09-23 | 2020-01-17 | 用于对象标识的方法和计算系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111191083B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12062182B2 (en) | 2020-06-04 | 2024-08-13 | Mujin, Inc. | Method and computing system for performing or facilitating physical edge detection |
CN113658205B (zh) * | 2020-06-04 | 2022-08-12 | 牧今科技 | 用于执行或促进物理边缘检测的方法和计算系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104809760A (zh) * | 2015-05-07 | 2015-07-29 | 武汉大学 | 基于深度优先策略的地理空间三维外轮廓自动构建方法 |
CN105243276A (zh) * | 2015-10-14 | 2016-01-13 | 中国地震局地壳应力研究所 | 一种建筑物震害分析方法 |
CN108171233A (zh) * | 2016-12-07 | 2018-06-15 | 三星电子株式会社 | 使用基于区域的深度学习模型的对象检测的方法和设备 |
US10369701B1 (en) * | 2018-10-30 | 2019-08-06 | Mujin, Inc. | Automated package registration systems, devices, and methods |
US10373336B1 (en) * | 2019-03-07 | 2019-08-06 | Mujin, Inc. | Method and system for performing automatic camera calibration for robot control |
CN110524665A (zh) * | 2019-09-29 | 2019-12-03 | 北京地平线机器人技术研发有限公司 | 木制品加工方法、装置、介质以及设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9024949B2 (en) * | 2004-10-13 | 2015-05-05 | Sony Corporation | Object representation using distance functions |
JP4284288B2 (ja) * | 2005-03-10 | 2009-06-24 | 株式会社東芝 | パターン認識装置及びその方法 |
CN103135745B (zh) * | 2011-11-25 | 2018-01-02 | 夏普株式会社 | 基于深度图像的非接触控制方法、信息设备和系统 |
KR102001636B1 (ko) * | 2013-05-13 | 2019-10-01 | 삼성전자주식회사 | 이미지 센서와 대상 객체 사이의 상대적인 각도를 이용하는 깊이 영상 처리 장치 및 방법 |
CN105681627B (zh) * | 2016-03-03 | 2019-12-24 | 联想(北京)有限公司 | 拍摄图像方法及电子设备 |
CN107274400B (zh) * | 2017-06-21 | 2021-02-12 | 歌尔光学科技有限公司 | 空间定位装置、定位处理方法及装置、虚拟现实系统 |
-
2020
- 2020-01-17 CN CN202010126664.8A patent/CN111191083B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104809760A (zh) * | 2015-05-07 | 2015-07-29 | 武汉大学 | 基于深度优先策略的地理空间三维外轮廓自动构建方法 |
CN105243276A (zh) * | 2015-10-14 | 2016-01-13 | 中国地震局地壳应力研究所 | 一种建筑物震害分析方法 |
CN108171233A (zh) * | 2016-12-07 | 2018-06-15 | 三星电子株式会社 | 使用基于区域的深度学习模型的对象检测的方法和设备 |
US10369701B1 (en) * | 2018-10-30 | 2019-08-06 | Mujin, Inc. | Automated package registration systems, devices, and methods |
US10373336B1 (en) * | 2019-03-07 | 2019-08-06 | Mujin, Inc. | Method and system for performing automatic camera calibration for robot control |
CN110524665A (zh) * | 2019-09-29 | 2019-12-03 | 北京地平线机器人技术研发有限公司 | 木制品加工方法、装置、介质以及设备 |
Non-Patent Citations (2)
Title |
---|
Skeletal descriptions of shape provide unique perceptual information for object recognition;Vladislav Ayzenberg 等;《Scientific Reports》;20190627;第9卷;9359 * |
基于单目视觉的目标识别与定位研究;冯春;《中国博士学位论文全文数据库 信息科技辑》;20141215(第12期);I138-48 * |
Also Published As
Publication number | Publication date |
---|---|
CN111191083A (zh) | 2020-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11763459B2 (en) | Method and computing system for object identification | |
JP7015031B2 (ja) | カメラによって生成される画像情報に基づいて、物体検出またはロボット相互作用計画作成を行う方法および計算システム | |
CN110992356B (zh) | 目标对象检测方法、装置和计算机设备 | |
US11403764B2 (en) | Method and computing system for processing candidate edges | |
US20240221350A1 (en) | Method and computing system for generating a safety volume list for object detection | |
US11958202B2 (en) | Method and computing system for performing container detection and object detection | |
US20230044001A1 (en) | Systems and methods for object detection | |
CN111191083B (zh) | 用于对象标识的方法和计算系统 | |
US20240253237A1 (en) | Method and computing system for performing container detection and object detection | |
CN112734783B (zh) | 用于处理候选边缘的方法和计算系统 | |
CN113313803A (zh) | 垛型分析方法、装置、计算设备及计算机存储介质 | |
CN112288038A (zh) | 基于图像分类的物体识别或物体注册的方法及计算系统 | |
CN113361651B (zh) | 生成用于物体检测的安全空间列表的方法和计算系统 | |
JP6843458B1 (ja) | 物体認識のために画像分類を行う方法およびシステム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |