根据单个图像估计深度的制作方法

文档序号:16682524发布日期:2019-01-19 00:39阅读:182来源:国知局
根据单个图像估计深度的制作方法

相关申请

本国际申请要求2014年5月27日提交的美国专利申请no.14/288,233(代理人案卷号no.2043.e73us1)以及2013年9月5日提交的美国临时专利申请no.61/874,096(代理人案卷号no.2043.e73prv)的优先权,这些申请的全部以引用的方式并入本文。

本文中公开的主题大体上涉及图像的处理。具体地,本公开涉及用于促进图像处理和根据图像处理获得的图像数据的使用的系统和方法。



背景技术:

特别是从用户观察图像或促进电子商务(“e-commerce”)的角度来看,可以使用图像来以更高效地或者以文本不能实现的方式来传递信息。然而,为了基于图像中包含的大量信息来使用图像,执行图像处理以提取、鉴别或以其他方式识别图像的属性。一旦提取出了图像数据,图像数据就可以在各种应用中使用。取决于具体应用,可以优先于其他图像来实现某些类型的图像的处理。

附图说明

在附图的图中以示例的方式而非限制的方式示出了一些实施例。

图1是示出了根据一些示例实施例的适合于根据单个图像来估计深度的网络环境的网络图。

图2是示出了根据一些示例实施例的适合于根据单个图像来估计深度的图像处理机的组件的框图。

图3是示出了根据一些示例实施例的使用图像处理机来根据单个图像估计深度的工作流的框图。

图4-6是示出了根据一些示例实施例的图像处理机在执行根据单个图像估计深度的方法时的操作的流程图。

图7是示出了根据一些示例实施例的、能够从机器可读介质中读取指令并执行本文中讨论的方法中的任意一个或多个方法的机器的组件的框图。

具体实施方式

实例方法和系统涉及根据单个图像估计深度。示例仅仅作为可能的变化的典型例子。除非另行明确声明,否则组件和功能是可选的并可以组合或细分,并且操作可以在次序上变化或者可以组合或者细分。在以下描述中,出于解释的目的,对多个具体细节进行阐述,以提供对示例实施例的透彻理解。然而对于本领域技术人员将显而易见的是:本主题可以在没有这些具体细节的情况下实施。

机器可以(例如通过硬件、软件或二者)被配置为执行包括根据单个图像来估计深度信息的图像处理任务。这样的机器可以形成用于执行这样的图像处理任务的系统的全部或一部分。

在训练阶段期间,机器访问存储了具有对应深度信息的图像的参考集的参考数据库(例如训练数据库)。基于该访问到的信息,机器计算在图像中(例如根据彩色像素数据来计算)和在深度信息中表现的特征的描述符。这些描述符可以被看做是包含这些特征的图像部分或深度图部分的高度压缩的版本。具体地,机器计算视觉描述符(例如根据参考图像中的彩色像素来计算)并且计算它们的对应的深度描述符(例如根据对应的深度信息来计算)。然后,机器生成将这些视觉描述符与它们对应的深度描述符进行相关的数据结构(例如存储在存储器或其它机器可读介质中的矩阵)。这些数据的生成可以被称作构建跨域图,该跨域图用于将视觉描述符的词典翻译成对应的深度描述符的词典,或反之。

在训练阶段之后,机器可以在后训练阶段(例如使用阶段或运行时间阶段)中操作,在该阶段中,机器被配置为基于缺少深度信息的单个图像(例如查询图像)来执行深度估计。具体地,机器可以分析(例如在针对深度信息的查询中提交的或在估计深度信息的请求中提交的)单个图像,并且计算一个或多个视觉描述符(例如根据提交的单个图像中的彩色像素来计算)。然后,机器可以通过访问之前生成的数据结构(例如矩阵)来获取针对每个视觉描述符的对应深度描述符。基于从数据结构中获取的一个或多个深度描述符,机器可以创建与提交的单个图像相对应的深度信息。

机器可以响应于查询或请求来提供该深度信息(例如作为深度图或深度图像)。此后,机器可以向任何机器或软件应用(例如运输应用、视觉化应用、或者它们的任何合适的组合)提供该深度信息。

在训练阶段期间,参考数据库可以存储彩色图像(例如三色图像),该彩色图像是包含像素的二维图像,并且这些像素可通过每个像素三个颜色值来在色彩空间中定义(例如三个三色值,例如红绿蓝(rgb)图像中的红色值、绿色值和蓝色值)。在一些示例实施例中,彩色图像中的一个或多个具有通过每个像素四个颜色值来定义的像素(例如青-洋红-黄-黑(cmyk)图像中的青色值、洋红色值、黄色值以及黑色值)。在其它示例实施例中,针对每个像素的第四颜色值是透明度值(例如红绿蓝alpha(rgba)图像中的alpha值)。在任意事件中,彩色图像可以与对应的深度图(例如深度图像)一起存储在参考数据库中,该深度图是二维图像或其它数组。这些深度图中的每一个可以包含针对对应彩色图像中的像素的深度(d)值。根据各种示例实施例,图像信息包括亮度信息(例如亮度(luma)(y)值),亮度信息可以由多个颜色值(例如红绿蓝(rgb)像素中的红色值、绿色值、以及蓝色值)共同定义,并且不需要由单个颜色值(例如yuv像素中的亮度值)来定义。

备选地,由于深度值可以被当做深度像素,参考数据库可以存储将颜色和深度信息二者相结合的参考图像。例如,参考数据库可以存储红-绿-蓝-深度(rgb-d)图像,其中每个rgb-d图像包括针对红、绿、蓝和深度值的通道(例如分别的数组)。为清楚起见,下文的讨论主要集中于rgb色彩空间(例如rgb图像)中的彩色图像。然而,本文中讨论的系统和方法适于其它色彩空间中的彩色图像。

作为说明性的示例,假设在训练阶段使用rgb-d图像的数据库,其中每个图像包括红绿蓝(rgb)和深度(d)通道二者,机器学习从rgb描述符的词典向深度描述符的词典的转换。每个词典可以是整个描述符数据库,或者可以通过将描述符聚类(cluster)来进行二次采样。每个训练图像可以被表示为rgb空间和深度空间中基本元素的稀疏线性组合,其可以分别被称为rgb投影和深度投影。然后,可以估计训练数据库中的所有图像的rgb投影与深度投影之间的转换。

