本申请是申请日为2019年8月15日、题为“基于第二图像更新第一图像的方法和处理系统”的发明专利申请201910751259.2的分案申请。
本发明针对一种用于基于相机图像数据构造图像的方法和处理系统。
背景技术:
相机可以被用于促进在其中机器人与机器人的环境(诸如仓库或制造环境)交互的自动化应用。相机可以生成从中可以确定各种信息(诸如机器人环境中的物体的形状或大小)的图像。该信息可以帮助在其中机器人在仓库中拾取物体或在工厂中围绕物体导航的交互。由相机捕获的图像还可以被用于生成物体的模型,诸如物体的三维(3d)模型。
技术实现要素:
本文的实施例的一个方面涉及由相机图像处理系统执行的方法。该方法可以由相机图像处理系统的控制电路执行,诸如通过控制电路执行相机图像处理系统的非暂时性计算机可读介质上的指令。该相机图像处理系统包括通信接口,该通信接口被配置为与以下各项通信:(i)第一相机,其是第一类型的深度感测相机并且具有第一相机视场,以及(ii)第二相机,其是与第一类型的深度感测相机不同的第二类型的深度感测相机并且具有与第一相机视场重叠的第二相机视场。当通信接口与第一相机和第二相机通信时,相机图像处理系统被配置为接收基于由第一相机感测到的信息生成的第一深度图,其中该第一深度图包括第一组像素,第一组像素表示第一相机视场中的第一组相应物理位置,并且指示用于第一组相应物理位置的第一组相应深度值,其中第一组相应深度值是相对于第一相机的。相机图像处理系统还被配置为接收基于由第二相机感测到的信息生成的第二深度图,其中该第二深度图包括第二组像素,第二组像素表示第二相机视场中的第二组相应物理位置,并且指示用于第二组相应物理位置的第二组相应深度值,其中第二组相应深度值是相对于第二相机的。另外,相机图像处理系统被配置为识别第一深度图的第三组像素,该第三组像素也表示第二组相应物理位置,使得第三组像素对应于第二深度图的第二组像素。此外,相机图像处理系统被配置为从第三组像素中识别一个或多个空像素,其中该一个或多个空像素中的每个空像素是第一深度图的不具有分配到该像素的深度值的像素,并且相机图像处理系统被配置为通过向该一个或多个空像素的每个空像素分配基于第二深度图的第二组像素中的对应像素的深度值的相应深度值来更新第一深度图,其中用于空像素的对应像素是第二深度图的第二组像素中的与空像素表示相同的物理位置的像素。
附图说明
本发明的前述和其他特征、目的和优点将从如附图所示的本发明实施例的以下描述中变得清楚。在此被并入并形成说明书一部分的附图进一步用于解释本发明的原理并使相关领域的技术人员能够制造和使用本发明。附图不按比例绘制。
图1a描绘了根据本文的实施例的具有相机图像处理系统、第一相机和第二相机的视觉系统的框图。
图1b描绘了根据本文的实施例的相机图像处理系统的框图。
图1c描绘了根据本文的实施例的第一相机的框图。
图1d描绘了根据本文的实施例的第二相机的框图。
图1e描绘了根据本文的实施例的与机器人控制系统通信的视觉系统的框图。
图2描绘了根据本文的实施例的视觉系统,其中第一相机和第二相机感测可以从其生成深度图的信息。
图3a描绘了根据本文的实施例的视觉系统,其中第一相机和第二相机感测可以从其生成深度图的信息。
图3b描绘了根据本文的实施例的第一深度图。
图3c-3e描绘了根据本文的实施例的由第一深度图表示的第一组物理位置。
图3f描绘了根据本文的实施例的视觉系统,其中第一相机和第二相机感测可以从其生成深度图的信息。
图3g描绘了根据本文的实施例的第二深度图。
图3h描绘了根据本文的实施例的由第二深度图表示的第二组物理位置。
图4提供了示出根据本文的实施例的用于更新深度图的方法的流程图。
图5a和5b描绘了根据本文的实施例的视觉系统,其中第一相机和第二相机感测可以从其生成深度图的信息。
图6a至图6i示出了根据本文的实施例的基于来自第二深度图的深度信息更新第一深度图的示例。
图7a至图7c示出了根据本文的实施例的基于来自第二深度图的深度信息更新第一深度图的示例。
图8a和图8b示出了根据本文的实施例的基于来自第二深度图的深度信息更新第一深度图的示例。
图9a至图9c示出了根据本文的实施例的通过反向投影操作确定物理位置的坐标的示例。
具体实施方式
以下详细描述本质上仅是示例性的,并不旨在限制本发明或本发明的应用和用途。此外,不旨在受前述技术领域、背景技术、发明内容或以下具体实施方式中提出的任何明示或暗示的理论的约束。
本文描述的实施例涉及基于第二图像中的信息补充或以其他方式更新第一图像中的信息。更具体地,本文的实施例涉及基于第二深度图中的深度信息补充或以其他方式更新第一深度图中的深度信息(例如,深度值)。第一深度图可以是基于由第一相机感测的信息生成的,而第二深度图可以是基于由第二相机感测的信息生成的。在一些情况下,第二相机可以具有与第一相机不同的属性。例如,第二相机可以是与第一相机不同类型的相机,并且可以具有不同的操作原理。不同的属性可以使第二相机例如具有对某些类型的噪声(也称为干扰)的较小敏感度、更好的准确度、更高的分辨率或相对于第一相机的属性的某个其他差异。在一些情况下,由第二相机感测的信息可以覆盖第一相机遗漏的某些物理位置。出现这种情况可能是因为两台相机具有对噪声的不同敏感度、不同准确度水平、不同分辨率、不同视场或因为某个其他原因。因为第二相机可以感测第一相机遗漏或不可用的信息,所以第二相机可以被用于补充第一相机的能力和/或相对于仅使用一个相机生成深度图或其他图像的实现方案提供可以产生更完整和/或更准确的深度图或其他图像的补充信息。因此,本文的实施例的深度图可以是经由第一相机获得的深度信息和经由第二相机获得的深度信息的融合。
在一些情形下,经更新的深度图(也被称为经补充的深度图)可以被用于增强机器人与其环境交互的能力。例如,来自经更新的深度图的深度信息可以被用于生成机器人的环境中的物体或结构的3d模型(例如,点云)。如上所述,本文的实施例中的经更新的深度图可以更完整,或者具有更高的准确度。结果,从经更新的深度图生成的3d模型也可以更完整和/或更准确,这可以促进在机器人与被建模的物体或结构的交互期间更准确地控制机器人。例如,盒子或箱子中的物体的更准确的3d模型可以增强机器人准确执行箱子拾取的能力,并且机器人的环境中的结构的更准确的3d模型可以通过在该结构周围导航来增强机器人避免与结构碰撞的能力。因此,本文实施例可以提高自动化并促进机器人与其环境之间的更强健的交互。
在实施例中,第一深度图和第二深度图二者都可以包括多个像素,并且补充第一深度图(也被称为更新第一深度图)可以向第一深度图的空像素提供深度值。第一深度图的空像素可以是不具有被分配至该像素的深度值的像素,或者更一般地是遗漏深度信息的像素。因此,本文的一些实施例涉及通过将深度值分配到空像素来填充遗漏的深度信息,从而将空像素转换为经更新的像素。
在实施例中,被分配到空像素的深度值可以基于第二深度图的对应像素的深度值。在一些情况下,第一深度图中的空像素可能是干扰的结果,该干扰限制第一相机感测确定深度值所需的信息的能力。例如,如果第一相机是结构光相机,则干扰源可能包括太阳光,太阳光可能限制第一相机感测结构光信息(诸如被投影到物体表面上的图案的外观)的能力。该限制可能反过来降低了从投影图案确定深度值的能力。因此,干扰可能减少确定深度值所需的可靠信息量,这可能导致具有遗漏关于其的深度信息的多个空像素的第一深度图。在这样的实施例中,来自第二相机的深度值可以被用于填充遗漏的深度信息当中的一些。在一个示例中,第二相机可以是飞行时间(time-of-flight,tof)相机,其可以测量或以其他方式感测飞行时间信息,从中可以生成用于第二深度图的深度值。相对于结构光相机,tof相机在干扰方面可能对太阳光较不敏感。因此,太阳光可以对第二相机感测飞行时间信息的能力具有相当小的影响,从该飞行时间信息可以生成具有第二组深度值的第二深度图。因此,本文的实施例涉及通过使用来自第二深度图的深度值来导出可以更新第一深度图的空像素的深度值来减轻干扰或其他误差源的影响。
在实施例中,升采样可以作为更新第一深度图的一部分,以便增大被更新的第一深度图的空像素的数量。在一些情况下,可以在例如其中第一深度图具有比第二深度图更高的分辨率的情况下执行升采样。在这种情况下,来自第二深度图的像素可以被用于更新第一深度图的多个空像素。例如,来自第二深度图的像素可以被用于更新第一深度图中的对应空像素以及一组相邻的空像素。如果不执行升采样,则在第一深度图的分辨率远高于第二深度图的分辨率的场景中,被更新的第一深度图中的空像素的数量相对于第一深度图的空像素的总数或者像素总数可能是小的。因此,如果不执行升采样,则更新空像素可能对整个第一深度图仅具有有限的影响。因此,可以在更新第一深度图的空像素时执行升采样,以便对第一深度图中有多少深度信息产生更大影响。
在实施例中,可以执行降采样以便基于来自第二深度图的多个像素的深度信息来更新第一深度图的空像素。在一些情况下,可以在其中第一深度图具有比第二深度图低的分辨率的情况下实现降采样。在这种情况下,来自第二深度图的多个像素可以对应于第一深度图的公共空像素。因此,可以利用深度值来更新空像素,该深度值是第二深度图的对应多个像素的深度信息的平均值或其他合成值。
在实施例中,当深度值被分配到作为第一深度图的空像素的像素时,可以执行反向投影操作以找到投影到该像素的中心位置的物理位置,并且更具体地,找到该物理位置的3d坐标[x”y”z”]t(其中t表示转置),其中该物理位置可以是物体或结构表面上的位置。然后可以将3d坐标[x”y”z”]t用作点云中的点,该点云可以充当物体或结构在第一相机的视场中的3d模型。更具体地,物体或结构上的物理位置可以投影到第一相机的传感器阵列中的对应传感器(例如,光电探测器),其中每个传感器占据传感器阵列中的对应物理区域。在一些情况下,传感器可以对应于深度图的像素,使得物体或结构上的物理位置也可以被称为投影到像素上。物体或结构上的物理位置可以由像素表示,因为物理位置投影到由对应于该像素的传感器占据的物理区域内的位置。在该示例中,该区域的中心可以被称为像素的中心。当像素被分配深度值时,像素可以表示具有第一3d坐标[x’y’z’]t的物理位置。该第一3d坐标[x’y’z’]t可以基于第二相机的固有参数(例如,第二相机的投影矩阵)、第一相机和第二相机之间的空间关系以及第一相机的固有参数(例如,第一相机的投影矩阵)来确定。在一些情况下,第一3d坐标的z分量(即,z’)等于用于表示物理位置的像素的深度值(即,z’等于被分配给该像素的深度值)。然而,具有第一3d坐标[x’y’z’]t的物理位置可能不一定投影到像素的中心位置,而是可能投影到与像素相关联的区域中(或者更具体地,由与对应于该像素的传感器占据的区域中)的某个其他位置,诸如在区域的周边中的位置。在某些情况下使用第一3d坐标[x’y’z’]t作为物体或结构的点云中的点可能是不期望的,因为使用该点云的某些过程可能依赖于点云中的每个3d坐标投影到对应像素的中心位置的假设。如果点云偏离该假设,那么依赖该假设的过程可能无法正常操作。因此,点云可能需要替代地包括另一物理位置的第二3d坐标[x”y”z”]t,其确实投影到对应像素的中心位置。在实施例中,可以经由反向投影操作确定第二3d坐标。反向投影操作可以确定连接第一相机的焦点和像素的中心位置的假想线,并将第二3d坐标确定为落在该假想线上的坐标。该假想线可以近似第一相机视场中的可以投影到像素上的所有物理位置。在一些情况下,第二3d坐标的z分量可能必须等于像素的深度值(即,z”和z’等于深度值)。在这种情况下,反向投影操作可以涉及确定第二3d坐标的x分量(即,x”)和y分量(即,y”)以满足3d坐标必须落在假想线上以及第二3d坐标的z分量必须等于像素的深度值的条件。第二3d坐标可以被包括在物体或结构的点云中以代替第一3d坐标。
图1a示出了视觉系统100(也被称为图像获取系统100、模型构建系统100,或更简单地作为系统100)的框图,该视觉系统100包括相机图像处理系统110、第一相机140和第二相机150。视觉系统100可以被配置为生成第一相机140的视场中和/或第二相机150的视场中的物体或结构的的图像。在实施例中,图像可以是包括物体或结构的颜色强度信息或灰度信息的彩色图像或灰度图像。在实施例中,图像可以是包括物体或结构的深度信息(也被称为范围信息)的深度图。例如,深度图可以包括多个像素,这些像素中一些或所有像素被分配相应的深度值。在一些情况下,还可以为像素分配作为物体或结构的表面上的相应物理位置的3d坐标的值。例如,像素中的一些或所有像素可以各自被分配第一值、第二值和第三值,它们分别是第一相机140的视场中或第二相机150的视场中的物体的相应物理位置的3d坐标的x分量、y分量和z分量。在一些场景中,深度值可以是3d坐标的分量。例如,深度值可以是3d坐标的z分量。如果像素被分配物体或结构的表面上的相应物理位置的3d坐标,则深度图也可以是点云或点云的一部分,该深度图可以被认为是物体或结构的3d模型或部分3d模型。在一些情况下,任何其他类型的深度图也可以被认为是物体或结构的3d模型或部分3d模型。在实施例中,视觉系统100可以被配置为基于由第一相机140和/或第二相机150感测的深度信息来生成物体或结构的点云。
在实施例中,视觉系统100可以被部署或以其他方式定位于仓库、制造工厂或其他房屋内,并且可以促进在房屋处的机器人操作。在一些情况下,视觉系统100可以被配置为生成在房屋处的机器人将与其交互的物体或物体类型的3d模型。例如,图1e描绘了视觉系统100与机器人控制系统170(其也可以被称为机器人控制器)通信的实施例,其中机器人控制系统170被配置为生成用于机器人180的机器人移动命令。在图1e的示例中,视觉系统100、机器人控制系统170和机器人180都可以被部署在仓库或其他房屋内。机器人180可以旨在具体地与仓库中的物体190交互,或者与具有与物体190相同的形状和/或大小的物体交互。例如,物体190可以是仓库中的商品或包裹,并且机器人交互可能涉及箱子拾取、卸垛、码垛或某个其他机器人操作。在该示例中,视觉系统100可以被配置为基于由视觉系统100获取的深度信息生成物体190的3d模型,并且可以被配置为将3d模型传送到机器人控制系统170。该3d模型可以指示例如物体190的大小、形状、位置和/或朝向。在一些情形下,机器人控制系统170可以被配置为基于3d模型并且基于机器人180和物体190之间的期望交互来生成机器人移动命令。机器人控制系统170可以被配置为将机器人移动命令传送到机器人180,以使机器人180以期望的方式与物体190交互。在图1e的实施例中,视觉系统100和机器人控制系统170可以是分开的系统。在另一个实施例中,视觉系统100可以是机器人控制系统170的一部分。
返回图1a,相机图像处理系统110(也被称为相机信息处理系统110)可以被配置为与第一相机140和第二相机150(例如,图1a中的两者)通信,并且从第一相机140和第二相机150接收信息。在实施例中,该信息可以是深度图。在实施例中,信息可以是结构化光信息、飞行时间信息或可以从其生成深度图的其他信息。从相机接收的信息可以被认为是成像信息,并且相机图像处理系统110可以被配置为处理成像信息,以便使用从第二相机150获取的成像信息来补充从第一相机140获取的成像信息。在一些情形下,相机图像处理系统110可以被配置为处理可以基于由第一相机140感测的信息生成的第一深度图,以便使用来自第二深度图的深度信息来补充第一深度图,可以基于由第二相机150感测的信息生成第二深度图。在实施例中,第一深度图可以表示第一相机140和第二相机150的视场中的物体,并且相机图像处理系统110可以被配置为在使用来自第二深度图的深度信息补充了第一深度图之后基于第一深度图中的深度信息生成物体的3d模型(例如,点云)。
在实施例中,相机图像处理系统110可以是被配置为与第一相机140和第二相机150通信的单个设备(例如,单个控制台或单个计算机)。在一些情况下,相机图像处理系统110可以包括多个设备,诸如彼此通信的多个计算机或多个控制台。在一些情况下,相机图像处理系统110可以专用于处理从第一相机140和第二相机150接收的信息,以确定在相机140/150的视场中的环境(也称为目标场景)的深度信息,和/或生成该环境中的物体或结构的3d模型。在实施例中,相机图像处理系统110还可以被配置为执行与图1e的机器人控制系统170相关联的功能,诸如基于由系统110生成的3d模型生成机器人移动命令(例如,电动机命令)的功能。
在实施例中,相机图像处理系统110可以被配置为从第一相机140和第二相机150接收由相机140/150感测的信息。该信息可以是如上所述的结构光信息、飞行时间信息、深度图或某些其他信息(例如,彩色图像或灰度图像)。在实施例中,相机图像处理系统110可以被配置为向第一相机140和第二相机150发送一个或多个命令。例如,一个或多个命令可以各自是使第一相机140和/或第二相机150生成深度图或者更一般地感测可以从其生成深度图或其他类型的图像的信息的相机命令。在一些情况下,相机命令可以使第一相机140和/或第二相机150将由相应相机感测到的信息发送到相机图像处理系统110。相机图像处理系统110可以被配置为经由通信接口113与第一相机140和第二相机150通信,这将在以下参考图1b更详细地讨论。
在实施例中,图1a的视觉系统100中的仅有的相机可以是第一相机140和第二相机150,并且相机图像处理系统110可以被配置为仅基于由第一深度图感测的信息和由第二相机150感测的信息生成经更新的深度图和/或生成物体的3d模型。在另一实施例中,视觉系统100除了第一相机140和第二相机150之外还可包括一个或多个相机,并且可以被配置为还基于由该一个或多个附加相机感测的信息生成经更新的深度图和/或生成物体的3d模型。
图1b描绘了相机图像处理系统110的框图,其也可以被称为视觉控制器。如框图中所示,相机图像处理系统110包括控制电路111、通信接口113和非暂时性计算机可读介质115(例如,存储器)。在实施例中,控制电路111可以包括一个或多个处理器、可编程逻辑电路(plc)或可编程逻辑阵列(pla)、现场可编程门阵列(fpga)、专用集成电路(asic)或任何其他控制电路。
在实施例中,通信接口113可以包括被配置为与图1a的第一相机140和第二相机150通信的一个或多个电路或其他部件。例如,通信接口113可以包括被配置为通过有线或无线协议执行通信的通信电路。作为一个示例,通信电路可以包括rs-232端口控制器、usb控制器、以太网控制器、蓝牙
在实施例中,非暂时性计算机可读介质115可以包括计算机存储器。计算机存储器可以包括例如动态随机存取存储器(dram)、固态集成存储器和/或硬盘驱动器(hdd)。在一些情况下,非暂时性计算机可读介质115可以存储计算机可执行指令,诸如执行图4的方法的指令。在一些情况下,非暂时性计算机可读介质115可以存储来自第一相机140和/或第二相机150的信息,诸如结构光信息、飞行时间信息、深度图和/或点云。
图1c和1d分别提供了第一相机140(被标记为“相机1”)和第二相机150(被标记为“相机2”)的框图。在本文的实施例中,相机可以包括传感器系统(例如,2d传感器阵列),其被配置为感测描述相机的视场中的目标场景的外观的信息、目标场景中的物体或结构的三维结构,和/或关于目标场景的一些其他信息。相机可以是深度感测相机(也被称为距离感测相机)、颜色感测相机、红外相机和/或任何其他类型的相机。在一些情况下,相机可以被配置为生成描述外观、三维结构或关于目标场景的其他信息的图像。图像可以是深度图、彩色图像、灰度图像或任何其他类型的图像,并且可以包括多个像素(例如,二维(2d)像素阵列)。在一些情况下,相机可以具有传感器阵列(例如,光电探测器),并且图像可以具有与传感器阵列一一对应的像素阵列。
在实施例中,第一相机140和第二相机150可以是不同类型的相机。例如,第一相机140可以是第一类型的深度感测相机(例如,结构光相机),而第二相机150可以是第二类型的深度感测相机(例如,飞行时间(tof)相机)。深度感测相机也可以被称为距离感测相机。在一些情况下,第一相机140和第二相机150可以具有不同的操作或实现原理。在一些情况下,第一相机140可能在准确度、空间分辨率(也被简称为分辨率)或对噪声或干扰的敏感度方面具有某些限制,并且第二相机150可在一个或多个这些类别中具有更好的性能。因此,来自第二相机150的信息可以被用于补充由第一相机140获取的信息,以便提高由第一相机140获取的信息的强健性。
图1c描绘了第一相机140是结构光相机的实施例的框图。在该实施例中,第一相机140可以包括一个或多个镜头141、投影器142、相机传感器143和通信接口145。在实施例中,通信接口145可以被配置为与图1a或1b的相机图像处理系统通信并且可以类似于相机图像处理系统110的图1b的通信接口113。
在实施例中,投影器142可以被配置为将图案(诸如红外或可见光谱中的一系列条纹)从第一相机140投射并且投射到第一相机140的视场内的目标场景中的物体或结构的一个或多个表面上。投影的图案可以从该一个或多个表面反射回第一相机140。反射的可见光或红外辐射可以通过一个或多个镜头141聚焦到相机传感器143上。在实施例中,相机传感器143可以包括电荷耦合器件(ccd)或其他传感器阵列。第一相机140可以被配置为使用相机传感器143感测结构化光信息,其中结构光信息可以指代目标场景中的该一个或多个表面上的投影图案的外观。在一些情况下,结构化光信息可以具有彩色图像的形式,该彩色图像描述一个或多个表面上的一系列条纹或其他图案的外观。在实施例中,第一相机140可以被配置为基于结构化光信息生成深度图,并且经由通信接口145将深度图和/或结构光信息传送到相机图像处理系统110。在这样的实施例中,第一相机140可以包括被配置为生成深度图的其自身的处理器或其他控制电路。在实施例中,第一相机140可以依赖于相机图像处理系统110来生成深度图,并且可以被配置为将结构化光信息传送到相机图像处理系统110,使得系统110可以基于结构化光信息生成深度图。在一些情况下,诸如当第一相机140是结构光相机时,视觉系统100可以位于照明条件可以被控制的环境中。例如,该环境可以是能够阻挡太阳光的封闭空间,太阳光可以充当干扰第一相机140感测结构化光信息的能力的干扰源。
图1d描绘了第二相机150是tof相机的实施例的框图。在这样的实施例中,第二相机150包括一个或多个镜头151、照明单元152、相机传感器153和通信接口155。通信接口155可以被配置为与图1的相机图像处理系统110通信,并且可以类似于图1b的相机图像处理系统110的通信接口。
在实施例中,照明单元152可以被配置为将可见光或任何其他形式的光从第二相机150发射并朝向第二相机150的视场中的目标场景发射。照明单元152可包括例如激光器、发光二极管(led)或任何其他光源。发射的光可以具有脉冲、由载波调制的连续波的形式、或发射的光的某个其他形式。在一些情况下,发射的光可以作为光束朝向目标场景中的窄区域发射,或者可以在目标场景中的宽区域上展开。发射的光可以从目标场景中的一个或多个表面反射,并且可以变成朝向第二相机150返回的反射光。在实施例中,一个或多个镜头151可以将反射光聚焦到相机传感器153上。
在实施例中,相机传感器153可以包括具有被配置为检测反射光的光电探测器阵列(例如,雪崩光电二极管)的传感器阵列。在一些实施方案中,相机传感器153还可以包括确定反射光何时被传感器阵列的每个光电检测器检测到的定时电路。例如,定时电路可以包括与多个光电探测器对应的相应计数器(或者更一般地,定时寄存器),每个计数器可以在照明单元152朝向场景发射光时开始递增,并且当对应的光电探测器探测到反射光时停止计数。在一个实施方案中,可以省略定时电路。
在实施例中,第二相机150可以被配置为使用相机传感器153来感测飞行时间信息。飞行时间可以是指在照明单元152朝向目标场景发射光与相机传感器153的光电检测器检测到发射的光的反射(即,反射光)之间的时间量。可以基于例如由定时电路捕获的定时信息,或者基于由照明单元152发射的光的相位与由相机传感器153检测的反射光的相位之间的差异来确定飞行时间信息。在实施例中,第二相机150可以被配置为基于飞行时间信息生成深度图,并经由通信接口155将深度图和/或飞行时间信息传送到相机图像处理系统110。在实施例中,第二相机150可以依赖于相机图像处理系统110来生成深度图,并且可以将飞行时间信息传送到相机图像处理系统110,相机图像处理系统110可以被配置为基于飞行时间信息生成深度图。
在实施例中,深度图中的深度值可以是相对于相机传感器143/153的位置的、是相对于一个或多个镜头141/151的,或是相对于相机140/150中的一些其他位置的。例如,与第一相机相关联的第一深度图中的深度值可以是相对于第一图像平面的,其中第一图像平面是由传感器阵列或相机传感器143的其他部件定义的平面。因此,可以相对于例如第一图像平面来测量第一深度图中的深度值。类似地,与第二相机相关联的第二深度图中的深度值可以相对于例如第二图像平面,其中第二图像平面是由相机传感器153的传感器阵列或其他部件定义的平面。
在实施例中,第一相机140和第二相机150可以具有不同的分辨率。例如,第一相机140的相机传感器143和第二相机150的相机传感器153可以具有不同的分辨率。这种情况可以导致第一深度图和第二深度图具有不同分辨率,其中第一深度图由第一相机140感测的信息生成或基于第一相机140感测的信息生成,并且第二深度图由第二相机150感测的信息生成或基于第二相机150感测的信息生成。分辨率可以是指例如多少像素或者每个单位面积有多少像素被用于表示目标场景。在另一实施例中,第一相机140和第二相机150可具有相同的分辨率,这可导致第一深度图和第二深度图具有相同分辨率。
图2描绘了视觉系统200(也称被为物体模型构建系统200,或更简单地被称为系统200),视觉系统200包括作为第一类型的深度感测相机的第一相机240(被标记为“相机1”),并且包括作为与第一类型的深度感测相机不同的第二类型的深度感测相机的第二相机250(被标记为“相机2”),并且包括图1a和1b的相机图像处理系统110。在实施例中,来自第一相机240和第二相机250两者的信息可以被用于生成物体260的深度图。该深度图可以被认为是物体260的3d模型。在一些情形下,深度图也可以是点云,或者可以具有被用于生成点云的深度信息,该点云也可以是物体260的3d模型。如上所述,深度图可以包括描述物体260的表面上的物理位置的相应深度值的信息,并且点云可以包括识别物体260的表面上的物理位置的3d坐标的信息。系统200可以是图1a的系统100的实施例,第一相机240可以是图1a或1c的第一相机140的实施例,并且第二相机250可以是图1a或1d的第二相机150的实施例。
在实施例中,第一相机240可以被配置为生成第一深度图,该第一深度图指示物体260的表面上的第一组物理位置(也被称为第一组点)的相应深度值(也被称为相应深度),其中深度值是相对于第一相机240(例如,相对于第一相机240的图像平面)的。在实施例中,第二相机250可以被配置为生成第二深度图,该第二深度图指示物体260的表面上的第二组物理位置相对于第二相机250的相应深度值。
图2还描绘了第一相机240的坐标系的坐标轴201和第二相机250的坐标系的坐标轴202。如图2所描绘的,第一相机240的坐标系和第二相机250的坐标系两者都可以由x、y和z轴定义。每个坐标系的x和y轴可以定义与第一相机240或第二相机250的相应图像平面平行的平面,而坐标系的z轴可以垂直于该相应图像平面。在实施例中,第一相机240的坐标系的原点可以位于例如第一相机240的图像平面的中心或某个其他位置,并且第二相机250的坐标系的原点可以位于例如第二相机250的图像平面的中心或某个其他位置。第一深度图的深度值可以相对于第一相机240的坐标系被测量或表达,而第二深度图的深度值可以相对于第二相机250的坐标系被测量或表达。
在一些情况下,第一深度图中的深度值可以是指在物体260的表面上的第一组物理位置和第一相机240(例如,第一相机240的图像平面)之间沿着第一相机240的坐标系的坐标轴(例如,z轴)的距离。在这种情况下,第一深度图中的深度值可以是第一组物理位置的相应3d坐标的z分量(也被称为z坐标)。在一些情况下,第二深度图中的深度值可以是指在物体260的表面上的第二组物理位置和第二相机250(例如,第二相机250的图像平面)之间沿着第二相机250的坐标系的坐标轴(例如,z轴)的距离。在这种情况下,第二深度图中的深度值可以是第二组物理位置的相应3d坐标的z分量。
图3a-图3h是示出了使用两个不同相机生成的两个相应深度图的示例图。更具体地,图3a描绘了作为第一类型的深度感测相机的第一相机340,并且描绘了作为第二类型的深度感测相机的第二相机350。第一相机340可以是图2的相机240的实施例,而第二相机350可以是图2的相机250的实施例。如图3a所示,第一相机340具有视场380(也被称为相机视场380)。第一相机可以被配置为感测信息以生成用于相机视场380中的平台370和物体360的一个或多个表面的深度图。第二相机350可以布置在第一相机340附近,并且可以具有与第一相机340的视场380重叠的视场。下面参考图3e更详细地讨论第二相机350。在实施例中,第一相机340和第二相机350可以以使第一相机340和第二相机350相对于彼此保持静止的方式直接或间接地彼此附接。图3a还示出了第一相机340的坐标系的坐标轴301。在实施例中,第一相机340的坐标系可以具有位于第一相机340的图像平面上的原点。第一相机340的坐标系可以提供用于第一深度图382的深度值的参考,这将在下面的图3b中被讨论。
图3b是示出了由图3a的第一相机340生成的或者基于由第一相机340感测的信息生成的第一深度图的示例图。在实施例中,第一深度图382是识别用于视场380(图3a中所示)中的多个物理位置的深度值(例如,以毫米(mm)或厘米(cm)为单位)的2d像素阵列。在图3b的示例中,第一深度图382具有12×15像素的分辨率,其表示并且识别用于物体360或平台370(均如图3a所示)的表面上的第一组物理位置3721,1到37212,15的相应深度值,其中第一组物理位置3721,1到37212,15由图3c中的圆圈表示。更具体地,图3c描绘了物体360和平台370(均如图3a所示)的顶视图,并且示出了物体360或平台370的一个或多个外表面上的第一组物理位置3721,1到37212,15。作为示例,图3b的第一深度图382中的像素[1,1]t(行1,列1)可以识别用于平台370的表面上的对应物理位置3721,1(如图3c所示)的250cm的深度值。在另一示例中,第一深度图382中的像素[1,2]t(行1,列2)识别用于平台370的表面上的对应物理位置3721,2(也如图3c所示)的也为250cm的深度值。如图3b所描绘的,第一深度图382的一部分385可以对应于物体360的表面。虽然图3b将第一深度图382描绘为具有12×15像素的分辨率,但是第一深度图382在其他示例中可以具有不同分辨率,诸如1280×1024像素、320×240像素、640×480像素,或更高或更低分辨率(例如,64×48像素或204×204像素)。
在实施例中,图3c中的第一组物理位置3721,1到37212,15可以是投影到第一相机340的相机传感器上的物理位置。例如,图3d描绘了物理位置3721,1到37212,15的子集,并且更具体地描绘了投影到对应于第一深度图382的行5的相机传感器的相应区域上的物理位置3725,1到3725,15。更具体地,图3d示出了沿着图3c中的线375切割的物体360和平台370的侧剖视图。图3d中的描绘对来自物理位置3725,1到3725,15的反射光如何投影到由第一相机340的相机传感器定义的图像平面342上进行了建模,其中投影的角度可以基于第一相机340的焦点344的位置和/或第一相机340的焦距。在图3d中用虚线描绘了投影。在实施例中,该投影可以由投影矩阵k表征,投影矩阵k定义了具有坐标x’、y’、z’的坐标的物理位置与具有像素坐标a、b的像素之间的关系:
如上所述,图3b中的深度图382的像素表示用于图3c中的第一组物理位置(也被称为物理点)3721,1到37212,15的深度值,其中这些深度值是相对于第一相机340的。第一深度图382的深度值可以指代沿着图3a中的z轴的相应距离。
图3e提供了对用于(图3b的)第一深度图382的一行的深度值(更具体地是用于第一深度图382的行5的深度值)的描绘。行5的像素对应于物理位置子集3725,1到3725,15(该物理位置子集为如图3d描绘的相同的物理位置子集)。即,像素[5,1]t到[5,15]t识别用于物理位置3725,1到3725,15的相应深度值。如图3e所示,第一深度图382中的深度值可以指代在物理位置子集3725,1到3725,15与(图3a的)第一相机340的图像平面342之间沿着第一相机340的坐标系的z轴的相应距离。在这样的示例中,图像平面342可以定义用于第一深度图382的零深度。如上所述,由特定像素识别的深度值可以指代例如由该像素表示的物理位置的3d坐标的z分量或其他分量。
图3f描绘了第二相机350的相机视场390和第二相机350的坐标系的坐标轴302。该坐标系的原点可以位于例如第二相机350的图像平面上、第二相机350的镜头上或任何其他位置。图3g示出了由(图3f的)第二相机350生成的或者基于由第二相机350感测的信息生成的第二深度图392。第二深度图392还可以识别用于(图3f的)相机视场390中的一个或多个表面上的物理位置的深度值。因为第二相机350的相机视场390位于第一相机340的相机视场380的稍右侧,所以第二深度图392可以覆盖与第一深度图382所覆盖的区域略微不同的区域。
如图3g和3h所描述的,该示例中的第二深度图392可以具有的4×5像素,其识别用于第二组物理位置3731,1到3734,5的相应深度值。物理位置3731,1到3734,5由图3h中的圆圈表示,图3h提供了(图3a和/或图3f两者的)物体360和平台370的顶视图。第二组物理位置3731,1到3734,5可以是投影到(图3f的)第二相机350的图像传感器的区域上的物理位置,其以类似于图3d中针对第一组物理位置3721,1到37212,15的描述的方式与第二深度图392的对应像素对应。第二组物理位置3731,1到3734,5可以具有与第一组物理位置3721,1到37212,15共同的一个或多个位置,或者可以没有与第一组物理位置3721,1到37212,15共同的位置。虽然该示例中的第二深度图392具有4×5像素的分辨率,但是在其他示例中可以具有不同的分辨率,诸如1280×1024像素、320×240像素、640×480像素、或更高或更低的空间分辨率(例如,64×48像素或204×204像素)。
在实施例中,第二深度图392的像素识别用于第二组物理位置3731,1到3734,5的相应深度。类似于第一深度图382,第二深度图392的深度值可以指代沿着第二相机340的坐标系中的坐标轴(诸如图3f的z轴)的相应距离。这些距离可以是从第二组物理位置3731,1至3734,5到第二相机350的图像平面。在一些情况下,当第二深度图392中的特定像素表示在第二相机350的坐标系中具有[x,y,z]的3d坐标的物理位置时,由该像素识别的深度值可以指代该物理位置的3d坐标的z分量。
图3b中的第一深度图382和图3g中的第二深度图392具有关于相应深度图382/392中的每个像素的深度信息。这可能涉及例如其中几乎没有噪声或其他误差源的情况。然而,在一些情况下,基于由一个相机感测的信息生成的深度图可能具有空像素,空像素是不具有深度信息的像素。本公开的一个方面涉及通过基于来自第二深度图的信息来补充第一深度图来补偿这种误差源,以便生成具有更完整深度信息的经更新的第一深度图。
图4描绘了示出用于基于第二深度图中的深度值来补充第一深度图的方法400的流程图。在实施例中,方法400可以由图1a和1b的相机图像处理系统110的控制电路111执行。在图5a和5b中描绘了执行方法400的示例环境,图5a和5b描绘了视觉系统500a/500b,每个视觉系统包括与第一相机540和第二相机550通信的相机图像处理系统110。第一相机540可以分别是图1a、图2或图3a的第一相机140/240/340的实施例,并且第二相机550可以分别是图1a、图2或图3f的第二相机150/250/350的实施例。第一相机540具有第一相机视场580,并且第二相机550具有第二相机视场590。第一相机视场580和第二相机视场590至少部分地彼此重叠,并形成重叠的视场585(参见图5a)。相机图像处理系统可以被配置为经由图1b的通信接口113与第一相机540和第二相机550通信。在一些情况下,通信接口113被配置为与之通信的第一相机540可以是第一类型的深度感测相机(例如,结构光相机),并且通信接口113被配置为与之通信的第二相机550可以是与第一类型的深度感测相机不同的第二类型的深度感测相机(例如,tof相机)。
在实施例中,第一相机540和第二相机550可以以使它们相对于彼此静止的方式直接或间接地附接。例如,图5b描绘了包括被附接到第一相机540和第二相机550两者的安装结构530(例如,相机安装座)的视觉系统500b。在实施例中,安装结构可以被配置为防止第一相机540和第二相机550之间的相对移动。图5b还描绘了其中为第一相机540的相机视场580和第二相机550的相机视场590中的物体560和平台570生成深度图的示例。
返回图4,在实施例中,方法400可以以步骤401开始,其中控制电路111接收基于由图5a和5b的第一相机540(图1b的通信接口113被配置为与第一相机540通信)感测的信息(例如,结构光信息)生成的第一深度图。第一深度图可以包括表示第一相机540的相机视场580中的第一组相应物理位置的第一组像素,通信接口113被配置为与第一相机540通信。第一深度图可以指示用于第一组相应物理位置的相应深度值。第一组相应深度值可以是相对于第一相机540的。在实施例中,第一组相应物理位置可以是投影到第一组像素上的物理位置。如上所述,由第一组像素指示的深度值可以是沿着第一相机540的坐标系的坐标轴(诸如z轴)的相应距离。这些距离可以在第一组物理位置和第一相机540之间。
在实施例中,控制电路111在步骤401中可以经由图1b的通信接口113从第一相机540接收第一深度图。例如,第一相机540可以被配置为基于感测的信息(例如,结构光信息)生成第一深度图,并且将第一深度图发送到相机图像处理系统110的控制电路111。控制电路111可以被配置为经由相机图像处理系统110的通信接口113从第一相机540接收第一深度图。
在实施例中,控制电路111在步骤401中可以从图1b的非暂时性计算机可读介质115或者从另一个存储介质接收第一深度图(这样的步骤也可以被称为从非暂时性计算机可读介质115或其他存储介质检索第一深度图)。在该实施例中,第一深度图可以由除第一相机540之外的设备生成。例如,相机图像处理系统110可以基于由第一相机540感测的结构光信息、飞行时间信息或者任何其他信息生成第一深度图,并基于感测的信息生成第一深度图并将第一深度图存储在非暂时性计算机可读介质115中。当正在生成第一深度图时,或者在生成第一深度图之后,控制电路111可以从非暂时性计算机可读介质115检索或以其他方式接收第一深度图。
图6a示出了在步骤401中接收的示例第一深度图682。类似于图3b的第一深度图382,图6a的示例中的第一深度图682具有12×15像素的分辨率,但是在其他示例中可以具有不同的分辨率。图6a示出了具有深度信息的第一深度图682中的第一组像素。更具体地,深度信息识别用于第一组相应物理位置的第一组相应深度值。第一组相应物理位置可以是图3c的物理位置3721,1到37212,15的子集。第一组相应深度值可以的相对于图5a/5b的第一相机540的,类似于关于图3e的描述。图6a还示出了第一深度图682具有多个空像素,这些空像素是没有深度信息(例如,没有分配的深度值)的像素。如上所述,空像素可能由于干扰或某些其他原因(例如,图5b的物体560的几何形状或表面属性)而出现。在实施例中,第一深度图682的第一组像素中的每个像素可以仅包括深度信息。在另一实施例中,第一深度图682的第一组像素中的每个像素还可包括识别由该像素表示的物理位置的3d坐标的信息。例如,可以为像素分配表示3d坐标的z分量的深度值,并且还可以为像素分配3d坐标的x分量的值和y分量的值。
返回图4,方法400还可以包括步骤403,其中控制电路111接收基于由第二相机550(图1b的通信接口113被配置为与第二相机550通信)感测的信息(例如,飞行时间信息)生成的第二深度图。第二深度图包括表示第二相机视场590中的第二组物理位置并且指示用于第二组相应物理位置的第二组相应深度值的第二组像素。第二组相应深度值可以是相对于第二相机550的,通信接口113配置为与第二相机550通信。在实施例中,第二组相应深度值可以指示沿着第二相机的坐标系的坐标轴(例如,z轴)的相应距离。这些距离可以在第二相机550和第二组相应物理位置之间。
在实施例中,控制电路111在步骤403中可以经由图1b的通信接口113从第二相机550接收第二深度图。例如,第二相机550可以被配置为基于感测的信息(例如,飞行时间信息)生成第二深度图,并且将第二深度图发送到相机图像处理系统110的控制电路111。控制电路111可以被配置为经由相机图像处理系统110的通信接口113从第二相机550接收第二深度图。
在实施例中,控制电路111在步骤403中可以从图1b的非暂时性计算机可读介质115或者从另一个设备接收第二深度图(该步骤也可以被称为从非暂时性计算机可读介质115或其他存储介质检索第二深度图)。在该实施例中,第二深度图可以由除第二相机550之外的设备生成。例如,相机图像处理系统110可以基于由第二相机550感测的结构光信息、飞行时间信息或者任何其他信息生成第二深度图,并基于感测的信息生成第二深度图并将第二深度图存储在非暂时性计算机可读介质115中。当正在生成第二深度图时,或者在生成第二深度图之后,控制电路111可以从非暂时性计算机可读介质115检索或以其他方式接收第二深度图。
图6b示出了在步骤403中接收的示例第二深度图692。类似于图3g的第二深度图392,图6b的示例中的第二深度图692具有4×5像素的分辨率,但是在其他示例中可以具有不同的分辨率。第二深度图692中的第二组像素可表示第二组物理位置,并指示用于第二组物理位置的相应深度值。在实施例中,第二组物理位置可以是图3h中的物理位置子集3731,1到3734,5。深度值可以是相对于图5a/5b的第二相机550的,并且可以指示沿坐标轴(诸如z轴)的距离。这些距离可以在第二组物理位置和第二相机550之间。在实施例中,第二深度图692的第二组像素中的每个像素可以仅包括深度信息。在另一实施例中,第二深度图692的第二组像素中的每个像素还可包括识别由像素表示的物理位置的3d坐标的信息。例如,可以为像素分配表示3d坐标的z分量的深度值,并且还可以为像素分配3d坐标的x分量的值和y分量的值。
返回图4,方法400还可以包括步骤405,其中控制电路111识别第一深度图682中的、也表示第二组相应物理位置的第三组像素。因此,第三组像素可以对应于第二组像素。例如,如果第二深度图692中的特定像素识别用于物体560上的特定位置的深度值,则步骤405可以涉及确定第一深度图682中的哪个像素也表示物体560上的该特定位置。因此,从第一深度图682识别的像素以及第二深度图692中的像素可以对应于相同的物理位置,并且因此彼此对应。然后,可以使用第二深度图的该像素来为第一深度图682的对应像素提供深度信息,如下面更详细地讨论的。
在步骤405的一个示例中,第二深度图的第二组像素可以有一组相应像素坐标或者由一组相应像素坐标表示,并且控制电路111被配置为通过基于该组相应像素坐标并基于定义第一相机540和第二相机550之间的空间关系的变换函数来确定附加的一组相应像素坐标,从而识别第一深度图的第三组像素,其中该附加的一组相应像素坐标识别第三组像素。如上所述,第二相机550具有其与第一相机540的第一相机视场580略微不同的第二相机视场590,因为第二相机550的位置不同于第一相机540的位置。因此,可能需要使用描述第一相机540和第二相机550之间的空间关系的变换函数来确定第一深度图682的哪些像素对应于第二深度图692的像素。
例如,可以基于第一相机540的逆投影矩阵、第二相机550的逆投影矩阵以及描述第一相机540和第二相机540之间的空间关系的变换函数来确定第三组像素。更具体地,该示例可以涉及对于第二深度图的第二组像素中的每个像素[uv]t确定由第二深度图的该像素[uv]t表示的物理位置的3d坐标,并确定该物理位置投影到第一深度图的哪个像素[ab]t。在以上示例中,由像素[uv]t识别的深度值可以是物理位置的3d坐标的z分量。因此,确定由像素[uv]t表示的物理位置的3d坐标可以涉及确定该3d坐标的x分量和y分量。该确定可以依赖于例如等式:
上述等式可以确定由像素[uv]表示的物理位置的3d坐标
步骤405的上述示例还可以涉及将坐标
以上示例确定由第二深度图的像素[uv]表示的物理位置的3d坐标
步骤405的上述示例还可以涉及识别第一深度图中的哪个像素与物理位置
在上面的示例中,kfirst(即k第一)是指第一相机540的投影矩阵,并且[ab]t是物理位置
图6c-6f以图形方式描绘了步骤405的示例,其中图5a/5b的控制电路111识别第一深度图682的第三组像素,该第三组像素对应于第二深度图692的第二组像素,其中第一深度图的第三组像素也表示第二组相应物理位置。更具体地,图6c至图6f示出了第一深度图682的哪些像素分别对应于第二深度图692的第一行至第四行中的第二组像素。例如,如图6c-6f所示,第二深度图692的第二组像素具有以下像素坐标:第二深度图692的第一行中的[1,1]t、[1,2]t和[1,4]t,第二深度图692的第二行中的[2,1]t、[2,3]t、[2,4]t和[2,5]t,第二深度图692的第三行中的[3,1]t、[3,2]t、[3,5]t,以及第二深度图692的第四行中的[4,1]t、[4,3]t、和[4,4]t。如图6c-6f中进一步所示,第二深度图中的第二组像素分别对应于用于第一深度图中的第三组像素的以下像素坐标:第一深度图的第二行中的[2,3]t、[2,6]t、[2,12]t(如图6c所描绘的),第一深度图的第五行中的[5,3]t、[5,9]t、[5,12]t、[5,15]t(如图6d所描绘的),第一深度图的第八行中的[8,3]t、[8,6]t、[8,15]t(如图6e所描绘的),以及第一深度图的第十一行中的[11,3]t、[11,9]t和[11,12]t(如图6f所描绘的)。
返回图4,方法400还可以包括步骤407,其中控制电路111从第三组像素中识别一个或多个空像素。该一个或多个空像素中的每个空像素可以是第一深度图的像素,其在基于第二深度图的深度值更新第一深度图之前,没有分配到像素的深度值。在图6c-6f描绘的示例中,控制电路111可以将一个或多个空像素识别为具有以下像素坐标的像素:[5,9]t、[5,12]t(参见图6d)、[8,3]t以及[8,6]t(参见图6e)。更具体地,在使用来自第二深度图的信息补充第一深度图之前,这些像素没有分配到它们的深度值。在一些实施方案中,该示例中的一个或多个空像素可以被识别为图6a中所描绘的空像素组与步骤405中识别的第三组像素的交集。
返回图4,方法400还可以包括步骤409,其中控制电路111通过向一个或多个空像素中的每个空像素分配基于第二深度图的第二组像素中的对应像素的深度值的相应深度值来更新第一深度图。空像素的对应像素可以是第二深度图的第二组像素中的、与该空像素表示相同的物理位置的像素。被分配到特定空像素的深度值可以是相对于第一相机540的。例如,该深度值可以指示沿着第一相机540的坐标系的坐标轴(例如,z轴)的距离,其中该距离在第一相机540和由空像素表示或将由空像素表示的物理位置之间。在一些情况下,被分配到空像素的深度值可以基于第二深度图的对应像素的深度值并且基于定义相机540/550之间的空间关系的变换函数。例如,被分配到空像素的深度值可以是z’,其是基于
图6g示出了第一深度图682的更新版本的示例(也被称为经更新的第一深度图686)。可以通过向空像素(诸如第一深度图682的([5,9]t、[5,12]t、[8,3]t和[8,6]t)分配相应的深度值来生成经更新的第一深度图686,这些相应的深度值等于或基于第二深度图692的对应像素的深度值。该示例中的对应像素分别是第二深度图692的[2,3]t、[2,4]t、[3,1]t以及[3,2]t。如图6g所示,被分配到第一深度图682的空像素的深度值被表示为粗体带下划线的数字。被分配到第一深度图682的空像素[5,9]t、[5,12]t、[8,3]t和[8,6]t的深度值可以为由这些像素表示的相应物理位置指示相对于(图5a和5b的)第一相机540的相应深度值。
在图6g的示例中,被分配到第一深度图682的一个或多个空像素[5,9]t、[5,12]t、[8,3]t和[8,6]t的相应深度值可以等于第二深度图692的对应深度值。例如,被分配到经更新的第一深度图686的空像素[5,9]t的深度值200cm等于被分配到第二深度图692的对应像素[2,3]t的对应深度值200cm。该示例可以反映其中(图5a和5b的)第一相机540的坐标系和第二相机550的坐标系共享对于什么构成z=0的共同定义的情况。例如,当第一相机540和第二相机550被附接到共同相机安装座(例如,图5b的530)使得两个相机540、550相对于它们的相应视场580、590中的物体共享共同的深度时,这种情况可能发生。
在另一示例中,用于一个或多个空像素的每个空像素的相应深度值可以与第二深度图692中的对应像素的深度值不同。如上所述,被分配到空像素的深度值z’可以更一般地基于变换函数
在实施例中,当第一深度图682具有比第二深度图692的分辨率更高的分辨率时,在步骤409中控制电路还可以对被分配到第一深度图682的空像素的深度值进行升采样。例如,图6g示出了其中第一深度图682具有12×15像素的分辨率以覆盖第一相机540的第一相机视场580并且第二深度图692具有4×5像素的分辨率以覆盖第二相机550的第二相机视场590的情况。假设第一相机视场580具有与第二相机视场590基本相同的大小,则图6g的示例中的第一深度图682具有比图6g的第二深度图692更高的分辨率。
在一些情形下,可以执行升采样以便用深度值来填充第一深度图682中的更多数量的空像素。例如,图6g描绘了其中尚未执行升采样的示例。在该示例中,第一深度图682中的四个空像素已经基于来自第二深度图692的对应深度值被更新(并因此被转换为经更新的像素)。然而,图6g示出了其中第一深度图682中的空像素总数大约高十倍,并且其中第一深度图682中的所有像素的总数(180个像素)大约高45倍。尽管将深度值分配到图6g的四个空像素增加了第一深度图中的深度信息的量,但是该增加相对于第一深度图682的总体大小可能是小的。因此,为了将第一深度图682中的深度信息的量增加更大的量,可以对被分配到图6g的空像素的深度值执行升采样。
在实施例中,控制电路111可以通过以下方式执行升采样:对于属于或曾属于步骤407的该一个或多个空像素的至少一个像素,识别第一深度图682中与该至少一个像素相邻(例如,紧邻)并且没有向它们分配用于其的深度值的相应的一组一个或多个相邻的空像素。在该示例中,该至少一个像素可以是在步骤407中识别的像素[8,3]t、[8,6]t、[5,9]t和[5,12]t中的任何一个。这些像素可以被称为初始空像素组。图6h描绘了其中像素[8,4]t和[9,4]t被确定为针对属于或曾属于初始空像素组中的一个的第一像素[8,3]t的相邻空像素的示例。第一像素[8,3]t可能已经用例如250cm的深度值更新(使得第一像素是曾属于初始空像素组的经更新的像素),或者可能尚未被更新(使得第一像素属于初始空像素组)。该图还描绘了属于或曾属于初始空像素组的第二像素[8,6]t、第三像素[5,9]t和第四像素[5,12]t的相邻空像素。如图6h中所描绘的,控制电路111可以通过还将该至少一个空像素(例如,第一像素[8,3]t)的深度值分配到相应一组一个或多个相邻空像素来执行升采样。该深度值可能已经被分配到至少一个空像素(例如,第一像素[8,3]t),或者将被分配到该至少一个空像素。更具体地,图6h描绘了已经被分配或将被分配到初始空像素组[8,3]t、[8,6]t、[5,9]t和[5,12]t的相应深度值(在该示例中分别为250cm、220cm、200cm和220cm)也被分配给相应相邻空像素组。在实施例中,可以针对属于或曾属于初始空像素组的每个像素执行上述升采样。
在实施例中,控制电路111可以将相应一组一个或多个相邻空像素识别为围绕该至少一个像素的像素区域中的所有空像素和/或仅空像素。在这样的实施例中,控制电路111可以被配置为基于第一深度图682的分辨率与第二深度图692的分辨率之间的比率来确定该区域的大小。例如,如果第一深度图682具有“g×h”像素的分辨率,并且第二深度图692具有“m×n”像素的分辨率,则该区域的大小可以等于或者以其他方式基于“q×r”像素,其中“q”是与比率“g/m”最接近的整数并且“r”是与比率“h/r”最接近的整数。作为示例,图6a至6h示出了具有12×15像素的分辨率的第一深度图682,以及具有4×5像素的分辨率的第二深度图692。在图6h中,围绕初始空像素之一的相邻像素的区域由实虚线包围。在该示例中,至少一个空像素可以是初始空像素[8,3]t、[8,6]t、[5,9]t和[5,12]t中的任何一个,并且定义什么被认为是相邻的空像素的区域的大小可以等于12/4×15/5像素(即,3×3像素)。换句话说,该示例中的控制电路111可以将以初始空像素组的第一像素为中心的3×3区域内的所有空像素确定为第一像素的相邻空像素。在一些情况下,不认为落在3×3区域之外的所有空像素与第一像素相邻。
在实施例中,相邻空像素的区域的大小可以大于或小于第一深度图的分辨率与第二深度图的分辨率之间的比率。例如,图6i描绘了其中区域的大小是5×5的示例。即,该示例中的控制电路111可以将属于或者曾属于初始空像素组的特定像素的相邻空像素识别为围绕该特定像素的5×5像素区域中的所有空像素(并且仅这些空像素)。
图6i进一步描绘了其中控制电路111可以认为一些空像素与初始空像素组中的多个像素相邻的示例。在一些情况下,多个像素可能已经被分配了深度值,并且因此可以被称为经更新的像素。图6i涉及具有被分配有第一深度值(例如,250cm)的第一经更新的像素[8,3]t和被分配有第二深度值(例如,220cm)的第二经更新的像素[8,6]t的情况。在该示例中控制电路111可以进一步通过识别与第一经更新的像素[8,3]t和第二经更新的像素[8,6]t相邻的一组一个或多个相邻空像素来更新第一深度图682。在该示例中,控制电路111可以认为围绕第一经更新的像素[8,3]t的第一5×5区域内或者围绕第二经更新的像素[8,6]t的第二5×5区域内的所有空像素是第一经更新的像素[8,3]t或第二经更新的像素[8,6]t的相邻空像素。基于该标准,可以认为一些空像素与第一经更新的像素[8,3]t相邻并且与第二经更新的像素[8,6]t相邻。在这样的示例中,在步骤409中控制电路111可以通过进一步将像素(例如,[7,5]t、[8,4]t、[8,5]t、[9,4]t和[9,5]t)识别为第一经更新的像素[8,3]t与第二经更新的像素[8,6]t二者的相邻空像素来执行升采样。在这种情形下,控制电路111可以向这些相邻空像素分配平均深度值(例如,235cm),该平均深度值是被分配到第一经更新的像素的第一深度值(例如,250cm)和被分配到第二经更新的像素的第二深度值(例如,220cm)的平均值。类似地,图6i的示例中的像素[6,7]t、[6,8]t、[6,7]t、[6,8]t可以被认为与第二经更新的像素[8,6]t和第三经更新的像素[5,9]t二者相邻,并且可以被分配210cm的平均深度值。图6i中的示例可以类似地应用于可以被认为与第三经更新的像素[5,9]t和第四经更新的像素[5,12]t二者相邻的像素[4,10]t、[5,10]t、[5,11]t、[6,10]t、[6,11]t、[7,10]t、[7,11]t。
在实施例中,控制电路111可以通过识别与第一经更新的像素相邻且不与一个或多个经更新的像素中的任何其他经更新的像素相邻的第一组相邻空像素以及将第一深度值分配到第一组相邻空像素来进一步更新第一深度图682。例如,图6i的示例中的控制电路111可以将像素[9,1]t识别为与第一经更新的像素[8,3]t相邻并且不与一个或多个经更新的像素中的任何其他经更新的像素相邻(不被认为与像素[8,6]t、[5,9]t、[5,12]t相邻),并且可以向该相邻空像素分配第一经更新的像素[8,3]t的深度值(例如,250cm)。虽然针对第一经更新的像素和第二经更新的像素执行关于图6i描述的上述步骤,但是更一般地,可以针对每个属于或曾属于初始空像素组的第一像素和第二像素执行这些步骤。
图7a-7c描绘了其中第一深度图782和第二深度图792具有相同分辨率的示例。在这种情况下,可以省略上述的升采样。在实施例中,控制电路111可以通过基于第二深度图792中的深度信息向第一深度图782的一个或多个空像素分配相应的深度值来更新第一深度图782。控制电路111可以以类似于上面关于例如步骤401-407描述的方式在第一深度图782中识别要更新的一个或多个空像素。例如,图7a和7b描绘了控制电路识别第一深度图782中的多个空像素(由虚线箭头识别),其中第一深度图中的空像素对应于第二深度图中的具有深度值d1到d10的相等数量的像素。如图7a和7b所示,由于两个深度图782、792从处于不同相应位置从而具有不同视场的两个相机生成,因此在第一深度图782的多个空像素与第二深度图792的对应像素之间可能存在偏移(也被称为平移)。换句话说,两个相机可以相对于彼此偏移,并且因此使得第一深度图782中的像素相对于第二深度图792中的对应像素偏移。
在实施例中,控制电路111还可以以类似于上面关于步骤409描述的方式将相应的深度值分配给第一深度图782中的空像素。例如,图7c示出了第一深度图782的空像素被分配相应的深度值d1’到d10’,深度值d1’到d10’基于第二深度图的深度值d1到d10。
在实施例中,第一深度图可以具有低于第二深度图的第二分辨率的第一分辨率,使得步骤407中的第一深度图的第三组像素中的每个像素对应于第二深度图的第二组像素中的多个像素。在这样的实施例中,控制电路111可以通过将要分配到步骤407的一个或多个空像素中的每个空像素的相应深度值确定为第二深度图的第二组像素中的对应像素的相应深度值的平均值或者确定为基于第二深度图的第二组像素中的对应像素的相应深度值的平均值,来执行第一深度图的更新(例如,在步骤409中)。
图8a是示出了具有8×10像素的分辨率的第一深度图882的示例图,并且图8b是示出了具有16×20像素的更高分辨率的第二深度图892的示例图。在图8a和8b所示的示例中,因为第二深度图892的分辨率高于第一深度图882的分辨率,所以可以执行降采样。因为第二深度图892中的多个像素可以对应于第一深度图882的同一像素,所以可能需要降采样。
例如,图8b描绘了第二深度图892,其中“x”表示具有深度值的像素。该图示出了图8b的第二深度图892中由虚线框表示的一组四个像素,其对应于图8a的第一深度图882中的单个像素。在一个示例中,图8b的虚线框中的四个像素可以具有例如[9,3]t、[9,4]t、[10,3]t、[10,4]t的坐标。当使用上面关于步骤405讨论的计算来确定第一深度图882中的对应像素的像素坐标[a,b]t时,该计算可以产生全部舍入为相同整数的值。例如,在坐标被舍入到最接近的整数之前,该计算可以产生例如[5.1,3.1]t、[5.1,3.2]t、[5.3,3.1]t和[5.3,3.2]t的像素坐标。当这些坐标被舍入时,它们可以全部舍入到第一深度图882的像素[5,3]t。因此,图8b的第二深度图892的虚线框中的四个像素可以全部对应于第一深度图882中的像素[5,3]t。如图8a和8b所示,在第一深度图882的空像素(例如,[5,3]t)和第二深度图892的对应像素([9,3]t、[9,4]t、[10,3]t、[10,4]t)之间可能存在偏移(也被称为平移),这是因为两个深度图882、892是从位于不同相应位置并且因此具有不同视场的两个相机生成的。
在实施例中,可以通过向第一深度图882的空像素分配与该空像素对应的第二深度图892的多个像素的相应深度值的平均值来执行降采样。例如,图8a描绘了其中第一深度图882中的空像素[5,3]t被分配第二深度图892的对应像素的相应深度值(例如,250cm、250cm、240cm、240cm)的平均值的示例。
在实施例中,降采样可以涉及向第一深度图882的空像素分配基于与该空像素对应的第二深度图892的多个像素的相应深度值的平均值。例如,控制电路111可以被配置为基于与空像素对应的第二深度图892的多个像素的相应深度值来确定多个中间深度值。确定中间深度值(例如,z’)可以基于第二深度图892的对应像素的相应深度值(例如,z),并且基于描述第一相机(例如,图5a/5b的540)和第二相机(例如,图5a/5b的550)之间的关系的变换函数,基于以下关系,其在上面关于步骤409和步骤405进行了描述:
在涉及图8b的第二深度图892的像素[9,3]t、[9,4]t、[10,3]t、[10,4]t的上述示例中,控制电路111可以基于上述关系确定四个相应中间深度值。在该实施例中,控制电路111可以向第一深度图882的空像素[5,3]t分配这四个中间深度值的平均。
在实施例中,以上示例可以涉及第二深度图892的仅非空像素。更具体地,降采样可以涉及向第一深度图882的空像素分配基于对应于该空像素的第二深度图892的非空像素的相应深度值的平均值。例如,如果第二深度图892中的像素[9,3]t是空像素,则第一深度图882中的空像素[5,3]t将对应于第二深度图892中的以下非空像素:[9,4]t、[10,3]t、[10,4]t。该示例将涉及基于第二深度图892的三个对应非空像素([9,4]t、[10,3]t、[10,4]t)的深度值来确定三个相应中间深度值,并向空像素[5,3]t分配这三个中间深度值的平均值。
在实施例中,控制电路111可以被配置为执行反向投影以确定物理位置的3d坐标,其中该3d坐标可以被包括在点云中。在实施例中,可以针对至少一个像素或者针对属于或曾属于图4的步骤407的一个或多个像素中的每个像素执行反向投影。在实施例中,控制电路111可以通过以下方式来执行反向投影:确定属于或曾属于该一个或多个空像素的像素的相应中心位置,以及将投影到该像素的中心位置上的3d坐标确定为由像素表示的物理位置的相应坐标,其中该3d坐标的分量等于被分配到或将被分配到像素的深度值。在一些情况下,控制电路111可以被配置为生成包括或以其他方式基于相应3d坐标的点云。在一些实施方案中,可以通过将3d坐标分配为深度图的像素的值或一组值使得深度图还充当点云或点云的一部分并且该3d坐标是点云的一部分,从而基于相应的3d坐标生成点云。
在一些情况下,可以针对第二深度图(例如,图6b的692)的像素表示可能不一定投影到第一深度图(例如,图6a的682)的对应像素的中心位置的物理位置的情况来执行反向投影。像素的中心位置可以指代对应于像素的图像传感器(例如,143)上的区域的中心位置(图像传感器也可以被称为相机传感器)。例如,图9a描绘了感测第一深度图的信息的第一图像传感器(例如,图1c的相机传感器143)上的六个区域,以及感测第二深度图的信息的第二图像传感器(例如,图1d的相机传感器153)上的六个区域。每个区域可以是由例如形成图像传感器的传感器阵列(例如,光电探测器阵列)的相应传感器占据的区域。如图9a中所描绘的,用于图像传感器920的区域921可以对应于第二深度图的像素[uv]t(图像传感器920可以是相机传感器153的实施例)。如上面关于步骤405所讨论的,像素[uv]t可以表示在第二相机(例如,图1的150)或第二深度图的坐标系中具有[xyz]t的坐标,并且在第一相机(例如,图1中的140)或第一深度图的坐标系中具有[x’y’z’]t的坐标的物理位置933。如上面关于图4的步骤405所讨论的,坐标[x’y’z’]t可以投影到第一深度图的像素[ab]t。更具体地,坐标[x’y’z’]t可以投影到图像传感器910上的区域911内的位置913(图像传感器910可以是相机传感器143的实施例)。区域911可以对应于第一深度图的像素[ab]t。在实施例中,像素[ab]t可以被分配深度值z’,如上面关于步骤409所讨论的。
在上述实施例中,尽管坐标[x’y’z’]t可以被包括在表示物体(例如,图2的物体260)的点云中,但是这样做可能不是最佳的,因为[x’y’z’]t投影到的位置913可能不是区域911的中心位置。更具体地说,在点云中包括[x’y’z’]t可能会产生问题,因为使用点云的某些过程可能依赖于点云中的3d坐标投影到对应像素的相应中心位置的假设。因此,点云可能需要替代地包括确实投影到区域911的中心位置的物理位置的3d坐标。在实施例中,可以通过使用反向投影操作来确定这样的3d坐标。
例如,图9b描绘了针对物理位置934识别3d坐标[x”y”z”]t的场景,该位置934投影到对应于像素[ab]t的区域911的中心位置915(其可以被称为像素的中心位置)。更具体地,物理位置934及其3d坐标[x”y”z”]t可以被识别为3d坐标:该3d坐标落在连接像素[ab]t的中心位置915和和第一相机(例如,图1a的140)的焦点919的假想线917上。假想线917在图9b和9c中示出,而焦点919在图9c中示出。此外,z分量(即,“z”)或描述深度信息的任何其他分量可能必须等于被分配到像素[ab]t的深度值。换句话说,z”的值等于z’的值。在实施例中,一旦确定了物理位置934的3d坐标[x”y”z”]t,该坐标就可以被包括在点云中以代替物理位置933的3d坐标[x’y’z’]t。在某些情况下,像素[ab]t不仅可以被分配值z”(等于z’),还可以被分配值x”和y”,使得像素[ab]t被分配3d坐标[x’y’z’]t。将3d坐标分配到像素可以是基于3d坐标生成点云的一种方式,其中包括像素[ab]t的第一深度图是点云或点云的一部分,其中该点云包括物体或结构表面上的物理位置的3d坐标。
各种实施例的附加讨论
本公开的实施例1涉及一种相机图像处理系统,包括通信接口和控制电路。通信接口被配置为与以下各项通信:(i)第一相机,其是第一类型的深度感测相机并且具有第一相机视场,以及(ii)第二相机,其是与第一类型的深度感测相机不同的第二类型的深度感测相机,并且具有与第一相机视场重叠的第二相机视场。当通信接口与第一相机和第二相机通信时,控制电路被配置为接收基于由第一相机感测的信息生成的第一深度图,其中第一深度图包括第一组像素,该第一组像素表示第一相机视场中的第一组相应物理位置并且指示用于第一组相应物理位置的第一组相应深度值,其中第一组相应深度值是相对于第一相机的。控制电路还被配置为接收基于由第二相机感测的信息生成的第二深度图,其中第二深度图包括表示第二组像素,该第二组像素表示第二相机视场中的第二组相应物理位置并且指示用于第二组相应物理位置的第二组相应深度值,其中第二组相应深度值是相对于第二相机的。控制电路还被配置为识别第一深度图的也表示第二组相应物理位置的第三组像素,使得第三组像素对应于第二深度图的第二组像素。控制电路还被配置为从第三组像素中识别一个或多个空像素,其中该一个或多个空像素中的每个空像素是第一深度图的不具有分配到该像素的深度值的像素。控制电路还被配置为通过向该一个或多个空像素中的每个空像素分配基于第二深度图的第二组像素中的对应像素的深度值的相应深度值来更新第一深度图,其中用于空像素的对应像素是第二深度图的第二组像素中的与该空像素表示相同的物理位置的像素。
实施例2包括实施例1的相机图像处理系统。在实施例2中,控制电路被配置为基于第二深度图的对应像素的深度值并且基于定义第一相机和第二相机之间的空间关系的变换函数来确定要分配到该一组一个或多个空像素中的每个空像素的相应深度值。
实施例3包括实施例2的相机图像处理系统。在实施例3中,第二深度图的第二组像素具有一组相应像素坐标,并且控制电路被配置为通过基于该组相应像素坐标并基于定义第一相机和第二相机之间的空间关系的变换函数来确定附加的一组相应像素坐标,来识别第一深度图的第三组像素,其中附加的一组相应像素坐标识别第三组像素。
实施例4包括实施例1-3中任一个的相机图像处理系统。在实施例4中,控制电路被配置为经由通信接口从第一相机接收第一深度图,并且经由通信接口从第二相机接收第二深度图。
实施例5包括实施例1-4中任一个的相机图像处理系统。在实施例5中,控制电路被配置为,当第一深度图具有高于第二深度图的第二分辨率的第一分辨率时,进一步通过以下方式更新第一深度图:对于属于或曾属于一个或多个空像素的至少一个像素,识别第一深度图的与该至少一个像素相邻并且没有分配的深度值的相应一组一个或多个相邻空像素;并且向该相应一组一个或多个相邻空像素分配被分配到或将被分配到该至少一个像素的深度值。
实施例6包括实施例5的相机图像处理系统。在实施例6中,控制电路被配置为将该相应一组一个或多个相邻空像素识别为围绕该至少一个像素的像素的区域中的所有空像素,其中控制电路被配置为基于第一深度图的分辨率与第二深度图的分辨率之间的比率来确定该区域的大小。
实施例7包括实施例1-6中任一个的相机图像处理系统。在实施例7中,控制电路被配置为进一步通过以下方式更新第一深度图:识别与属于或曾属于一个或多个空像素的第一像素相邻并且与属于或曾属于一个或多个空像素的第二像素相邻的一组一个或多个相邻空像素;并且向该组一个或多个相邻空像素分配平均深度值,该平均深度值是被分配或将被分配到第一像素的第一深度值与被分配或将被分配到第二像素的第二深度值的平均。
实施例8包括实施例7的相机图像处理系统。在实施例8中,控制电路被配置为进一步通过以下方式更新第一深度图:识别与第一像素相邻并且不与该一个或多个空像素中的任何其他像素相邻的附加的一组相邻空像素;并将第一深度值分配到该附加的一组相邻空像素。
实施例9包括实施例1-8中任一个的相机图像处理系统。在实施例9中,控制电路被配置为对于属于或曾属于该一个或多个空像素的每个像素:确定像素的相应中心位置;将3d坐标确定为由像素表示的物理位置的相应坐标,该3d坐标投影到像素的中心位置上并且3d坐标的分量等于被分配或将被分配到像素的深度值;并基于相应的3d坐标生成点云。
实施例10包括实施例9的相机图像处理系统。在实施例10中,控制电路被配置为对于属于或曾属于该一个或多个空像素的每个像素,将相应3d坐标确定为落在假想线上的坐标,该假想线穿过:(i)像素的相应中心位置和(ii)第一相机的焦点。
实施例11包括实施例1-4或7-10中任一个的相机图像处理系统。在实施例11中,控制电路被配置为,当第一深度图具有低于第二深度图的第二分辨率的第一分辨率使得第一深度图的一个或多个像素的每个像素对应于第二组像素中的多个像素时,:基于第二深度图的第二组像素中的对应像素的相应深度值的平均值,确定要分配到一个或多个空像素中的每个空像素的相应深度值。
实施例12包括实施例1-11中任一个的相机图像处理系统。在实施例11中,相机图像处理系统是机器人控制系统的一部分,并且其中当通信接口与第一相机、第二相机和机器人通信时,控制电路被配置为:在已经基于第二深度图的深度值更新了第一深度图以后,基于该第一深度图生成机器人移动命令;并经由通信接口将机器人移动命令传送给机器人。
实施例13包括实施例12的相机图像处理系统。在实施例13中,在已经基于第二深度图的深度值更新了第一深度图之后,控制电路被配置为:基于第一深度图生成机器人移动命令。
本公开的实施例14涉及具有指令的非暂时性计算机可读介质,该指令在由相机图像处理系统的控制电路执行时使得控制电路:接收第一深度图,其中从相机图像处理系统的非暂时性计算机可读介质或者经由相机图像处理系统的通信接口接收第一深度图,其中通信接口被配置为与第一相机通信,该第一相机是第一类型的深度感测相机并且具有第一相机视场,并且其中基于由通信接口被配置为与之通信的第一相机感测的信息来生成第一深度图,并且其中第一深度图包括第一组像素,该第一组像素表示第一相机视场中的第一组相应物理位置并且指示用于第一组相应物理位置的第一组相应深度值,其中第一组相应深度值是相对于通信接口被配置为与之通信的第一相机的。该指令还使控制电路接收第二深度图,其中从相机图像处理系统的非暂时性计算机可读介质或者经由相机图像处理系统的通信接口接收第二深度图,其中通信接口被配置为与第二相机通信,第二相机是与第一类型的深度感测相机不同的第二类型的深度感测相机并且具有与第一相机视场重叠的第二相机视场,并且其中基于由通信接口被配置为与之通信的第二相机感测的信息来生成第二深度图,其中第二深度图包括第二组像素,该第二组像素表示第二相机视场中的第二组相应物理位置并且指示用于第二组相应物理位置的第二组相应深度值,其中第二组相应深度值是相对于通信接口被配置为与之通信的第二相机的。该指令还使控制电路识别第一深度图的也表示第二组相应物理位置的第三组像素,使得第三组像素对应于第二深度图的第二组像素。指令还使控制电路从第三组像素中识别一个或多个空像素,其中该一个或多个空像素中的每个空像素是第一深度图的没有分配到该像素的深度值的像素。该指令还使控制电路通过向一个或多个空像素中的每个空像素分配基于第二深度图的第二组像素中的对应像素的深度值的相应深度值来更新第一深度图,其中用于空像素的对应像素是第二深度图的第二组像素中的与该空像素表示相同的物理位置的像素。
实施例15包括实施例14的非暂时性计算机可读介质。在实施例15中,当第一深度图具有高于第二深度图的第二分辨率的第一分辨率时,指令还使控制电路:对于属于或曾属于该一个或多个空像素的至少一个像素,识别第一深度图的与该至少一个像素相邻并且没有分配的深度值的相应一组一个或多个相邻空像素;并且向该相应一组一个或多个相邻的空像素分配被分配到或将被分配到该至少一个像素的深度值。
实施例16包括实施例15的非暂时性计算机可读介质。在实施例16中,指令使控制电路将该相应一组一个或多个相邻空像素识别为围绕该至少一个像素的像素的区域中的所有空像素,其中控制电路被配置为基于第一深度图的分辨率与第二深度图的分辨率之间的比率来确定该区域的大小。
实施例17包括实施例14-16中任一个的非暂时性计算机可读介质。在实施例17中,指令还使控制电路对于属于或曾属于该一个或多个空像素的每个像素执行以下操作:确定像素的相应中心位置;将3d坐标确定为由像素表示的物理位置的相应坐标,该3d坐标投影到像素的中心位置上并且该3d坐标的分量等于被分配或将被分配到像素的深度值;以及基于相应的3d坐标生成点云。
本公开的实施例18涉及更新一个或多个深度图的方法。在实施例18中,该方法包括通过相机图像处理系统的控制电路接收第一深度图,其中从相机图像处理系统的非暂时性计算机可读介质或者经由相机图像处理系统的通信接口接收第一深度图,其中通信接口被配置为与第一相机通信,该第一相机是第一类型的深度感测相机并且具有第一相机视场,并且其中基于由通信接口被配置为与之通信的第一相机感测的信息来生成第一深度图,其中第一深度图包括第一组像素,该第一组像素表示第一相机视场中的第一组相应物理位置并且指示用于第一组相应物理位置的第一组相应深度值,其中第一组相应深度值是相对于通信接口被配置为与之通信的第一相机的。该方法还包括接收第二深度图,其中从相机图像处理系统的非暂时性计算机可读介质或者经由相机图像处理系统的通信接口接收第二深度图,其中通信接口被配置为与第二相机通信,第二相机是与第一类型的深度感测相机不同的第二类型的深度感测相机并且具有与第一相机视场重叠的第二相机视场,其中基于由通信接口被配置为与之通信的第二相机感测的信息来生成第二深度图,其中第二深度图包括第二组像素,该第二组像素表示第二相机视场中的第二组相应物理位置并且指示用于第二组相应物理位置的第二组相应深度值,其中第二组相应深度值是相对于通信接口被配置为与之通信的第二相机的。该方法还包括识别第一深度图的也表示第二组相应物理位置的第三组像素,使得第三组像素对应于第二深度图的第二组像素。方法还包括从第三组像素中识别一个或多个空像素,其中该一个或多个空像素中的每个空像素是第一深度图的没有分配到该像素的深度值的像素。方法还包括通过向该一个或多个空像素中的每个空像素分配基于第二深度图的第二组像素中的对应像素的深度值的相应深度值来更新第一深度图,其中用于空像素的对应像素是第二深度图的第二组像素中的与该空像素表示相同的物理位置的像素。
实施例19包括实施例18的方法。在实施例19中,该方法的第一深度图具有高于第二深度图的第二分辨率的第一分辨率,并且该方法还包括:对于属于或曾属于该一个或多个空像素的至少一个像素,识别第一深度图的与该至少一个像素相邻并且没有分配的深度值的相应一组一个或多个相邻空像素;并且向该相应一组一个或多个相邻空像素分配被分配或将被分配到该至少一个像素的深度值。
实施例20包括实施例19的方法。在实施例20中,该方法还包括:将相应一组一个或多个相邻空像素识别为围绕该至少一个像素的像素的区域中的所有空像素,其中控制电路被配置为基于第一深度图的分辨率与第二深度图的分辨率之间的比率来确定该区域的大小。
虽然上面已经描述了各种实施例,但是应该理解,它们仅作为本发明的说明和示例而给出,而不是作为限制。对于相关领域的技术人员清楚的是,在不脱离本发明的精神和范围的情况下,可以在其中进行形式和细节中的各种改变。因此,本发明的广度和范围不应受任何上述示例性实施例的限制,而应仅根据所附权利要求及其等同物来定义。还应理解,本文所讨论的每个实施例的每个特征以及本文引用的每个参考文献的每个特征可以与任何其他是合理的特征组合使用。本文讨论的所有专利和公开均通过引用整体并入本文。
1.一种相机图像处理系统,包括:
通信接口,被配置为与以下各项通信:(i)第一相机,所述第一相机是第一类型的深度感测相机并且具有第一相机视场,以及(ii)第二相机,所述第二相机是与所述第一类型的深度感测相机不同的第二类型的深度感测相机并且具有与所述第一相机视场重叠的第二相机视场;以及
控制电路,所述控制电路被配置为:当所述通信接口与所述第一相机和所述第二相机通信时,
接收基于由所述第一相机感测的信息生成的第一深度图,其中所述第一深度图包括第一组像素,所述第一组像素表示所述第一相机视场中的第一组相应物理位置并且指示用于所述第一组相应物理位置的第一组相应深度值,其中所述第一组相应深度值是相对于所述第一相机的;
接收基于由所述第二相机感测的信息生成的第二深度图,其中所述第二深度图包括第二组像素,所述第二组像素表示所述第二相机视场中的第二组相应物理位置并且指示用于所述第二组相应物理位置的第二组相应深度值,其中所述第二组相应深度值是相对于所述第二相机的;
识别所述第一深度图的也表示所述第二组相应物理位置的第三组像素,使得所述第三组像素对应于所述第二深度图的所述第二组像素;
从所述第三组像素中识别一个或多个空像素,其中所述一个或多个空像素中的每个空像素是所述第一深度图的没有分配到该像素的深度值的像素;
通过向所述一个或多个空像素中的每个空像素分配基于所述第二深度图的所述第二组像素中的对应像素的深度值的相应深度值来更新所述第一深度图,其中用于所述空像素的所述对应像素是所述第二深度图的所述第二组像素中的与所述空像素表示相同的物理位置的像素。
2.如权利要求1所述的相机图像处理系统,其中,所述控制电路被配置为基于所述第二深度图的所述对应像素的所述深度值并且基于定义所述第一相机和所述第二相机之间的所述空间关系的变换函数来确定要分配到所述一组一个或多个空像素中的每个空像素的所述相应深度值。
3.如权利要求2所述的相机图像处理系统,其中,所述第二深度图的所述第二组像素具有一组相应像素坐标,并且其中,所述控制电路被配置为通过基于所述一组相应像素坐标并且基于定义所述第一相机与所述第二相机之间的所述空间关系的所述变换函数来确定附加一组相应像素坐标,从而识别所述第一深度图的所述第三组像素,其中所述附加一组相应像素坐标组识别所述第三组像素。
4.如权利要求1所述的相机图像处理系统,其中,所述控制电路被配置为经由所述通信接口从所述第一相机接收所述第一深度图,并且经由所述通信接口从所述第二相机接收所述第二深度图。
5.如权利要求1所述的相机图像处理系统,其中,所述控制电路被配置为当所述第一深度图具有高于所述第二深度图的第二分辨率的第一分辨率时进一步通过以下方式来更新所述第一深度图:
对于属于或曾属于所述一个或多个空像素的至少一个像素,识别所述第一深度图的与所述至少一个像素相邻并且没有分配的深度值的相应一组一个或多个相邻空像素;以及
向所述相应一组一个或多个相邻空像素分配被分配到或将被分配到所述至少一个像素的深度值。
6.如权利要求5所述的相机图像处理系统,其中,所述控制电路被配置为将所述相应一组一个或多个相邻空像素识别为围绕所述至少一个像素的像素的区域中的所有空像素,其中所述控制电路被配置为基于所述第一深度图的分辨率与所述第二深度图的分辨率之间的比率来确定所述区域的大小。
7.如权利要求1所述的相机图像处理系统,其中,所述控制电路被配置为进一步通过以下方式来更新所述第一深度图:
识别与属于或曾属于所述一个或多个空像素的第一像素相邻并且与属于或曾属于所述一个或多个空像素的第二像素相邻的一组一个或多个相邻空像素;以及
向所述一组一个或多个相邻空像素分配平均深度值,所述平均深度值是被分配或将被分配到所述第一像素的第一深度值与被分配或将被分配到所述第二像素的第二深度值的平均。
8.如权利要求7所述的相机图像处理系统,其中,所述控制电路被配置为进一步通过以下方式来更新所述第一深度图:
识别与所述第一像素相邻且不与所述一个或多个空像素中的任何其他像素相邻的附加一组相邻空像素;以及
将所述第一深度值分配到所述附加一组相邻空像素。
9.如权利要求1所述的相机图像处理系统,其中,对于属于或曾属于所述一个或多个空像素的每个像素,所述控制电路被配置为:
确定所述像素的相应中心位置;
将3d坐标确定为由所述像素表示的物理位置的相应坐标,所述3d坐标投影到所述像素的所述中心位置上并且所述3d坐标的分量等于被分配或将被分配到所述像素的深度值;以及
基于相应的3d坐标生成点云。
10.如权利要求9所述的相机图像处理系统,其中,对于属于或曾属于所述一个或多个空像素的每个像素,所述控制电路被配置为将所述相应的3d坐标确定为落在假想线上的坐标,所述假想线穿过:(i)所述像素的所述相应中心位置以及(ii)所述第一相机的焦点。
11.如权利要求1所述的相机图像处理系统,其中,当所述第一深度图具有低于所述第二深度图的第二分辨率的第一分辨率使得所述第一深度图的所述一个或多个像素中的每个像素对应于所述第二组像素中的多个像素时,所述控制电路被配置为:
基于所述第二深度图的所述第二组像素中的对应像素的相应深度值的平均,确定要分配到所述一个或多个空像素中的每个空像素的所述相应深度值。
12.如权利要求1所述的相机图像处理系统,其中所述相机图像处理系统是机器人控制系统的一部分,并且其中当所述通信接口与所述第一相机、所述第二相机和机器人通信时,所述控制电路被配置为:
在基于所述第二深度图的深度值更新所述第一深度图之后,基于所述第一深度图生成机器人移动命令;以及
经由所述通信接口将所述机器人移动命令传送给所述机器人。
13.如权利要求12所述的相机图像处理系统,其中,在基于所述第二深度图的深度值更新所述第一深度图之后,所述控制电路被配置为:基于所述第一深度图生成所述机器人移动命令。
14.一种具有指令的非暂时性计算机可读介质,所述指令当由相机图像处理系统的控制电路执行时,使所述控制电路执行以下操作:
接收第一深度图,其中所述第一深度图是从所述相机图像处理系统的所述非暂时性计算机可读介质或者经由所述相机图像处理系统的通信接口接收的,其中所述通信接口被配置为与第一相机通信,所述第一相机是第一类型的深度感测相机并且具有第一相机视场,并且其中所述第一深度图是基于由所述通信接口被配置为与之通信的所述第一相机感测的信息生成的,并且其中所述第一深度图包括第一组像素,所述第一组像素表示所述第一相机视场中的第一组相应物理位置并且指示用于所述第一组相应物理位置的第一组相应深度值,其中所述第一组相应深度值是相对于所述通信接口被配置为与之通信的所述第一相机的;
接收第二深度图,其中所述第二深度图是从所述相机图像处理系统的所述非暂时性计算机可读介质或者经由所述相机图像处理系统的通信接口接收的,其中所述通信接口被配置为与第二相机通信,所述第二相机是与第一类型的深度感测相机不同的第二类型的深度感测相机并且具有与所述第一相机视场重叠的第二相机视场,并且其中所述第二深度图是基于由所述通信接口被配置为与之通信的所述第二相机感测的信息生成的,其中所述第二深度图包括第二组像素,所述第二组像素表示所述第二相机视场中的第二组相应物理位置并且指示用于所述第二组相应物理位置的第二组相应深度值,其中所述第二组相应深度值是相对于所述通信接口被配置为与之通信的所述第二相机的;
识别所述第一深度图的也表示所述第二组相应物理位置的第三组像素,使得所述第三组像素对应于所述第二深度图的所述第二组像素;
从所述第三组像素中识别一个或多个空像素,其中所述一个或多个空像素中的每个空像素是所述第一深度图的没有分配到该像素的深度值的像素;
通过向所述一个或多个空像素中的每个空像素分配基于所述第二深度图的所述第二组像素中的对应像素的深度值的相应深度值来更新所述第一深度图,其中用于所述空像素的所述对应像素是所述第二深度图的所述第二组像素中的与所述空像素表示相同的物理位置的像素。
15.如权利要求14所述的非暂时性计算机可读介质,其中,当所述第一深度图具有高于所述第二深度图的第二分辨率的第一分辨率时,所述指令还使所述控制电路执行以下操作:
对于属于或曾属于所述一个或多个空像素的至少一个像素,识别所述第一深度图的与所述至少一个像素相邻并且没有分配的深度值的相应一组一个或多个相邻空像素;以及
向所述相应一组一个或多个相邻空像素分配被分配或将被分配到所述至少一个像素的深度值。
16.如利要求15所述的非暂时性计算机可读介质,其中,所述指令使所述控制电路将所述相应一组一个或多个相邻空像素识别为围绕所述至少一个像素的像素的区域中的所有空像素,其中所述控制电路被配置为基于所述第一深度图的分辨率与所述第二深度图的分辨率之间的比率来确定所述区域的大小。
17.如权利要求14所述的非暂时性计算机可读介质,其中,所述指令还使所述控制电路对于属于或曾属于所述一个或多个空像素的每个像素执行以下操作:
确定所述像素的相应中心位置;
将3d坐标确定为由所述像素表示的物理位置的相应坐标,所述3d坐标投影到所述像素的所述中心位置上并且所述3d坐标的分量等于被分配或将被分配到所述像素的深度值;以及
基于相应3d坐标生成点云。
18.一种更新一个或多个深度图的方法,包括:
通过相机图像处理系统的控制电路接收第一深度图,其中所述第一深度图是从所述相机图像处理系统的非暂时性计算机可读介质或者经由所述相机图像处理系统的通信接口接收的,其中所述通信接口被配置为与第一相机通信,所述第一相机是第一类型的深度感测相机并且具有第一相机视场,并且其中所述第一深度图是基于由所述通信接口被配置为与之通信的所述第一相机感测的信息生成的,其中所述第一深度图包括第一组像素,所述第一组像素表示所述第一相机视场中的第一组相应物理位置并且指示用于所述第一组相应物理位置的第一组相应深度值,其中所述第一组相应深度值是相对于所述通信接口被配置为与之通信的所述第一相机的。
接收第二深度图,其中所述第二深度图是从所述相机图像处理系统的所述非暂时性计算机可读介质或者经由所述相机图像处理系统的所述通信接口接收的,其中所述通信接口被配置为与第二相机通信,所述第二相机是与所述第一类型的深度感测相机不同的第二类型的深度感测相机并且具有与所述第一相机视场重叠的第二相机视场,其中所述第二深度图是基于由所述通信接口被配置为与之通信的第二相机感测的信息生成的,其中所述第二深度图包括第二组像素,所述第二组像素表示所述第二相机视场中的第二组相应物理位置并且指示用于所述第二组相应物理位置的第二组相应深度值,其中所述第二组相应深度值是相对于所述通信接口被配置为与之通信的所述第二相机的;
识别所述第一深度图的也表示所述第二组相应物理位置的第三组像素,使得所述第三组像素对应于所述第二深度图的所述第二组像素;
从所述第三组像素中识别一个或多个空像素,其中所述一个或多个空像素中的每个空像素是所述第一深度图的没有分配到该像素的深度值的像素;以及
通过向所述一个或多个空像素中的每个空像素分配基于所述第二深度图的所述第二组像素中的对应像素的深度值的相应深度值来更新所述第一深度图,其中用于所述空像素的所述对应像素是所述第二深度图的所述第二组像素中的与所述空像素表示相同的物理位置的像素。
19.如权利要求18所述的方法,还包括,当所述第一深度图具有高于所述第二深度图的第二分辨率的第一分辨率时:
对于属于或曾属于所述一个或多个空像素的至少一个像素,识别所述第一深度图的与所述至少一个像素相邻并且没有分配的深度值的相应一组一个或多个相邻空像素;以及
向所述相应一组一个或多个相邻空像素分配被分配或将被分配到所述至少一个像素的深度值。
20.如权利要求19所述的方法,还包括:
将所述相应一组一个或多个相邻空像素识别为围绕所述至少一个像素的像素的区域中的所有空像素,其中所述控制电路被配置为基于所述第一深度图的分辨率与所述第二深度图的分辨率之间的比率来确定所述区域的大小。
技术总结