在航运之前准确测量包装体是运输和物流行业的重要任务。尺寸测量和重量测量是在航运包装体之前的常见测量。在航运之前的另一个常见任务是扫描条形码。条形码扫描通常使用成像扫描器来完成,其中成像扫描器拍摄整个条形码的图片,并且运行图像处理算法的处理器识别并解码条形码。条形码扫描经常在移动设备上实现。
附图说明
附图(其中相同的附图标记在全部单独的视图中指示相同的或功能类似的要素)连同下面的详细描述被包括于此并形成说明书的一部分,并用来进一步图示本文描述的概念的实现,以及解释那些实现的各种原理和优势。
图1描绘了根据一些实现的用于确定尺寸和条形码扫描的示例设备。
图2描绘了根据一些实现的示例设备的框图。
图3描绘了根据一些实现的用于条形码扫描的示例方法的流程图。
图4描绘了根据一些实现的用于确定尺寸的示例方法的流程图。
图5描绘了根据一些实现的用于条形码扫描和确定尺寸的示例方法的流程图。
图6描绘了根据一些实现的用于条形码扫描和确定尺寸的示例工作流的框图。
图7描绘了根据一些实现的渲染(render)物理对象的数字图像及其尺寸和条形码读出的示例用户界面。
本领域技术人员将理解附图中的要素出于简化和清楚而示出,并且不一定按比例绘制。例如,附图中的要素中的一些要素的尺寸可相对于其他要素被放大以帮助改善对本发明实现的理解。
已在附图中通过常规符号在适当位置对装置和方法构成进行了表示,所述表示仅示出与理解本发明的实现有关的那些特定细节以免因得益于本文的描述将对本领域技术人员显而易见的细节而混淆本公开。
具体实施方式
本说明书的方面提供了一种方法,该方法包括获取对象的二维(2d)预览图像,其中所述2d预览图像是从2d相机设备获得的。该方法还包括处理2d预览图像以确定对象上的码的位置。如本文更具体所描述,该码可以是条形码。该方法还包括获取对象的三维(3d)图像,其中所述3d图像是从3d相机设备获得的。该方法还包括处理3d图像以确定深度数据。该方法还包括基于经处理的3d图像中的深度数据获取对象的2d数据捕获图像,其中所述2d数据捕获图像捕获码,并且其中所述2d数据捕获图像是从2d相机设备获得的。该方法还包括基于2d数据捕获图像读取码。
在一些实现中,3d相机设备可以是红外相机设备。在一些实现中,该方法还包括基于经处理的3d图像中的深度数据将2d相机设备的透镜聚焦在码上。在一些实现中,该方法还可以包括向用户提供指示符,其中所述指示符基于经处理的3d图像中的深度数据指导用户相对于对象最佳地定位2d相机设备。在一些实现中,该方法还可以包括基于经处理的3d图像中的深度数据调整码的分辨率。在一些实现中,该码可以是条形码。在一些实现中,该方法还可以包括当经处理的3d图像中的深度数据超过预定深度阈值时,裁剪(crop)码的图像。
在一些实现中,本说明书的另一方面提供了一种系统,其包括2d相机设备、3d相机设备和一个或多个处理器。该系统还包括数据存储装置,该数据存储器包含可由该一个或多个处理器执行的指令。该指令使系统执行操作,该操作可以包括获取从2d相机设备获得的对象的2d预览图像,处理2d预览图像以确定在对象上的码的位置,以及获取对象的3d图像,其中3d图像是从3d相机设备获得的。指令还可以包括处理3d图像以确定深度数据;基于经处理的3d图像中的深度数据获取对象的2d数据捕获图像,其中2d数据捕获图像捕获码并且其中2d数据捕获图像是从2d相机设备获得的;以及基于2d数据捕获图像读取码。
在一些实现中,本说明书的另一方面提供了一种方法,该方法包括获取从2d相机设备获得的对象的2d预览图像;处理2d预览图像以确定一个或多个暗区域;基于经处理的2d预览图像中的该一个或多个暗区域获取对象的3d图像,其中3d图像是从3d相机设备获得的;以及处理3d图像以确定对象的尺寸。
在一些实现中,3d相机设备可以是红外相机设备。在一些实现中,该方法还可以包括在显示设备上显示对象的尺寸。在一些实现中,该方法还可以包括在显示设备上显示对象的2d数据捕获图像。在一些实现中,该方法还可以包括基于经处理的2d预览图像中的该一个或多个暗区域调整3d图像的曝光时间和3d图像的增益中的至少一个。在一些实现中,3d图像的处理可以包括识别对象的一个或多个表面,基于该一个或多个表面确定感兴趣的区(region),以及基于经处理的2d预览图像调整3d图像的曝光时间和/或3d图像的增益。在一些实现中,3d图像的处理可以包括:识别对象的表面,以及基于所识别的对象的表面来确定对象的尺寸。
在一些实现中,本说明书的另一方面提供了一种系统,其包括2d相机设备、3d相机设备、一个或多个处理器,以及包含指令的数据存储装置。该指令可由该一个或多个处理器执行以用于使系统执行包括获取对象的2d预览图像的操作,其中所述2d预览图像是从2d相机设备获得的。该操作还包括处理所述2d预览图像以确定一个或多个暗区域。该操作还包括基于经处理的2d预览图像中的该一个或多个暗区域获取对象的3d图像,其中3d图像是从3d相机设备获得的。该操作还包括处理3d图像以确定对象的尺寸。
在一些实现中,本说明书的另一方面提供了一种方法,该方法包括获取从2d相机设备获得的对象的2d预览图像。该方法还包括处理所述2d预览图像以确定一个或多个暗区域并确定所述对象上的码的位置。该方法还包括基于该一个或多个暗区域获取对象的3d图像,其中所述3d图像是从3d相机设备获得的。该方法还包括处理所述3d图像以确定深度数据并确定所述对象的尺寸。该方法还包括基于经处理的3d图像中的深度数据获取对象的2d数据捕获图像,其中所述2d数据捕获图像捕获码,并且其中所述2d数据捕获图像是从2d相机设备获得的。该方法还包括基于2d数据捕获图像读取码。
图1描绘了根据一些实现的用于确定尺寸和条形码扫描的示例设备100。如本文所描述,条形码扫描和确定尺寸是基于一个或多个数字图像和深度数据。图2描绘了根据一些实现的图1的设备100的框图。
参考图1和图2,在各种实现中,设备100可以是个人数字助理(pda)、平板电脑或任何合适的手持设备。如图所示,设备100包括二维(2d)相机设备102、三维(3d)相机设备104(可以被称为深度感测设备104),以及至少一个处理器220(可以被称为确定尺寸处理器和/或条形码读取处理器220)。在该示例实现中,2d相机设备102内置于设备100中。如此,2d相机设备102被示为虚线。如图所示,2d相机设备102包括2d相机透镜106,并且3d相机设备104包括3d相机透镜108。如本文所指示,2d相机设备102可以包括条形码成像器。在实施例中,2d相机设备可以是红-绿-蓝(rgb)相机。而且,3d相机设备可以是红外相机设备。在一些实现中,3d相机设备还可以包括激光图案发射器110。
在各种实现中,处理器220被配置为:获取从2d相机设备获得的对象的2d预览图像;处理2d预览图像以确定一个或多个暗区域(例如,低于预定亮度阈值的图像区域和/或具有预定暗色的图像区域,包括黑色或基本上黑色的那些图像区域)并确定在对象上的码的位置;并且基于所述一个或多个暗区域中的一个或多个获取对象的3d图像,其中从3d相机设备获得3d图像。处理器还可以被配置为处理3d图像以确定深度数据并确定对象的尺寸。该处理器还可被配置为基于经处理的3d图像中的深度数据获取对象的2d数据捕获图像,其中2d数据捕获图像捕获码,并且其中2d数据捕获图像是从2d相机设备获得的。该处理器还可以被配置为基于2d数据捕获图像来读取码。
在各种实现中,2d相机设备102可以可互换地称为相机102,并且3d相机设备104可以可互换地称为深度感测设备104。此外,处理器220可以可互换地称为确定尺寸处理器和/或条形码读取处理器220。
仍然参考图2,设备100还包括存储器222、通信接口224(可互换地称为接口224)、显示设备126、至少一个输入设备228、扬声器232和麦克风234。现在将更详细地描述设备100及其部件。设备100可以包括移动或以其他方式便携的计算设备,其具有图形处理单元(gpu)、图形处理设备、图形处理引擎、视频处理设备等。设备100获取图像和深度数据以在相机102和深度感测设备104的视场中确定对象的尺寸。在实施例中,设备100包括具有专门功能的设备,例如仓储、零售或保健功能,包括但是不限于跟踪或以其他方式处理库存、航运包裹、零售物品、保健供给等。在各种其他实施例中,设备100可以采用各种形状因子,诸如移动计算设备、平板电脑、膝上型计算机或台式计算设备、pda、智能电话、支持因特网的设备、电子相机等的形状因子。其他合适的设备在本实现的范围内。
设备100还可以包括以下中的一个或多个:射频识别(rfid)和/或近场通信(nfc)读取器、基于激光的条形码扫描器、可以与显示器126分离或形成显示器126的部分的一个或多个手柄,以及用于触发相机102、104、基于激光的扫描器、rfid、nfc读取器或另一个数据采集设备中的一个或多个的触发器。在一个实施例中,触发器是内置于设备100中的硬件触发开关,例如集成到手柄中或设置在设备100的外壳上的其他位置。替代地或另外地,触发器可以是图形用户界面组件,诸如显示在显示设备126的触摸屏上的按钮。
在各种实现中,相机102可以包括数字相机、rgb数字相机等,其被配置为获取数字图像,包括但不限于视频流中的图像。虽然未描绘相机102的细节,但是假设相机102包括用于获取数字图像的部件(包括但不限于相应的电荷耦合器件(ccd)等),以及相应的透镜、相应的聚焦设备(包括但不限于音圈等)等。因此,来自相机102的数据通常包括二维数据,并且特别地2d阵列的值,其可以包括2d颜色坐标和/或亮度坐标的阵列。深度感测设备104可以包括飞行时间(tof)相机、有源立体视觉相机(其可以投射其自身的光,包括但不限于红外光)和无源立体视觉相机(其依赖于环境光)中的一个或多个。在各种实现中,这些不同的技术可以应用于不同的工作条件和不同的工作范围。例如,在阳光直射下,优选无源立体视觉系统。对于长工作范围,tof是优选的,并且对于具有小盒子的室内应用,结构化光(例如,有源立体视觉)是优选的。然而,其他深度感测设备在本实现的范围内。在一些实现中,深度感测设备104可以包括形成立体视觉相机的一对相机,其可以包括相机102。当深度感测设备104包括结构化光相机时,深度感测设备104可包括配置成投射结构化光的设备和用于捕获由结构化光照射的物理对象的图像的相机。当深度感测设备104包括tof相机时,深度感测设备104包括用于提供这种功能的部件。
深度感测设备104被配置为感测跨视场的深度。具体地,可以处理来自深度感测设备104的深度数据以产生深度感测设备104的视场的三维映射。因此,来自深度感测设备104的数据可以被称为三维数据,并且可以包括深度坐标的二维阵列(例如,二维阵列中的每个元素与对应的深度相关联)。
来自深度感测设备104的深度数据通常表示从深度感测设备104到深度感测设备104的视场中的对象的部分的距离。在一些实现中,深度数据可以包括和/或被转换为可以包括所选参考系和/或给定参考系中的三维坐标的“真实世界坐标”。在一些实现中,这样的参考系可以相对于深度感测设备104(例如,深度感测设备104可以包括参考系的原点)。在其他实现中,这样的参考系可以相对于固定坐标,例如使用全球定位系统(gps)设备确定的仓库中的点和/或地理坐标。在后者的实现中,设备100可以包括gps设备,并且可以相对于关于gps数据定义的原点确定来自深度感测设备104的深度数据的坐标。
如图1所描绘,相机102和深度感测设备104中的每个的外部部件可以位于设备100的后侧,并且显示设备126可以位于设备100的前侧,使得可以在设备100的后侧捕获数字图像和深度数据。换句话说,相机102和深度感测设备104中的每个的视场可以沿着垂直于设备100的后侧的平面的轴在特定点处重叠。
此外,还如图1中所描绘,相机102和深度感测设备104的图像捕获部件和/或数据捕获部件(诸如透镜等)可以被分开一定距离,使得来自相机102的图像和来自深度感测设备104的深度数据通常跨类似的视场成像和/或感测深度。换句话说,相机102和深度感测设备104的相应的视场通常基本上重叠。在一些实现中,相机102和深度感测设备104中的每个的透镜等尽可能地靠近在一起。这既是用于减少它们之间的视差,又是用于确保可以捕获由相机102成像的对象的深度数据。
注意到图1和图2中的每个图中的相机102和深度感测设备104中的每个的位置仅仅是示意性的,并不一定表示相机102和深度感测设备104中的每个的实际相对位置。例如,相机102和深度感测设备104可以位于设备100上的任何位置(假设它们的视场至少部分地重叠,使得它们相应的视场中的物理对象可以由相机102成像并且由深度感测设备104来感测)。
在一些实现中,相机102和深度感测设备104可占据空间中的相同点,使得它们相应的视场将是相同的。在一些实现中,相机102可以包括rgb相机(例如,相机102)和tof相机(例如,深度感测设备104)。特定的配置可以变化,并且将取决于特定的实现。此外,这样的配置允许对数字图像和深度数据进行预处理以便使对应的区域和/或像素对齐,以最小化“像素阴影”和“暗区”。例如,由于视差,并且在对象布置在它们的视场中的一些情况中,对于相机102可见的区对于深度感测设备104是不可见的,反之亦然。这可以导致:对于存在深度数据的区中缺少图像数据;和/或对于存在图像数据的区中缺少深度数据。当这样的区大时,它们可能扭曲使用本文描述的技术正在处理的数据,所以相机102和深度感测设备104的最接近的可能的共同位置是优选的。
处理器220可包括处理器和/或多个处理器,包括但不限于一个或多个中央处理器(cpu)和/或一个或多个处理单元和/或一个或多个图形处理单元(gpu);无论哪种方式,处理器220包括硬件元件和/或硬件处理器。实际上,在一些实现中,处理器220可以包括特别地配置为实现设备100的功能的专用集成电路(asic)和/或现场可编程门阵列(fpga)。因此,设备100优选地不是通用计算设备,而是特别地配置为实现特定功能的设备,包括使用数字图像和深度数据确定尺寸以及条形码扫描和读取,如下面进一步详细描述的。例如,设备100和/或处理器220可以特别地包括引擎,该引擎被配置为使用数字图像和深度数据在相机102和深度感测设备104的视场中确定对象尺寸以及读取条形码。
存储器222可以包括非易失性存储单元(例如,可擦除电子可编程只读存储器(“eeprom”)、闪存等)和易失性存储单元(例如,随机存取存储器(ram))。实现如本文所述的设备100的功能性教导的编程指令通常持久地保持在存储器222中并由处理器220使用,处理器220在执行这样的编程指令期间适当地利用易失性存储装置。本领域技术人员认识到,存储器222是可以存储在处理器220上可执行的编程指令的计算机可读介质的示例。此外,存储器222也是存储器单元和/或存储器模块和/或非易失性存储器的示例。
具体地,在一些实现中,存储器222可以存储应用236,当由处理器220执行时,该应用使得处理器220能够获取对象的2d预览图像,其中2d预览图像是从2d相机设备获得的。应用236还使得处理器220能够处理2d预览图像以确定一个或多个暗区域并确定该对象上的码的位置。应用236还使得处理器220能够基于该一个或多个暗区域中的一个或多个获取对象的3d图像,其中3d图像是从3d相机设备获得的。应用236还使得处理器220能够处理3d图像以确定深度数据并确定对象的尺寸。应用236还使得处理器220能够基于经处理的3d图像中的深度数据获取对象的2d数据捕获图像,其中2d数据捕获图像捕获码,并且其中2d数据捕获图像是从2d相机设备获得的。应用236还使得处理器220能够基于2d数据捕获图像来读取码。在一个实施例中,处理器220取代应用236或者除了应用236之外与专门配置的固件相接,以便执行前述功能。
处理器220可以被配置为控制显示设备126用于以下中的一个或多个:渲染来自相机102的数字图像,识别数字图像中的对象,显示解码的条形码,以及渲染对象的尺寸,假设已经确定了这些尺寸,如下面进一步详细描述的。
设备100通常包括至少一个输入设备228,该至少一个输入设备128被配置为接收输入数据,并且可以包括输入设备的任何合适的组合,包括但不限于键盘、小键盘、指示设备、鼠标、轨道轮、轨迹球、触摸板、触摸屏(例如,与显示设备126集成)等。其他合适的输入设备在本实现的范围内。在一些实现中,输入设备228和显示设备126中的一个或多个可以在设备100外部,其中处理器220经由合适的连接和/或链接与任何外部部件通信。
如所描绘的,设备100还包括任选的扬声器232或多个扬声器和任选的麦克风234(其任一个可以替代地在设备100的外部)。扬声器232包括用于将音频数据转换为声音的任何合适的扬声器,以提供可听警报、来自远程通信设备的可听通信等中的一个或多个。麦克风234包括用于接收声音和转换为音频数据的任何合适的麦克风。扬声器232和麦克风234可以组合使用以在设备100处实现电话和/或通信功能。
如所描绘的,处理器220还连接到被配置为与一个或多个通信网络(未描绘)无线通信的任选的接口224,该接口124可以实现为一个或多个无线电和/或连接器和/或网络适配器。将理解,接口224被配置为与用于实现到一个或多个通信网络的一个或多个通信链路的网络架构对应,包括但不限于通用串行总线(usb)电缆、串行电缆、无线链路、手机链路、蜂窝网络链路(包括但不限于2g、2.5g、3g、4g+,诸如通用移动电信系统(umts)、全球移动通信系统(gsm)、码分多址接入(cdma)、频分双工(fdd)、长期演进(lte)、时分双工(tdd)、tdd-长期演进(tdd-lte)、时分同步码分多址接入(td-scdma)等),无线数据、蓝牙tm链路、近场通信(nfc)链路、无线局域网(wlan)链路、wifi链路、wimax链路、基于分组的链路、因特网、模拟网络、公共交换电话网络(pstn)、接入点等,和/或组合的任何合适组合。
虽然未描绘,但是设备100还包括电源,包括但不限于电池、电源组等,和/或到主电源和/或电源适配器的连接(例如,交流电至直流电(ac至dc)适配器)。通常,电源向设备100的部件供电。
因此,应该理解,通常可以设想用于设备100的各种配置。
现在将注意力转向图3,图3描绘了根据非限制性实现的用于使用数字图像和深度数据扫描和读取条形码的方法的流程图的框图。为了帮助解释本文描述的该方法和其他方法,将假设使用设备100,具体地通过处理器220并且当处理器220处理存储在存储器222处的指令(例如,应用236)时来执行该方法。实际上,如图1和图2中所示的设备100可以具有其他配置。此外,以下对方法的讨论将导致对设备100及其各种部件的进一步理解。然而,应该理解,本文描述的设备100和/或方法可以变化,并且不需要完全如本文所讨论的彼此结合地工作,并且这种变化是在本实现的范围内。
无论如何,要强调的是,除非另有说明,否则本文描述的方法不需要以所示的确切顺序执行。同样地,可以顺序地和/或并行地执行各种框。因此,本文描述的方法的元素在本文中称为“框”而不是“步骤”。然而,还应该理解,方法也可以在设备100的变体上来实现。
图3描绘了根据一些实现的用于条形码扫描的示例方法的流程图。如本文所描述,条形码扫描是基于一个或多个数字图像和深度数据。参见图2和图3,在框302处开始方法,其中处理器220获取对象的二维(2d)预览图像。在各种实现中,2d预览图像是从2d相机设备获得的。在框304处,处理器220处理2d预览图像以确定对象上的码(诸如条形码)的位置。在框306处,处理器220获取对象的三维(3d)图像。在各种实现中,3d图像从3d相机设备获得。
在框308处,处理器220处理3d图像以确定深度数据。在一些实现中,3d图像的处理可包括确定3d图像中对应于与条形码相关联的2d预览图像中的像素的像素。在一些实现中,3d图像的处理可包括确定3d图像中对应的像素的深度值。在各种实现中,深度值通知2d相机102对象与2d相机102之间的距离为何,这帮助2d相机102更好地聚焦在对象上。
在框310处,处理器220基于经处理的3d图像中的深度数据来获取对象的2d数据捕获图像。在各种实现中,2d数据捕获图像捕获码,并且从2d相机设备获得2d数据捕获图像。
在一些实现中,处理器220基于经处理的3d图像中的深度数据获取对象的2d数据捕获图像,因为处理器220基于经处理的3d图像中的深度数据将2d相机设备的透镜聚焦在码上,该深度数据可用于确定2d相机设备的焦距。然后,处理器220在使2d相机的透镜聚焦之后获取2d数据捕获图像。
在各种实现中,处理器220向用户提供指示符(indicator),其中所述指示符基于经处理的3d图像中的深度数据指导用户定位2d相机设备以实现相对于对象的最佳的聚焦。例如,在一些实现中,指示符可以在获取数据捕获2d预览图像时指导用户相对于对象(例如,更近或更远离)最佳地定位2d相机设备。
在一些实现中,处理器220基于经处理的3d图像中的深度数据来调整条形码的2d相机分辨率。
在各种实现中,当经处理的3d图像中的深度数据超过预定深度阈值时,处理器220从2d相机裁剪码的图像。在其他实现中,当深度数据指示条形码深度小于阈值时,处理器220通过对深度值进行面元划分(binning)来降低2d相机的分辨率。在一个非限制性示例中,根据3d深度数据,处理器知道对象(例如,盒子)是接近的并且将2drgb图像从3264*2448缩小到640*480分辨率。处理器这样做是因为640*480分辨率足够用于条形码解码。降低的分辨率需要较少的计算,从而加快处理。在另一个非限制性示例中,根据3d深度数据,处理器知道盒子是远的并且条形码太小而不能在640×480的2drgb图像中读取。这可能导致失败的条形码解码。因此,处理器将2d图像分辨率调整(例如,增加)到原始的3260*2448分辨率。
在框312处,处理器220基于2d数据捕获图像读取码。在一些实现中,该码可以是条形码。在一些实现中,该码可以是一维条形码。在其他实现中,该码可以是二维条形码,诸如qr码。在又另一个实施例中,处理器220使用3d图像来定位目标对象,并且然后基于由2d相机设备随后获取的2d数据捕获图像来搜索和解码在目标对象上的条形码。
图4描绘了根据一些实现的用于确定尺寸的示例方法的流程图。如本文所描述,确定尺寸是基于一个或多个数字图像和深度数据。参见图2和图4两图,在框402处开始方法,其中处理器220获取对象的二维(2d)预览图像。如上所指示,2d预览图像是从2d相机设备获得的。
在框404处,处理器220处理2d预览图像以确定一个或多个暗区域。
在框406处,处理器220基于经处理的2d预览图像中的该一个或多个暗区域来获取对象的三维(3d)图像。在一些实现中,3d图像的获取是基于2d预览图像的获取,因为一起执行3d图像的获取和2d预览图像的获取。
如上所指示,3d图像是从3d相机设备获得的。如上所指示,3d相机设备是红外相机设备。
在各种实现中,处理器220可以响应于暗区域来调整3d图像。例如,在一些实现中,处理器220可基于经处理的2d预览图像中的该一个或多个暗区域来调整3d图像的曝光时间、3d图像的增益或其组合。在一些实现中,对于不同的暗区域,曝光值可以是不同的。为了进一步解释,例如,在利用无源立体视觉系统的一些实现中,需要充足的光来实现3d重建。因此,通过结合2d相机输入,处理器确定光在目标盒处是否充足。如果环境光不是充足的,则目标是暗的或黑色的,并且然后无源立体视觉系统可能无法提供3d数据。在这种情况下,处理器调整3d相机的图像信号处理(isp)以调整曝光时间和/或增益,以从目标获得充足的亮度。在一些实现中,使用结构化光系统(诸如结构化ir),暗材料可为黑色的并吸收大部分可见光和ir光。在2d相机中,这种材料是暗的或黑色的。在3d结构化光系统中,因为大部分ir被吸收,所以由3d传感器从暗色区域反射和接收较少的ir信号。因此,这种类型的材料在2d图像和3d深度映射图像两者中都是暗的。在这两种实现中,处理器可以调整3d相机设备的曝光和/或增益以增强3d图像数据的获取。
在一些实现中,为了处理3d图像,处理器220可识别对象的一个或多个表面。然后,处理器220基于该一个或多个表面确定感兴趣的区。在一些实现中,例如,用户可以使用预览图像中的十字线来确定感兴趣的区(roi)。用户可以调整传感器位置以将十字线定位在盒子表面中一个盒子表面上。这可以帮助处理器定位目标。如上所指示,处理器220然后可以基于经处理的2d预览图像调整3d图像的曝光时间、3d图像的增益或其组合。在一些实现中,处理器220然后可基于对象的该一个或多个表面确定对象的尺寸。
在框408处,处理器220处理3d图像以确定对象的尺寸。
在一些实现中,处理器220可使得对象的尺寸被显示在显示设备上。在一些实现中,处理器220可使得对象的2d数据捕获图像与所确定的尺寸一起被显示在显示设备上。
图5描绘了根据一些实现的用于条形码扫描和确定尺寸的示例方法的流程图。如本文所描述,条形码扫描和确定尺寸是基于一个或多个数字图像和深度数据。参考图2和图5两者,在框502处,处理器220获取对象的2d预览图像。如上所指示,2d预览图像是从2d相机设备获得的。
在框504处,处理器220处理2d预览图像以确定一个或多个暗区域和对象上的码的位置。
在框506处,处理器220基于该一个或多个暗区域中的一个或多个来获取对象的3d图像。如上所指示,3d图像是从3d相机设备获得的。
在框508处,处理器220处理3d图像以确定深度数据并确定对象的尺寸。
在框510处,处理器220基于经处理的3d图像中的深度数据来获取对象的2d数据捕获图像。在各种实现中,利用对象(例如,盒子)的3d位置和尺寸,建立边界以用于搜索在那些边界内的条形码。在各种实现中,2d数据捕获图像捕获码,并且如上所指示,从2d相机设备获得2d数据捕获图像。
在框512处,处理器220基于2d数据捕获图像读取码。
替代地,和/或另外地,处理器220可以在存储器222处存储对象的数字图像和尺寸中的一个或多个。替代地,和/或另外地,处理器220可以使用接口224将对象的数字图像和尺寸中的一个或多个传输到例如外部设备和/或远程设备。对象的数字图像和尺寸中的一个或多个的这种传输可以与基于云的仓储、航运、库存、零售和/或保健应用和/或其他的基于云的功能连同发生。
在一些实施例中,可以通过本文描述的方法使用2d相机和3d相机数据并行地且基本上同时地实现对象大小(诸如盒子大小)的测量和解码对象上的条形码。
图6描绘了根据一些实现的用于条形码扫描和确定尺寸的示例工作流的框图。如本文所描述,条形码扫描和确定尺寸是基于一个或多个数字图像和深度数据。如所图示,2d相机602提供2d图像604。由箭头606、608和610表示从2d图像604得到的流。3d相机612提供3d数据614。由箭头616、618和620表示从3d数据614得到的流。箭头606指示2d图像604产生关于在2d图像604的感兴趣的区(roi)内的暗区域的信息。如所图示,在各种实现中,关于暗区域的信息与3d数据614组合。箭头616指示3d数据614产生相对于视场中的对象的深度映射和范围信息。如所图示,在各种实现中,深度映射和范围信息与与2d图像604相关联的信息组合。在各种实现中,深度映射包括2d图像,其中2d图像中的每个像素表示从传感器到对象上的该特定点的范围。
在各种实现中,可以使用来自2d图像604和3d数据614两者的输入来获得预览图像622。这分别由箭头608(2d)和箭头618(3d)指示。在一些实现中,可叠加或组合来自2d和3d输入的数据以为用户提供指导。例如,指导可以引导用户将设备100(例如,2d和3d相机)移动得更靠近或更远离对象。在一些实现中,3d图像中的对应的像素与2d图像中的像素关联,且读取深度值。在一些实现中,3d相机提供到对象的范围深度信息。在一些实现中,条形码解码范围(例如,聚焦的范围)在0.5米到5米之间。在一些实现中,如果对象在经由2d成像器的条形码解码的范围之外,则深度信息被用于向用户提供错误消息。在一些实现中,由低反射率、过度曝光或在范围之外引起的“非数字”(notanumber;nan)区域在2d和3d图像数据(其可被显示为图像预览)中被重叠,并且被利用以引导用户在随后的捕获图像中相应地避免或调整曝光和增益选择。在各种实现中,处理3d数据614以产生各种类型的信息。例如,在一些实现中,可以处理3d数据以获得用于2d相机的范围限制。范围限制继而可用于优化聚焦并提供自动聚焦能力。通常,2d彩色图像对于瞄准目的而言更直观。在一些实现中,使用十字线来选择感兴趣的区并选择感兴趣的对象(其可包括条形码)来完成瞄准。
在各种实现中,可以使用来自2d图像604和3d数据614两者的输入来获得数据捕获图像624,2d图像604和3d数据614可以如上所概述被处理以确定对象的深度数据、范围信息和尺寸等。这由箭头610(2d)和箭头620(3d)指示。在一些实现中,从2d相机设备获得的并且捕获码或条形码的2d捕获图像是基于经处理的3d图像中的深度数据。利用2d和3d数据的组合来实现更高的性能。作为示例,可以根据来自3d图像的深度数据将2d相机透镜聚焦到条形码。此外,基于深度数据,如果深度小于阈值,即条形码足够地接近,则可以通过在将其发送到解码器用于解码之前使用面元划分减小分辨率来增加产量。相应地,如果深度大于阈值,则可以通过在将数据提供给解码器以用于解码之前裁剪条形码来增加分辨率。
图7描绘了根据一些实现的渲染物理对象的数字图像及其尺寸和条形码读出的示例用户界面700。用户界面700示出了涵盖对象704的视场的2d图像702,在对象704上可以具有条形码706。十字线707指示在对象704的顶部表面709上。在一些实现中,十字线707指示用户对感兴趣的区(roi)的选择。在一些实现中,roi可以仅包括对象704的所选择的部分或表面。一旦选择了roi,系统就可以确定对象704(例如,整个对象704)的剩余部分。还示出的是条形码读取708和尺寸710。在各种实现中,尺寸可包括长度、宽度和高度。
在一些实现中,系统可以响应于用户选择测量按钮712来执行条形码扫描和确定尺寸,从而提供条形码706和尺寸。在一些实现中,用户界面700可以提供下拉菜单714以使用户能够选择图像的类型。例如,下拉菜单714在被选择时可以取决于特定的实现显示诸如“彩色图像”、“黑白图像”、“深度映射”等的选项。在一些实现中,用户界面700可以包括用于保存2d图像702的按钮716和用于保存相关联的深度映射的按钮718。注意,虽然未示出深度映射渲染,但如本文的各种实现中所述,处理器220仍然生成深度映射,其可以任选地经由用户界面700被显示和/或被保存。
本文描述的实现可以利用各种已知的确定尺寸技术以用于确定尺寸。例如,在一些实现中,可以使用确定尺寸的技术,其基于相应的深度数据和属于在数字图像中识别的对象的形状的相应关联来计算对象的尺寸。在一些实现中,可以使用确定尺寸的技术,其基于从3d相机获得的与在数字图像中识别的对象相关联的3d点云数据来计算对象的尺寸。
在上述说明书中已经描述了具体实现。然而,本领域普通技术人员理解,可做出多种修改和改变而不脱离如下权利要求书所阐述的说明书的范围。因此,说明书和附图被认为是图示性的而非限定性的意义,并且所有这种修改都旨在被包括在本教导的范围内。
这些益处、优势、问题解决方案以及可能使任何益处、优势或解决方案发生或变得更为突出的(多个)任何要素不被解释成任何或所有权利要求的关键的、必需的或必要的特征或要素。本发明单独由所附权利要求书限定,包括在本申请处于未决状态期间做出的任何修改以及出版后这些权利要求的所有等效物。
此外,在该文档中,诸如第一和第二、顶部和底部等之类的关系术语可单独地用来将一个实体或动作与另一个实体或动作区别开,而不一定要求或暗示这些实体或动作之间具有任何实际的这种关系或顺序。术语“构成”、“构成有”、“具有”、“具备”、“包括”、“包括有”、“包含”、“含有”或它们的任何其他变型旨在覆盖非排他性的包括,使得构成、具有、包括、包含要素的列表的过程、方法、物品或装置不仅包括那些要素,还可包括对这种过程、方法、物品或装置未明确列出的或固有的其他要素。以“构成有一”、“具有一”、“包括一”、“包含一”开头的要素,在没有更多约束条件的情形下,不排除在构成有、具有、包括、包含该要素的过程、方法、物品或装置中有另外的相同要素存在。术语“一”和“一个”被定义为一个或多个,除非本文中另有明确声明。术语“基本上”、“本质上”、“近似”、“大约”或这些术语的任何其他版本被定义为如本领域内技术人员理解的那样接近,并且在一个非限定性实现中,这些术语被定义为在10%内,在另一实现中在5%以内,在另一实现中在1%以内,而在另一实现中在0.5%内。本文中使用的术语“耦合的”被定义为连接的,尽管不一定是直接连接的也不一定是机械连接的。以某种方式“配置的”设备或结构至少以该种方式进行配置,但也可以未列出的方式进行配置。
将理解,一些实现可包括诸如微处理器、数字信号处理器、定制的处理器和现场可编程门阵列(fpga)之类的一个或多个通用或专用处理器(或“处理设备”)以及唯一存储的程序指令(包括软件和固件两者),所述唯一存储的程序指令控制一个或多个处理器以连同某些非处理器电路实现本文所描述的方法和/或装置的一些、多数或全部功能。替代地,一些或全部功能可由无存储程序指令的状态机来实现,或者在一种或多种专用集成电路(asic)中实现,其中各种功能或某些功能的某些组合被实现为定制逻辑。当然,也可使用这两种方法的组合。
此外,实现可被实现为计算机可读存储介质,该计算机可读存储介质具有存储在其上的计算机可读代码,用于对(例如包括处理器的)计算机编程以执行如本文所描述和要求保护的方法。这种计算机可读存储介质的示例包括但不限于硬盘、光盘只读存储器(cd-rom)、光存储器件、磁存储器件、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)以及闪存。此外,预期本领域普通技术人员虽然做出由例如可用时间、当前技术和经济考虑促动的可能显著的努力以及许多设计选择,但在得到本文所公开的构思和原理指导时,将容易地能以最少的试验产生此类软件指令和程序以及ic。
提供本公开的摘要以允许读者快速地明确本技术公开的性质。提交该摘要,并且理解该摘要将不用于解释或限制权利要求书的范围或含义。另外,在前述的详细描述中,可以看到,出于将本公开连成一个整体的目的而将各种特征一起组合在各种实现中。本公开的方法并不被解释为反映以下意图:所要求保护的实现需要比每项权利要求中明确表述的特征更多的特征。相反,如以下权利要求书所反映的,本发明的主题在于比单个公开的实现的全部特征少。因此,以下权利要求由此被结合入具体说明中,其中各个权利要求作为单独要求保护的主题代表其自身。