说明性的示例继续进行,假设使用测试时的查询图像,只有该图像的rgb信息可以是可用的。估计查询图像的rgb投影,接下来是应用转换,该转换估计、预测或以其他方式获取对应的深度投影。深度投影与深度词典相结合以创建对应的深度图。可使用查询图像的分段来对产生的深度图进行后期处理,以确保查询图像中描绘的物体之间的深度转变是锐利的。由此,当查询rgb图像到达时,学习到的映射函数能够用于将其rgb像素值转换成深度像素值。

根据物体的单个图像快照估计的深度图可以被用于测量这些物体的尺寸。这在受益于实时测量的运输和产品中得到应用。深度图可以与根据查询图像的头部信息获取的相机参数相结合,以计算物体上的点的三维(3d)坐标。这些点之间的测量到的距离对应于自然物体的物理尺寸的测量。这样的估计出的物体尺寸可以向运输应用提供,以促进一个或多个运输任务(例如针对将要运输的物品来选择合适的运输容器)。

根据单个图像快照估计的深度图可以被用于创建可视化(例如3d飞行图像),该可视化用于对物品查看页面中的电子商务库存进行增强浏览。深度图可以与根据查询图像的头部信息获取的相机参数相结合,以生成对查询图像中描绘的场景和场景中的物体进行建模的3d点云。可以向再现引擎提供该3d点云,以创建场景的令人满意的3d可视化,这可以导致产生和发现新颖的视角(例如,场景从不同角度的修正视角)。可以使用网页浏览器或移动浏览器上的虚拟现实建模语言(vrml)插件来对这样的再现进行可视化。这可以具有在查看场景的单个图像快照时提高用户体验的效果。

图1是示出了根据一些示例实施例的适合于根据单个图像来估计深度的网络环境100的网络示意图。网络环境100包括图像处理机110、数据库115、以及设备130,上述设备全部经由网络190相互通信耦合。图像处理机110可以形成基于网络的系统105(例如被配置为向设备130提供一个或多个图像处理服务的基于云的服务器系统)的全部或一部分。服务器机110和设备130可以各自整体或部分地在计算机系统中实现,如下文参照图7所述。

在图1中还示出了用户132。用户132可以是人类用户(例如人类)、机器用户(例如由软件程序配置的用于与设备130交互的计算机)、或者其任何合适的组合(例如由机器辅助的人类或由人类监督的机器)。用户132并不是网络环境100的一部分,但是可以与设备130相关联,并且可以是设备130的用户。例如,设备130可以是属于用户132的台式计算机、车辆计算机、平板计算机、导航设备、便携式媒体设备、智能电话、或可穿戴设备(例如智能手表或智能眼镜)。

图1中示出的任何机器、数据库或设备可以在通过软件(例如一个或多个软件模块)改进的(例如配置的或编程的)通用计算机中实现,来变成具体被配置为执行针对该机器、数据库或设备的在本文中描述的功能中的一个或多个的专用计算机。例如,在下文中参照图7讨论了能够实现本文中描述的方法中任意一个或多个方法的计算机系统。如本文中使用的,“数据库”是数据存储资源,并且可以存储被构建为文本文件、表格、电子数据表、关系数据库(例如对象关系数据库)、三元组库、分层数据存储、或者其任意合适的组合。此外,图1中示出的机器、数据库或设备中的任意两个或多个可以组合为单个机器,并且针对本文中描述的任意单个机器、数据库或设备的功能可在多个机器、数据库或设备之间细分。

网络190可以是能够在机器、数据库和设备(例如图像处理机110和设备130)之间或之中通信的任意网络。因此,网络190可以是有线网络、无线网络(例如移动网络或蜂窝网络)、或者其任何合适的组合。网络190可以包括构成私人网络、公共网络(例如因特网)、或者其任何合适的组合的一个或多个部分。因此,网络190可以包括一个或多个部分,该一个或多个部分包含局域网(lan)、广域网(wan)、因特网、移动电话网络(例如蜂窝网络)、无线电话网络(例如普通老式电话系统(pots)网络)、无线数据网络(例如wifi网络或wimax网络)、或者其任何合适的组合。网络190的任意一个或多个部分可以经由传输介质来传送信息。如本文中使用的,“传输介质”是指能够传送(例如发送)用于由机器(例如通过这样的机器的一个或多个处理器)执行的指令的任何无形(例如暂时性)介质,并且包括数字或模拟通信信号或其它无形介质,以促进这样的软件的通信。

图2是示出了根据一些示例实施例的图像处理机110的专用组件的框图。图像处理机110被示出为包括访问模块210、描述符模块220、矩阵模块230、查询模块240、分析模块250、创建器模块260、运输模块290、以及视觉化模块295,所有这些模块被配置为(例如经由总线、共享存储器或交换机)相互通信。此外,访问模块210、描述符模块220、矩阵模块230、或者其任何合适的组合可以形成数据库训练器模块270的全部或一部分。此外,查询模块240分析模块250、创建器模块260、或者其任何合适的组合可以形成深度图模块280的全部或一部分。在下文中详细讨论上述模块的功能。

本文描述的模块中的任意一个或多个可以使用硬件(例如机器的一个或多个处理器)或者硬件与软件的组合来实现。例如,本文中描述的任何模块可以配置(例如在机器的一个或多个处理器中的)处理器执行本文中描述的针对该模块的操作。此外,这些模块中的任意两个或两个以上的模块可以组合成单个模块,并且在本文中描述的单个模块的功能可以在多个模块之间细分。此外,根据各种示例实施例,在本文中被描述为在单个机器、数据库或设备中实现的模块可以分布在多个机器、数据库或设备中。

在进一步讨论之前,为清楚地描述本文中的各种示例实施例,需要对符号的初步注释进行解释。考虑l个rgb图像的集合及其对应的深度图。rgb图像的集合表示为并且相应的全局图像描述符可被表示为设计深度转移算法的目标是估计相关性(例如映射或指派)的集合该相关性的集合可以针对即将到来的rgb查询图像来生成深度图。然后,估计出的深度图可以与已知的深度信息(例如地面真实深度)相比较,以对深度转移算法的质量进行量化。用于估计rgb图像与深度图像之间的映射的策略可以归为两大类:监督参数映射和监督非参数映射。

