具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请部分实施例进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。然而,本领域的普通技术人员可以理解,在本申请的各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。
本申请的第一实施例涉及一种样本图像的集合的生成方法,该样本图像的集合的生成方法可应用于终端或者云端,终端可以是智能货柜等。云端与终端通信连接,为终端提供样本图像的集合的结果。本实施例以云端执行该样本图像的集合的生成方法为例进行说明,终端执行该样本图像的集合的生成方法的过程可以参考本申请实施例的内容。本实施例中结合智能货柜的运用场景,对该样本图像的集合的生成方法进行描述,该样本图像的集合的生成方法的具体流程如图1所示。
步骤101:获取背景图像数据,以及获取预设物品的第一三维模型。
具体的说,可以通过终端设置的摄像头获取背景图像数据,也可以通过云端的大数据获取背景图像数据,其中,背景可以是位置固定、不发生变化的物体,如智能货柜内的货架。可以是直接从云端获取预设物品的第一三维模型;也可以是获取预设物品的二维图像数据,根据获取的预设物品的二维图像数据,构建预设物品的第一三维模型,当然,可以获取多张预设物品的二维图像数据,以便可以准确地构建出预设物品的第一三维模型。其中,预设物品可以是放置在背景中的一个物品,如:一个可乐,也可以是多个不同的物品,如:分别放置在货柜上的可乐、牛奶和薯片。
步骤102:分别按照不同的位姿将第一三维模型与该背景图像数据叠加,基于每次叠加的结果确定样本图像的集合,其中,每个样本图像中包括对第一三维模型的标注信息。
一个具体的实现中,分别对预设物品的第一三维模型进行N次位姿设置,其中,每次设置的位姿不同,N为大于0的整数;分别按照每次设置的位姿将第一三维模型与该背景图像数据叠加,并对每次叠加所得结果进行渲染,得到包含N个样本图像的集合。
下面详细介绍分别对预设物品的第一三维模型进行N次位姿设置的过程。
具体的说,将预设物品的第一三维模型导入虚拟场景中,虚拟场景用于放置第一三维模型或者背景图像数据。在虚拟场景中对预设物品的第一三维模型进行设置,得到具有不同位姿的第一三维模型。
若预设物品包括不同的物品,那么对预设物品的第一三维模型进行一次位姿设置的过程如下:设置每种物品待叠加的第一三维模型的数目;分别以每种物品的第一三维模型为模板,按照该模板生成每种物品对应的数目的待叠加的第一三维模型;为每一个生成的待叠加的第一三维模型设置对应的位姿。
具体的说,可以根据实际需要预先设置每种物品待叠加的第一三维模型的数目,还可以是随机设置每种物品待叠加的第一三维模型的数目;为了加快生成样本图像的集合的速度,本实施例采用随机设置每种物品待叠加的第一三维模型的数目的方式,例如,预设物品为牛奶、可乐和方便面,则随机设置牛奶的待叠加的第一三维模型的数目为A、可乐的待叠加的第一三维模型的数目为B以及方面便的待叠加的第一三维模型的数目为C。
以每种物品的第一三维模型为模板,按照每种物品设置的对应数目,复制每种物品的第一三维模型,得到每种物品的待叠加的第一三维模型,例如,预设物品为牛奶和可乐,且设置了每种物品对应的待叠加的第一三维模型的数目,复制牛奶的第一三维模型,生成A个该牛奶待叠加的第一三维模型;复制可乐的第一三维模型,生成B个该可乐待叠加的第一三维模型。为每一个生成的待叠加的第一三维模型设置对应的位姿,可以按照一定的规律设置,如每个待叠加的三维模型等距排列,呈M×K的矩阵的形状,M和K为大于1的整数,且M和K具体的值是根据总的三维模型的数目确定的。还可以是随机生成每一个待叠加的第一三维模型的位姿当然,为了符合实际情况,提高生成的样本图像的集合的准确性,预先存储不符合实际情况的预设位姿,并从随机产生的位姿中删除预设位姿,例如:预设位姿可以是第一三维模型相对于货柜背景出现悬空的位姿、倒挂的位姿,或者高度低的第一三维模型放置在高的第一三维模型的中间的位姿。重复N次对预设物品的第一三维模型的处理过程即可得到预设物品N次设置的位姿。
可以理解的是,若预设物品只包含一个物品,上述设置位姿的方式大致相同,此处不再赘述。
一个具体的实现中,在进行N次位姿设置后,为每个生成的待叠加的第一三维模型添加碰撞盒,该碰撞盒用于为第一三维模型增加对应的物理作用力,防止相邻的待叠加的第一三维模型重叠。
通过为每一个生成的待叠加的第一三维模型添加碰撞盒,使得每一个待叠加的第一三维模型具有物理作用力,相邻两个待叠加的第一三维模型只能接触,发生碰撞,但不会发生重叠,进一步模拟了实际生活中的相邻预设物品不发生重合的情况。
下面详细介绍按照一次设置的位姿将第一三维模型与该背景图像数据叠加的过程:先将背景图像数据导入该虚拟场景中,在位姿设置完之后,按照设置的位姿,调整每一个待叠加的第一三维模型的位姿;再将调整好位姿的待叠加的第一三维模型与该背景图像数据叠加,并对此次叠加结果进行渲染,得到一个包含背景和预设物品的第一三维模型的二维图像。
值得一提的是,得到一个包含背景和预设物品的第一三维模型的二维图像之后,对该渲染得到的二维图像进行标注,使得样本图像的集合中每一个样本图像数据中均包含有对第一三维模型的标注信息,标注信息是根据深度缓存信息以及预设物品对应的预设标识确定,其中,深度缓存信息是根据第一三维模型得到。
具体的说,对第一三维模型的标注信息可以是该第一三维模型的二维轮廓、最小包围矩形等。下面以一个例子具体说明对第一三维模型进行标注的过程。例如,若预设物品为牛奶和可乐,那么深度缓存信息可以从生成每种物品的待叠加的第一三维模型的三维引擎处读取。当在渲染得到一个包含有背景和预设物品的二维图像后,获取牛奶对应的预设标识(黄色的框)和可乐对应的预设标识(红色的框),根据预设标识对渲染得到二维图像中的每一个三维模型的二维图像进行标注,即对牛奶的二维图像轮廓标上一个黄色的框,对可乐的二维图像轮廓标上一个红色的框,完成标注即可输出该样本图像。
由于无需人工对渲染后的图像进行标注,节省了大量的人力和时间,同时因减少了人工的标注操作,避免样本图像的数量大而导致人工标注出现错误的情况,提高了样本图像中标注信息的准确性。
相对于现有技术而言,本申请部分实施例中将预设物品的第一三维模型分别按照不同的位姿与背景图像数据叠加,基于每次叠加的结果形成样本图像的集合;由于无需人工对背景场景中不同位姿的预设物品进行拍摄,也无需每次拍摄时人工调整预设物品的位姿,大大提高了样本图像数据的集合生成的速度;同时,由于仅需要获取一次背景图像数据,获取一次预设物品的第一三维模型,即可产生大量的样本图像,减少了人工操作,降低了对样本图像的采集难度,提高了样本图像的集合中数据的丰富性。
本申请的第二实施例涉及一种样本图像的集合的生成方法,第二实施例是对第一实施例的进一步细化,具体说明了步骤101中获取背景图像数据的方式,以及细化了基于每次叠加的结果确定样本图像的集合的步骤。具体的流程如图2所示。
步骤201:获取背景图像数据,以及获取预设物品的第一三维模型。
具体的说,本实施例中将详细介绍通过采集设备获取背景图像数据的方式,其中,获取背景图像数据的具体流程如图3所示。
子步骤2011:采集背景的第一图像数据。
具体的说,采集背景的采集设备可以为摄像头,摄像头可以是一个,也可以是多个,摄像头可以为畸变摄像头,也可以是正常视角的摄像头,本实施例中不对摄像头的类型和数量做限制。
子步骤2012:获取采集第一图像数据的拍摄参数。
具体的说,拍摄参数包括相机拍摄的角度、畸变参数、相机位姿等信息,此处不再一一列举。可以理解的是,若摄像头为正常视角的摄像头,则拍摄参数中无畸变参数。
子步骤2013:根据第一图像数据以及拍摄参数,确定背景图像数据。
一个具体的实现中,若确定拍摄参数中包含畸变参数,且畸变参数小于预设畸变阈值,则对第一图像数据进行矫正,将矫正后的第一图像数据作为背景图像数据;若拍摄参数中包含畸变参数,且畸变参数大于预设畸变参数,或者,若拍摄参数中未包含畸变参数,则将第一图像数据作为背景图像数据。
具体的说,预设畸变阈值是根据对第一图像数据的矫正效果进行设置的,例如,畸变参数超过预设畸变阈值时,拍摄的图像在经过矫正后的效果不佳,与正常图像数据差别较大;而畸变参数未超过预设畸变阈值时,将拍摄的图像经过矫正后,可得到正常、无畸变的图像数据。
需要说明的是,对于无畸变效果的第一图像数据,可以直接作为背景图像数据;而对于畸变参数超过预设畸变阈值,得到的第一图像数据,可以将该畸变的第一图像数据以天空盒的形式作为背景图像数据,使用天空盒的形式使得模拟的背景图像数据更贴近真实的背景。
步骤202:分别按照不同的位姿将第一三维模型与该背景图像数据叠加。
本步骤中叠加过程与上述第一实施例中的叠加过程大致相同,此处不再进行赘述。
步骤203:根据拍摄参数以及预设畸变阈值,确定对叠加结果进行渲染的渲染模式和渲染参数。
一个具体的实现中,若确定拍摄参数中未包含畸变参数,或者,确定拍摄参数中包含畸变参数且畸变参数小于预设畸变参数,则确定渲染模式为第一渲染模式,以及确定该第一渲染模式对应的第一渲染参数为拍摄参数。其中,第一渲染模式的定义为:按照第一渲染参数对叠加结果中的第一三维模型和背景图像数据同时进行渲染。
具体的说,第一渲染模式是在虚拟场景中采用虚拟相机对叠加结果中的第一三维模型和背景图像数据同时进行渲染,该虚拟相机采用第一渲染参数进行拍摄,为了保证渲染得到二维图像更接近于实际生活中拍摄的图像,第一渲染参数使用获取的拍摄参数(包括拍摄角度,拍摄的焦距等、相机的位姿等信息)。
若确定拍摄参数中包含畸变参数且畸变参数大于预设畸变参数,则确定渲染模式为第二渲染模式,以及确定第二渲染模数对应的第二渲染参数,第二渲染参数包括第一参数和第二参数。其中,所述第二渲染模式的定义为:分别按照第一参数对叠加结果中的第一三维模型进行渲染,得到第一渲染图像,以及按照第二参数对叠加结果中的背景图像数据进行渲染,得到第二渲染图像,将第一渲染图像和第二渲染图像叠加,第一参数为拍摄参数中去除了畸变参数之外的参数,第二参数为拍摄参数。
具体的说,若确定拍摄参数中包含畸变参数且畸变参数大于预设畸变参数,那么背景图像数据带有畸变效果,则采用两个虚拟相机分别对叠加结果中的第一三维模型和背景图像数据进行渲染,在将两个虚拟相机得到的渲染结果进行叠加。例如,虚拟相机1按照第一参数对背景图像数据进行渲染,得到第二渲染图像,第一参数为拍摄参数中去除了畸变参数之外的参数,即第一参数中没有畸变参数;虚拟相机2按照第二参数对第一三维模型进行渲染,由于第一三维模型无畸变效果,因此,按照包含有畸变参数的拍摄参数对第一三维模型进行渲染,即可得到第一渲染图像,将第一渲染图像和第二渲染图像叠加。
步骤204:基于每次叠加的结果确定样本图像的集合,其中,每个样本图像中包括对第一三维模型的标注信息。
一个具体的实现中,按照确定的渲染模式和渲染参数分别对每次叠加的结果进行渲染,得到包含所有渲染结果的集合;并根据渲染结果的集合确定样本图像的集合。
具体的说,在对每一个叠加的结果按照确认的渲染模式渲染结束后,得到包含所有渲染结果的集合。与第一实施例中类似,对每一个渲染结果中的第一三维模型进行标注,即可得到样本图像的集合,标注的过程本实施例对此不再进行赘述。
与现有技术相比,本实施例提供的样本图像的集合的生成方法,在将第一三维模型与背景图像的叠加结果进行渲染时,针对拍摄参数和预设畸变阈值,采用不同的渲染模式进行渲染,可以确保第一三维模型与背景图像可以保持相同的拍摄效果,保证背景图像和第一三维模型的对齐,使得生成的样本图像更贴近实际。
本申请的第三实施例涉及一种样本图像的集合的生成方法,第三实施例是对第二实施例的进一步改进,主要改进之处在于,本实施例中,在分别按照不同的位姿将第一三维模型与背景图像数据叠加之后,且在基于每次叠加的结果确定样本图像的集合之前,在每次叠加的结果中增加光照信息。具体的流程如图4所示。
步骤401:获取背景图像数据,以及获取预设物品的第一三维模型。
步骤402:对预设物品的二维图像数据进行反向渲染,获取预设物品的第一材质参数。
具体的说,采用反向渲染技术即可获取到预设物品的第一材质参数。第一材质参数,如,反向渲染得到的材质为皮革材质,读取该皮革材质中的反射、漫反射等参数信息。反向渲染的技术本实施例中不再进行赘述。
步骤403:按照第一材质参数调整第一三维模型的第二材质参数。
步骤404:分别按照不同的位姿将第一三维模型与该背景图像数据叠加。
步骤405:根据拍摄参数以及预设畸变阈值,确定对叠加结果进行渲染的渲染模式和渲染参数。
步骤406:对预设物品的二维图像数据进行反向渲染,获取预设物品的光照信息。
步骤407:对每次叠加的结果中增加光照信息。
具体的说,对每次叠加的结果中增加光照信息,例如,对叠加的结果中的第一三维模型增加光照信息,也可以是在进行叠加的虚拟场景中直接添加该光照信息。每一个三维模型的位姿不同,在同一光照下,对该光照的反射、漫反射不同,导致有不同的光影效果,同时,不同物品的第一三维模型,受到第二材质参数的影响,对同一光照信息,也有不同的光影效果。
步骤408:基于每次叠加的结果确定样本图像的集合,其中,每个样本图像中包括对第一三维模型的标注信息。
需要说明的是,本实施例中的步骤401、步骤404、步骤405以及步骤408与第二实施例中的201、步骤202、步骤203以及步骤204大致相同,此处不再进行赘述。
与现有技术相比,本实施例提供的方法,根据预设物品的二维图像,获取光照信息,对叠加的结果中增加光照信息,使得最后获取的样本图像的更加逼真。
本申请的第四实施例涉及一种样本图像的集合的生成装置50,包括:获取模块501和集合生成模块502,具体结构如图5所示:
获取模块501用于获取背景图像数据,以及获取预设物品的第一三维模型;集合生成模块502用于分别按照不同的位姿将第一三维模型与背景图像数据叠加,基于每次叠加的结果确定样本图像的集合,其中,每个样本图像中包括对第一三维模型的标注信息。
本实施例是与上述样本图像的集合的生成方法对应的虚拟装置实施例,上述方法实施例中技术细节在本实施例中依然适用,此处不再赘述。
需要说明的是,以上所述的装置实施例仅仅是示意性的,并不对本申请的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的,此处不做限制。
本申请的第五实施例涉及一种电子设备,其结构如图6所示。包括:至少一个处理器601;以及,与至少一个处理器601通信连接的存储器602。存储器602存储有可被至少一个处理器601执行的指令。指令被至少一个处理器601执行,以使至少一个处理器601能够执行上述的样本图像的集合的生成的方法。
本实施例中,处理器以中央处理器(Central Processing Unit,CPU)为例,存储器以可读写存储器(Random Access Memory,RAM)为例。处理器、存储器可以通过总线或者其他方式连接,图6中以通过总线连接为例。存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述样本图像的集合的生成方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器中,当被一个或者多个处理器执行时,执行上述任意方法实施例中样本图像的集合的生成方法。
上述产品可执行本申请实施例所提供的样本图像的集合的生成方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的样本图像的集合的生成方法。
本申请的第六实施例涉及一种计算机可读存储介质,该可读存储介质为计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,该计算机指令使计算机能够执行本申请第一至第三方法实施例中任意实施例涉及的样本图像的集合的生成方法。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施例是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。