参数转移:当用θ来对rgb与深度之间的转换显式地进行参数化时,映射被认为是参数的,导致的形式的映射。参数深度转移的示例将会是学习由θ来参数化的随机场预测模型,以将输入的rgb查询转换为对应的深度图。

非参数转移:当rgb与深度之间的转换不能显式地进行参数化时,映射被认为是非参数的,导致形式的映射。非参数深度转移的示例将会是检索视觉上最接近的相邻rgb图像并融合其对应的深度图,以得到预测的深度估计。

图3是示出了根据一些示例实施例的使用图像处理机110来根据单个图像估计深度的工作流300的框图。工作流300可以包括两个阶段,具体地,训练阶段301和后训练阶段302(例如运行时间阶段、测试阶段、查询阶段、或使用阶段)。训练阶段301包括方框310、320、330、340和350。在方框310处,图像处理机110(例如从数据库115)访问参考图像(例如rgb训练图像)。在方框320处,图像处理机110从参考图像中提取视觉描述符(例如根据颜色信息计算的内核/稀疏描述符)。(例如通过将视觉描述符聚类为视觉单词或在没有任何聚类的情况下)可以根据提取的视觉描述符来创建词典(例如视觉词典),并且该视觉词典表示为wr。在方框330处,图像处理机110(例如从数据库115)访问参考深度图(例如深度训练图像)。在方框340处,图像处理机110从参考深度图中提取深度描述符(例如根据深度信息计算的内核/稀疏描述符)。(通过将深度描述符聚类为深度单词或者在没有任何聚类的情况下)基于提取的深度描述符来创建词典(例如深度词典),并且该深度词典表示为wd。

在方框350处,由于已知并已经(在数据库115中)存储了每个参考图像与其对应的参考深度图之间的相关性,图像处理机110执行跨域映射,以学习并记录提取的视觉描述符(例如视觉描述符的聚类)与其对应的深度描述符(例如深度描述符的聚类)之间的相关性。该跨域映射可以在数据库115中存储为数据结构(例如矩阵),用于之后在训练阶段302中的使用。这样的数据结构可以因此充当能够用于将(例如在视觉词典wr中表示的)视觉描述符解译成对应的(例如在深度词典wd中表示的)深度描述符或反之的图。

后训练阶段302包括方框360、370、380和390。在方框360处,图像处理机110访问(作为在深度估计的查询中或在深度估计的请求中经由设备130从用户132接收到的提交的)查询图像(例如rgb查询图像)。在方框370处,图像处理机110从查询图像中提取描述符(例如根据颜色信息计算的内核/稀疏描述符)。在方框380处,针对从查询图像中提取出的每个视觉描述符,图像处理机110获得对应的深度描述符(例如深度信息的内核/稀疏描述符),并且该深度描述符可以基于数据结构(例如跨域映射)来获取。在方框390处,图像处理机创建针对查询图像的深度图(例如对应于查询图像的深度图),并且该深度图可以基于获取的深度描述符来创建。因此,可以通过图像处理机110来创建(例如计算、预测、估计、及其任何合适的组合)查询图像的对应深度图。

关于视觉描述符和深度描述符的提取,图像处理机110可以被配置为将参考图像的各种特征转换为取决于数据的空间,词典元素跨越了该取决于数据的空间。假设存在将要使用全局描述符的集合{ri,di}来表示的第i个图像。图像处理机110可以被配置为将{ri,di}转换为表示为{αi,βi}的取决于数据的空间。基于数据的转换可以由以下方程式来实现:

αi=g,(wr,ri)βi=gd(wd,di).(1)

因此,全局描述符可以根据其相应的词典元素来表示。gr和gd的函数形式确定编码为词典元素的关系的类型。

图像处理机110的某些示例实施例实现用于对全局图像描述符与其它词典元素(例如所有的其它词典元素)之间的关系进行编码的两个备选方法中的一个。在第一方法中,使用内核描述符,并且图像处理机110被配置为计算给定的全局描述符与词典wr中所有其它元素的距离。假设第i个基本元素由词典的wr(:,i)列表示,则图像处理机110计算输入数据点到词典的所有基本元素的成对距离(例如内核)。这导致各自针对rgb全局特征和深度全局特征的一个描述符,rgb全局特征和深度全局特征可被分别表示为rgb词典内核和深度词典内核。

rgb词典内核:

深度词典内核:

在第二方法中,使用稀疏正描述符,并且图像处理机110被配置为执行稀疏分解,以使用基础元素上的系数的稀疏集来预测基础元素上的权重。该流程可以使用正交匹配追踪来完成。

rgb词典稀疏正:

深度词典稀疏正:

根据各种示例实施例,图像处理机110可以被配置为使用各种技术中的一个或多个来创建词典(例如视觉词典wr或深度词典wd)。能够用于词典创建的一个技术是k-means聚类。图像处理机110被配置为将来自整个数据集的描述符(例如视觉描述符或深度描述符)聚类为典型的p质心的集合。然后,图像处理机110选择最接近这些聚类质心的图像(例如彩色图像或深度图像)来作为词典的基础元素。由于聚类选择了数据集的若干代表,所形成的聚类可能表示存在输入数据点的特征空间的不同部分。

用于创建词典(例如视觉词典wr或深度词典wd)的另一个技术是使用整个训练数据集来作为词典。该技术与用于面部识别的稀疏编码方法一致。然而,该技术导致了更大的词典和所投影特征的更高的维数,虽然可以通过稀疏矩阵分解技术来处理这样的情形。

如上所述,在图3中的方框350处,图像处理机110执行词典之间的跨域映射。这可以通过确定(例如计算、估计、预测、或者其任何合适的组合)视觉描述符(例如描述rgb特征)与深度描述符(例如描述深度特征)之间的数学转换来执行。根据各种示例实施例,这样的转换可以被建模为由以下方程式表示的线性模型:

假设采用该线性模型,转换矩阵定义从视觉特征空间(例如rgb特征空间)向深度特征空间的映射。在备选示例实施例中,不同的数学映射可以用于将视觉特征空间映射到深度特征空间,包括一个或多个非线性映射。

虽然提取的视觉描述符(例如从参考图像中提取的内核/稀疏描述符)是试图描述整个图像的全局图像描述符,但是图像处理机110可以被配置为在后训练阶段302期间创建(例如计算、估计、或预测)像素级深度信息。这可以被看做是只使用从上到下的信息来执行深度估计。根据某些示例实施例,在工作流300中不使用属于参考图像(例如rgb训练图像)中的局部形状或纹理(texture)的像素级信息。在这样的示例实施例中,导致的深度图可能是粗糙的,并且可能很差地与查询图像中的真实边缘(例如边界或其它分界)相配。

因此,图像处理机110的一些实施例被配置为基于查询图像来执行结构性后期处理。为了改善针对查询图像创建的深度图,图像处理机110可以被配置为执行查询图像(例如输入图像)ri的超像素划分。超像素划分可以由si={si1,...si|s|}来表示,其中,|.|表示集合的基数,并且表示超像素sij中第k个像素。需要提醒的是,创建的深度图可以由来表示,在构成超像素的的像素更可能具有相似的深度值的假设之下,可以由图像处理机110来改善所创建的深度图。根据各种示例实施例,使用以下方程式来执行深度图的改善:

该流程使分段的常数值适于整个超像素,导致更能够解释的改善的深度图,因为它与查询图像中的真实边缘(例如边界)很好的对齐。之后,通过使用随机抽样一致(ransac)算法(例如通过图像处理机110)可以将在改善的深度图中指示或以其他方式表示的一个或多个平面变形为斜坡,以符合关于平行于相机的平面可具有任意定向的平面,导致更平滑的深度图。

图4-6是示出了根据一些示例实施例的图像处理机110在执行根据单个图像估计深度的方法400时的操作的流程图。方法400中的操作可以使用上文关于图2描述的模块来执行。如图4所示,方法400包括操作410、420、430、440、450、460、以及470。操作410-430可以在训练阶段301期间执行,而操作440-470可以在后训练阶段302期间执行。

在操作410中,(例如数据库训练器模块270中的)访问模块210从数据库115(例如参考数据库)访问参考图像和对应的参考深度图。参考图像可以是彩色图像(例如rgb图像),并且参考图像中的每一个可以对应于参考深度图(例如深度图像)中的一个。例如,具体的参考图像(例如第一参考图像)对应于具体的参考深度图(例如第一参考深度图)。此外,参考图像包括彩色像素,并且参考深度图包括针对彩色像素中的每一个的对应深度值(例如深度像素)。如上所述,每个彩色像素可以由至少三个颜色值(例如三个三色值,例如针对rgb像素的红色值、绿色值、和蓝色值)来定义。在一些示例实施例中,将参考图像及其对应的参考深度图组合为结合了颜色和深度信息二者的参考图像(例如rgb-d图像)。

在操作420中,(例如在数据库训练器模块270中的)描述符模块220基于(例如根据)在操作410中访问的参考图像和对应的参考深度图来计算视觉描述符和对应的深度描述符。在一些示例实施例中,描述符模块220还执行聚类(例如k-means聚类),以构建视觉词典和深度词典。在备选示例实施例中,不执行聚类。

在操作430中,(在数据库训练器模块270中的)矩阵模块230生成将计算出的视觉描述符(例如个体的视觉描述符或视觉描述符的聚类)与其的对应深度描述符(例如与个体的视觉描述符或视觉描述符的聚类相对应的个体的深度描述符)相关的数据结构(例如转换矩阵)。如上所述,该数据结构可以构成视觉词典与深度词典之间的跨域映射。这可以具有将从参考图像中提取出的视觉描述符映射到该相同参考图像的深度描述符的效果。矩阵模块230可以在数据库115中存储该数据结构(例如用于当前使用或之后使用)。

在操作440中,(在数据库训练器模块270中的)查询模块240接收查询图像。具体地,查询图像可以是由用户132从设备130向图像处理设备110提交的单个查询图像。作为深度信息查询的全部或一部分,可以接收查询图像,深度信息是根据查询图像计算、估计或以其他方式导出的。作为用于根据查询图像计算、估计或以其他方式导出深度信息的请求的全部或一部分,可以接收查询图像。在一些示例实施例中,查询图像与向运输应用、视觉化应用、或者其任意合适的组合提供深度信息的请求或命令一起接收。

在操作450中,(例如在深度图模块280中的)分析模块250分析操作440中接收到的查询图像,并且根据接收到的查询图像来计算一个或多个视觉描述符。在各种示例实施例中,分析模块250可以使用与操作420中描述符模块220使用的技术相同的视觉描述符提取技术中的一个或多个。

在操作460中,(例如在深度图模块280中的)创建器模块260访问在操作430中生成的数据结构(例如转换矩阵)。在一些示例实施例中,创建器模块260一开始访问视觉词典和深度词典。可以在数据库115中存储并从数据库115访问数据结构、视觉词典、深度词典或者其任何合适的组合。因此,创建器模块260获取与在操作450中计算出的一个或多个视觉描述符相对应的一个或多个深度描述符。具体地,基于访问的数据结构(例如转换矩阵),创建器模块260可以获取计算出的视觉描述符中的每一个视觉描述符的对应深度描述符。

在操作470中,创建器模块260创建针对之前在操作440中接收到的查询图像的深度图。深度图的创建基于在操作460中获取的一个或多个深度描述符。也就是说,基于通过访问数据结构而获取的深度描述符,创建器模块260可以生成(例如计算、估计、预测、或以其他方式创建)与查询图像相对应的深度图。

如图5所示,方法400可以包括操作511、541、542、543、580、590、591和592中的一个或多个。操作511可以作为操作410的一部分(例如前体任务(precursortask)、子程序、或部分)来执行,在该操作中,访问模块210访问参考图像及其对应的深度图像。在操作511中,访问模块210从数据库115访问参考rgb-d图像。在这样的示例实施例中,每个参考rgb-d图像包括rgb图像及其对应的参考深度图。

操作541、542和543中的一个或多个可以作为操作440中的一部分来执行,在该操作中,查询模块240接收查询图像。在操作541中,查询模块240在没有任何对应的深度图(例如深度图像)的情况下接收查询图像。例如,可以接收查询图像来作为没有相随的深度图像的普通的rgb图像。

在操作542中,查询模块240接收查询图像,并且查询图像(例如在其文件元数据中)缺少任何深度信息。例如,查询图像可以是在其非像素数据(例如其头部或其它隐藏数据)中没有深度信息的普通rgb图像。

在操作543中,查询模块240接收提交中的查询图像(例如从设备130接收),并且该提交可以仅根据查询图像来估计深度信息的请求的全部或一部分。在这样的示例实施例中,可以响应于该请求来执行操作470中的深度图创建。

根据以下示例实施例,操作580和操作590可以在操作470之后执行,在该操作中,创建器模块260创建与查询图像相对应的深度图。操作580和操作590可以形成后期处理活动的集合的全部或一部分,该后期处理活动被用于改善所创建的深度图(例如以将深度图与查询图像中描绘的边缘对齐)。

在操作580中,创建器模块260将查询图像划分为超像素(例如如上文关于图3讨论的)。在操作590中,创建器模块260基于在操作580中(例如如上文关于图3讨论的)划分的超像素来修改所创建的深度图。根据各种示例实施例,可以将操作591和592中的一个或多个操作作为操作590的一部分来执行。

在操作591中,创建器模块260通过向查询图像中的一个或多个超像素内的每个像素指派不变的深度值来修改创建的深度图。如上所述,这可以产生改善的深度图,该改善的深度图更可解释的,因为其与查询图像中的真实边缘(例如边界)很好的对齐。

在操作592中,创建器模块260通过修改由查询图像中的超像素表示的平面的定向来修改创建的深度图。可以针对在深度图中指示或以其他方式表示的一个或多个附加平面来重复该操作。如上所述,可以使用ransac算法来将每个平面变形为斜坡,导致更平滑的深度图。

如图6所示,方法400可以包括操作610、620、630和640中的一个或多个。操作610-640中的一些和全部可以在操作470之后执行,在该操作中,创建器模块260创建针对查询图像的深度图。

在操作610中,视觉化模块295生成在查询图像中描绘的自然物体的表面的3d模型。例如,自然物体可以是将要运输的物品。如另一个示例,自然物体可以是查询图像中描绘的场景的一部分(例如墙、地面、天花板、室内家具、室外美化物品、人、用户132、或者其任意合适的组合)。因此,(例如通过操作590的执行所修改的)已创建的深度图可以包括在查询图像中描绘的自然物体的表面的3d表示。生成的3d模型因此可以是,或可以包括点云(例如点的3d阵列),点云包括表示自然物体的表面的点的集合。此外,3d模型的生成可以基于(例如在查询图像中包括的)相机信息、针对查询图像的(例如通过操作590的执行所修改的)已创建的深度图、或者其二者。

在操作620中,视觉化模块295向再现引擎(例如3d再现引擎)提供生成的3d模型。再现引擎可以是设备130的一部分,并且可被经由网络向设备130提供。备选地,再现引擎可以是图像处理机110中的附加模块。无论再现引擎位于哪里,再现引擎可以被配置为基于提供的3d模型来创建3d可视化,因此创建在查询图像中描绘的自然物体的至少表面的3d可视化。这样的3d可视化可被向设备130提供,并因此向用户132展示。

在操作630中,运输模块290基于在操作610中生成的3d模型来计算自然物体的表面的长度。如上所述,生成的3d模型可以是,或可以包括3d点云,在3d点云中存在表示在查询图像中描绘的自然物体的表面的点。运输模块290可以通过计算(例如数学测量)这些点中的两个或多个之间的一个或多个距离来计算所表示的表面的一个或多个长度。这样的计算还可以基于查询图像中包括的相机信息。

在操作640中,运输模块290向运输应用提供计算出的表面的长度。例如,在查询图像中描绘的自然物体可以是可运输物品(例如将要运输的物体),并且运输模块290可以向运输应用提供可运输物品的一个或多个表面的一个或多个计算出的尺寸(例如长度)。根据一些示例实施例,运输应用被配置为基于所提供的尺寸来选择、推荐、或建议运输容器。

根据各种示例实施例,本文中描述的方法中的一个或多个可以促进根据单个图像来估计深度信息。此外,假设给出在视觉词典中表示的视觉描述,本文中描述的方法中的一个或多个可以促进图像处理系统的训练,以(例如经由超像素后期处理)生成并改善能够用来根据深度词典来获取深度描述符的转换矩阵。此外,本文中描述的方法中的一个或多个方法促进了响应于提交缺少深度信息的查询图像来创建对应的深度图。因此,本文中描述的方法中的一个或多个可以使用查询图像来促进用户体验的提高(例如通过提供在查询图像中描绘的物体的备选3d视图),并且提高执行运输活动时的精确度(例如通过提供在查询图像中描绘的可运输物品的尺寸)。

当总体上考虑这些效果时,本文中描述的方法中的一个或多个可以避免将会涉及到从缺少深度信息的单个图像中获取深度信息的某些努力或资源的需求。可以通过本文中描述的方法中的一个或多个来减少用户从单个图像中估计深度信息所花费的努力。可以类似地减少(例如网络环境100中的)一个或多个机器、数据库或设备使用的计算资源。这样的计算资源的示例包括处理器周期、网络业务量、存储器使用、数据存储容量、功率消耗、以及冷却能力。

图7是示出了根据一些示例实施例的机器700的组件的框图,该机器700能够从机器可读介质722(例如非暂时性机器可读介质、机器可读存储介质、计算机可读存储介质、或者其任何合适的组合)中读取指令724并能够整体或部分地执行本文中讨论的方法中的一个或多个。具体地,图7示出了具有计算机系统的示例形式(例如计算机)的机器700,并且在该计算机系统中可以整个地或部分地执行用于使得机器700执行本文描述的任何一个或多个方法的指令724(例如软件、程序、应用、小应用程序、app、或者其它可执行代码)。

在备选实施例中,机器700作为独立设备来工作,或者可以通信耦合(例如连网)到其它机器上。在连网部署中,机器700可以以服务器-客户端网络环境中的服务器机器或客户端机器的身份来工作,或者作为分布式(例如对等)网络环境中的对等端机器来工作。机器700可以是服务器计算机、客户端计算机、个人计算机(pc)、平板计算机、膝上型计算机、上网本、机顶盒(stb)、个人数字助理(pda)、web电器、网络路由器、网络交换机、网桥、或者能够顺序地或以其他方式执行对由该机器采取的特定动作进行规定的指令724的任何机器。此外,虽然只示出了单个机器,术语“机器”还应当指单个地或共同地执行指令724以执行本文描述的一个或多个方法的全部或部分的机器的集合。

机器700包括处理器702(例如中央处理单元(cpu)、图形处理单元(gpu)、数字信号处理器(dsp)、专用集成电路(asic)、射频集成电路(rfic)、或者其任何合适的组合)、主存储器704和静态存储器706,上述部件被配置为经由总线708来相互通信。处理器702可以包含能够由指令724中的一些或全部来暂时或永久地配置的微电路,使得处理器702能够被配置为整体或部分地执行本文中描述的方法中的任何一个或多个。例如,处理器702的一个或多个微电路的集合能够被配置为执行本文中描述的一个或多个模块(例如软件模块)。

机器700还可以包括图形显示器710(例如等离子显示面板(pdp)、发光二极管(led)显示器、液晶显示器(lcd)、投影仪、阴极射线管(crt)、或者任何其它的能够显示图形或视频的显示器)。机器700还可以包括字母数字输入设备712(例如键盘或键区)、光标控制设备714(例如鼠标、触控板、轨迹球、摇杆、运动传感器、眼部追踪设备、或其它指向仪器)、存储单元716、音频生成设备718(例如声卡、放大器、扬声器、耳机插口、或者其任何合适的组合)、以及网络接口设备720。

存储单元716包括机器可读介质722(例如有形且非易暂时性机器可读存储介质),在机器可读介质722上存储了体现本文描述的任何一个或多个方法或功能的指令724。在机器700执行指令724时,指令724还可以完全地或至少部分地位于主存储器704中、位于处理器702(例如位于处理器的高速缓存存储器中)中、或者这二者。因此,主存储器704和处理器702可被视为机器可读介质(例如有形且非易暂时性机器可读存储介质)。指令724可以经由网络接口设备720在网络190上发送或接收。例如,网络接口720可以使用一个或多个传输协议(例如超文本传输协议(http))来传送指令724。

在一些示例实施例中,机器700可以是便携式计算设备,例如智能电话或平板计算机,并且具有一个或多个附加输入组件730(例如传感器或量表)。这样的输入组件730的示例包括:图像输入组件(一个或多个相机)、音频输入组件(例如麦克风)、方向输入组件(例如指南针)、位置输入组件(例如全球定位系统(gps)接收机)、定向组件(例如陀螺仪)、运动检测组件(例如一个或多个加速度计)、高度检测组件(例如高度计)、以及气体检测组件(气体传感器)。本文中描述的模块中的任何一个可以访问并能够使用通过这些输入组件中的一个或多个接收到的输入。

如本文中使用的,术语“存储器”是指能够暂时或永久地存储数据的机器可读介质,并且存储器是指可以包括但不限于:随机存取存储器(ram)、只读存储器(rom)、缓冲存储器、闪存、以及高速缓冲存储器。虽然在示例实施例中示出机器可读介质722为单个介质,但是术语“机器可读介质”应当指的是包括能够存储指令的单个介质或多个介质(例如集中或分布式数据库,或相关联的高速缓存和服务器)。术语“机器可读介质”还应当指包括任何介质或多个介质的组合,其能够存储由机器700执行的指令724,使得当机器700的一个或多个处理器(例如处理器702)执行指令724时,使机器724整体或部分地执行本文中描述的一个或多个方法。因此,“机器可读介质”指的是单个存储装置或设备,以及包括多个存储装置或设备在内的基于云的存储系统或存储网络。术语“机器可读介质”因此应当指包括但不限于:具有固态存储器形式的一个或多个有形(例如非暂时性)数据仓库、光学介质、磁性介质、或者其任何合适的组合。在一些示例实施例中,可以通过载波介质来携带机器700执行的指令724。这样的载波介质的示例包括存储介质和暂时性介质(例如携带指令724的信号)。

在整个说明书中,多个实例可以实现描述为单个实例的组件、操作或结构。尽管将一个或多个方法的各个操作示出和描述为分开的操作,但是各个操作中的一个或多个可以并发执行,并且不要求按所示出的顺序来执行各操作。在示例配置中作为分开的组件呈现的结构和功能可以作为组合的结构或组件来实现。类似地,作为单一组件呈现的结构和功能可以作为分开的组件来实现。这些和其它的变化、修改、添加和改进在本文主题的范围之内。

某些实施例在本文中被描述为包括逻辑或多个组件、模块或机制。模块可以构成软件模块(例如存储或体现在机器可读介质上的代码或以传输信号体现的代码)、硬件模块、或者其任何合适的组合。“硬件模块”是能够执行某些操作并可以按特定物理方式来配置或布置的有形(例如非暂时性)单元。在各种示例实施例中,一个或多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或多个硬件模块(例如处理器或处理器组)可以由软件(例如,应用或应用部分)配置为进行操作以执行本文描述的某些操作的硬件模块。

在一些实施例中,硬件模块可以用机械方式、电子方式、或者其任何合适的组合方式来实现。例如,硬件模块可以包括永久地被配置为执行某些操作的专用电路或逻辑。例如,硬件模块可以是专用处理器,例如现场可编程门阵列(fpga)或asic。硬件模块还可以包括暂时由软件配置以执行某些操作的可编程逻辑或电路。例如,硬件模块可以包括通用处理器或其它可编程处理器中包含的软件。将会意识到的是:对以机械方式、在专用且永久配置的电路中、或在暂时配置的电路(例如由软件配置)中实现硬件的决定可以受到成本和时间考虑因素的驱动。

因此,短语“硬件模块”应当被理解为包含有形实体,应当是物理构成的、永久配置(例如硬连线的)或暂时配置(例如编程的)以在某种方式下工作或执行本文描述的某些操作的有形实体。如本文中使用的,“硬件实现模块”是指硬件模块。考虑到其中硬件模块是暂时配置(例如编程的)的实施例,每个硬件模块在任何一个时刻上不需要是已配置或已实例化的。例如,在硬件模块包括由软件配置以变为专用处理器的通用处理器的情况下,通用处理器就可以在不同时间被配置为各自不同的专用处理器(例如包括不同的硬件模块)。因此软件(例如软件模块)可以配置处理器以例如在一个时刻构成特定硬件模块并且在不同的时刻构成不同的硬件模块。

硬件模块可以向其它硬件模块提供信息,并且可以从其它硬件模块接收信息。因此,描述的硬件模块可以看做是通信耦合的。在多个硬件模块同时存在的情况下,就可以通过两个或多个硬件模块之间或之中的信号传输(例如在适当的电路和总线上)来实现通信。在其中多个硬件模块在不同的时间被配置或实例化的实施例中,就可以例如通过在多个硬件模块可访问的存储器结构中对信息的存储和检索来实现这样的硬件模块之间的通信。例如,一个硬件模块可以执行操作,并且将该操作的输出存储在与该硬件模块通信耦合的存储设备中。然后另一硬件模块可以在之后的时间访问该存储设备以检索并处理所存储的输出。硬件模块还可以发起与输入或输出设备的通信,并且能够在资源(例如信息的集合)上工作。

本文描述的示例方法的各种操作可以至少部分地由一个或多个处理器执行,该处理器被暂时地配置(例如通过软件)或永久地配置以执行有关的操作。无论是暂时地还是永久地配置,这样的处理器可以构成进行操作以执行本文描述的一个或多个操作或功能的处理器实现的模块。如本文中使用的,“处理器实现的模块”是指使用一个或多个处理器实现的硬件模块。

类似地,本文中描述的方法可以至少部分由处理器实现,处理器是硬件的示例。例如,方法的至少一些操作可以由一个或多个处理器或处理器实现的模块来执行。如本文中使用的,“处理器实现的模块”是指其中硬件包括一个或多个处理器的硬件模块。此外,一个或多个处理器还可以操作以支持在“云计算环境”下的操作的执行或作为“软件即服务”(saas)的操作的执行。例如,至少一些操作可以由计算机组(作为包括处理器在内的机器示例)来执行,这些操作能够经由网络(例如互联网)并且经由一个或多个适当的接口(例如应用程序接口(api))来访问。

某些操作的执行可以分布在一个或多个处理器中,并不只位于单个机器中,而且布置在多个机器中。在一些示例实施例中,一个或多个处理器或处理器实现的模块可以位于单个地理位置中(例如在家庭环境、办公室环境或服务器群中)。在其它示例实施例中,一个或多个处理器或处理器实现的模块可以分布在多个地理位置中。

本文描述的主题的一些部分可以用针对数据的操作的算法或符号化表示来呈现,该数据在机器存储器(例如计算机存储器)中存储为比特或二进制数字信号。这样的算法或符号化表示是由数据处理领域中普通技术人员用来向其它本领域技术人员传达他们工作的主旨的技术的示例。如本文中使用的,“算法”是导致期望结果的操作或类似处理的自相容序列。在该上下文中,算法和操作涉及物理量的物理操作。典型地但不是必须地,这样的量可以表现为以下形式:电、磁、或者能够由机器存储、访问、传输、组合、比较或以其他方式操作。有些时候,特别是针对常见用途,使用以下词语来指代这样的信号是方便的:“数据”、“内容”、“比特”、“值”、“要素”、“符号”、“字符”、“项”、“数量”、“数字”等等。然而这些词语仅仅是方便的标签,并且应当与适当的物理量相关联。

除非另行明确声明,否则使用这些词语“处理”、“计算(computing)”、“计算(calculating)”、“确定”、“呈现”、“显示”等等的本文讨论可以指的是机器(例如计算机)的动作或处理,该机器动作或处理对表示为物理(例如电、磁或光)量的数据进行操作或变换,物理量在一个或多个存储器(例如易失性存储器、非易失性存储器,或者其任何合适的组合)、寄存器、或者其它接收、存储、发送或显示信息的机器组件中。此外,除非另行明确声明,否则如在专利文件中常见的,本文中使用的术语“一”或“一个”是用于包括一个或多于一个实例。最后,除非另行明确声明,否则如本文中使用的,连词“或”是指非排他性的“或者”。

下文列举的实施例描述了本文讨论的方法、机器可读介质和系统(例如装置)的各种示例实施例:

第一实施例提供了一种方法,包括:

访问参考数据库中的参考图像以及对应的参考深度图,第一参考图像对应于第一参考深度图,并且所述第一参考图像包括由至少三个颜色值定义的彩色像素,所述第一参考深度图包括与所述第一参考图像中的所述彩色像素相对应的深度值;

根据所访问的参考图像以及所述参考图像的对应参考深度图来计算视觉描述符和对应的深度描述符;

生成将计算出的视觉描述符与其计算出的对应深度描述符进行相关的矩阵,由机器的处理器来执行所述矩阵的生成;

接收查询图像;

根据接收到的查询图像计算视觉描述符;

根据所生成的矩阵获取与所述计算出的视觉描述符相对应的深度描述符;以及

基于与根据所述查询图像计算出的视觉描述符相对应的获取到的深度描述符来创建与所述查询图像相对应的深度图。

第二实施例提供了根据第一实施例的方法,其中:

所述查询图像的接收对没有任何对应深度图的查询图像进行接收。

第三实施例提供了根据第一或第二实施例的方法,其中:

所述参考图像和所述查询图像是只包含红-绿-蓝(rgb)值并缺少深度值的rgb图像。

第四实施例提供了根据第一到第三实施例中任一项所述的方法,其中:

所述参考图像是参考rgb图像;并且

对所述参考图像和对应的深度图的访问包括:从所述参考数据库访问参考红-绿-蓝-深度(rgb-d)图像,每个参考rgb-d图像包括所述参考rgb图像中的一个及其对应的参考深度图。

第五实施例提供了根据第一到第四实施例中任一项所述的方法,其中:

所述查询图像的接收对所述查询图像进行接收来作为仅根据所述查询图像来估计深度信息的请求的一部分;以及

与查询图像相对应的所述深度图的创建响应于估计深度信息的请求。

第六实施例提供了根据第一到第五实施例中任一项所述的方法,还包括:

将所述查询图像划分为超像素;以及

基于所述查询图像中的超像素来修改与所述查询图像相对应的已创建的深度图。

第七实施例提供了根据第六实施例的方法,其中:

所述已创建的深度图的修改包括:将不变的深度值分配给所述查询图像中的所述超像素中的每个像素。

第八实施例提供了根据第六或第七实施例的方法,其中:

所述修改已创建的深度图包括:根据随机抽样一致“ransac”算法来修改由所述查询图像中的所述超像素表示的平面的定向。

第九实施例提供了根据第一到第八实施例中任一项所述的方法,其中:

与所述第一参考图像相对应的所述第一参考深度图是包括深度像素的第一参考深度图像,所述深度像素由所述深度值定义并与所述第一参考图像中的所述彩色像素相对应。

第十个实施例提供了根据第一到第九实施例中任一项所述的方法,其中:

所述查询图像描绘自然物体的表面,并且包括相机信息;

所述已创建的深度图包括其表面描绘在所述查询图像中的自然物体的表面的三维表示,并且所述方法还包括

基于所述查询图像中包括的所述相机信息且基于与描绘所述自然物体的所述查询图像相对应的已创建的深度图,生成所述自然物体的表面的三维模型。

第十一实施例提供了根据第十实施例的方法,还包括:

向三维再现引擎提供生成的三维模型,以创建所述自然物体的表面的三维可视化。

第十二实施例提供了根据第十或第十一实施例的方法,其中:

所述生成的三维模型是三维点云,所述三维点云中是表示所述自然物体的表面的点;并且所述方法还包括

基于生成的三维点云来计算所述自然物体的表面的长度。

第十三实施例提供了根据第十二实施例的方法,其中:

在所述查询图像中描绘的所述自然物体是可运输物品;并且所述方法还包括

向运输应用提供计算出的所述可运输物品的表面的长度。

第十四实施例提供了一种系统,包括:

一个或多个处理器;

数据训练器模块,包括一个或多个处理器中的至少一个处理器,并且被配置为:

访问参考数据库中的参考图像以及对应的参考深度图,第一参考图像对应于第一参考深度图,并且所述第一参考图像包括由至少三个颜色值定义的彩色像素,所述第一参考深度图包括与第一参考图像中的所述彩色像素相对应的深度值;

根据所访问的参考图像以及所述参考图像的对应参考深度图来计算视觉描述符和对应的深度描述符;

生成将计算出的视觉描述符与其计算出的对应深度描述符进行相关的矩阵;以及

深度图模块,包括一个或多个处理器中的至少一个处理器,并被配置为:

接收查询图像;

根据接收到的查询图像计算视觉描述符;

根据所述训练器模块生成的矩阵获取与所述计算出的视觉描述符相对应的深度描述符;以及

基于与根据所述查询图像计算出的视觉描述符相对应的获取到的深度描述符来创建与所述查询图像相对应的深度图。

第十五实施例提供了根据第十四实施例的系统,其中,深度图模块还被配置为:

接收所述查询图像,作为仅根据所述查询图像来估计深度信息的请求的一部分;并且

响应于估计深度信息的请求,创建与所述查询图像相对应的深度图。

第十六实施例提供了根据第十四或第十五实施例的系统,其中,所述深度图模块还被配置为:

将所述查询图像划分为超像素;以及

基于所述查询图像中的超像素来修改与所述查询图像相对应的已创建的深度图。

第十七实施例提供了根据第十四到第十六实施例中任一项所述的系统,其中:

所述查询图像描绘自然物体的表面,并且包括相机信息;

所述深度图模块被配置为:创建所述深度图,所述深度图包括其表面描绘在所述查询图像中的自然物体的表面的三维表示;并且所述系统还包括

视觉化模块,被配置为:基于所述查询图像中包括的所述相

机信息且基于与描绘所述自然物体的所述查询图像相对应的已创

建的深度图,生成所述自然物体的表面的三维模型。

第十八实施例提供了根据第十七实施例的系统,其中:

在所述查询图像中描绘的所述自然物体是可运输物品;

生成的三维模型是三维点云,所述三维点云中是表示所述自然物体的表面的点;并且所述系统还包括:

运输模块,被配置为:

基于生成的三维点云来计算所述可运输物品的表面的长度;以及,

向运输应用提供计算出的所述可运输物品的表面的长度。

第十九实施例提供了一种包括指令的非暂时性机器可读存储介质,当机器的一个或多个处理器执行所述指令时,导致所述机器执行以下操作:

访问参考数据库中的参考图像以及对应的参考深度图,第一参考图像对应于第一参考深度图,并且所述第一参考图像包括由至少三个颜色值定义的彩色像素,所述第一参考深度图包括与所述第一参考图像中的所述彩色像素相对应的深度值;

根据所访问的参考图像以及所述参考图像的对应参考深度图来计算视觉描述符和对应的深度描述符;

生成将计算出的视觉描述符与其计算出的对应深度描述符进行相关的矩阵;

接收查询图像;

根据接收到的查询图像计算视觉描述符;

根据所生成的矩阵获取与所述计算出的视觉描述符相对应的深度描述符;以及

基于与根据所述查询图像计算出的视觉描述符相对应的获取到的深度描述符来创建与所述查询图像相对应的深度图。

第二十实施例提供了根据第十九实施例的非暂时性机器可读存储介质,其中:

所述查询图像描绘自然物体的表面,并且包括相机信息;

所述已创建的深度图包括其表面描绘在所述查询图像中的自然物体的表面的三维表示;并且所述操作还包括

基于所述查询图像中包括的所述相机信息且基于与描绘所述自然物体的所述查询图像相对应的已创建的深度图,生成所述自然物体的表面的三维模型。

第二十一实施例提供了一种载波介质,该载波介质携带用于控制机器来执行根据前述实施例中的任意一个的方法的机器可读指令。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1