具体实施方式
为使本说明书实施例的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书实施例保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
实施例一
参照图1所示,为本说明书实施例提供的确定交互目标与机器人之间距离的方法步骤示意图,该所述方法包括以下步骤:
步骤102:获取交互目标在拍摄场景下的图像以及与所述图像对齐的深度图。
其中,所述交互目标可以是与机器人(以下简称检测机器人)进行消息交互的人或是交互机器人,该交互机器人与人具有类似的外形结构,例如,有头部、四肢、躯干等。
应理解,在检测机器人上集成有用于采集图像的摄像头以及用于处理图像的处理器。具体实现时,可以利用摄像头实时采集交互目标在拍摄场景下的RGB图像,同时,还要获取与该RGB图像对齐后的深度图。具体实现时,可以利用现有的双目摄像头获取与RGB图像对齐后的深度图,其实,本说明书实施例也可以采用其它确定深度图的方式获取与交互目标的RGB图像对齐后的深度图。
步骤104:基于所述图像以及所述深度图提取所述交互目标所在矩形框区域的深度数据。
一种可实现的方案,步骤104在基于所述图像以及所述深度图提取所述交互目标所在矩形框区域的深度数据时,具体可以包括以下步骤:
第一步,利用人体检测算法从所述图像中确定所述交互目标对应的矩形框区域。
在本说明书实施例中,人体检测算法可以是,利用背景建模算法提取出运动的前景目标(即交互目标),然后利用分类器对交互目标进行分类,判断是否包含交互目标,一般指行进中的人或机器人。其中,常用的背景建模算法有:高斯混合模型、帧差分算法等,基本思路是通过帧学习得到一个背景模型,然后用当前帧与背景帧进行比较,得到运动的目标,即图像中交互目标所在的矩形框区域。
第二步,从与所述图像对齐的深度图中提取所述矩形框区域的深度数据。
在确定交互目标对应的矩形框区域后,可以基于矩形框区域所在位置坐标以及与RGB图像对齐后的深度图中各像素点的深度数据,从深度图中提取交互目标所在的矩形框区域的深度数据。具体实现时,可以是每个像素点对应一个位置坐标,该坐标包含在深度图中的行坐标、纵坐标,以及深度坐标。其中,深度坐标对应的值可以作为像素点的深度数据。
从而可以基于人体检测算法准确从深度图中提取交互目标所在矩形框区域的深度数据。
步骤106:基于预设第一容差对所述矩形框区域进行行或列扫描,统计每一行或每一列中最高频次的深度数据。
一种可实现的方案,步骤106在基于预设第一容差对所述矩形框区域进行行或列扫描,统计每一行或每一列中最高频次的深度数据时,具体包括:基于预设第一容差,依次对所述矩形框区域进行行扫描或列扫描,确定每一行或每一列中深度数据的频次;统计每一行或列中最高频次对应的深度数据。
具体实现时,如果先扫描行,则针对每一行深度数据,如果当前扫描到的深度数据是当前所在行的第一个深度数据,则为所述深度数据计数一个频次;否则,判断当前扫描到的深度数据与上一次计数对应的深度数据之差是否小于预设第一容差,若是,则为上一次计数对应的深度数据累加一个频次,若否,则为所述深度数据计数一个频次;直至扫描完当前行;或者,
如果先扫描列,则针对每一列深度数据,如果当前扫描到的深度数据是当前所在列的第一个深度数据,则为所述深度数据计数一个频次;否则,判断当前扫描到的深度数据与上一次计数对应的深度数据之差是否小于预设第一容差,若是,则为上一次计数对应的深度数据累加一个频次,若否,则为所述深度数据计数一个频次;直至扫描完当前列。
举例说明,可以对矩形框区域的像素点进行行扫描,统计每一行中各个深度数据出现的频次,并统计每一行中最高频次对应的深度数据。假设该矩形框区域一共有10行10列,分别对每一行进行扫描,第一行中分别扫描第1-10列的深度数据(单位可以是mm或其它,在此仅作为示例,不作为限制):1713、1731、1750、1761、1767、1782、1765、1745、1795、1789。若设定容差为2cm,那么,处理过程可以为:扫描到第一个深度数据1713,累计频次为1;扫描到第二个深度数据1731,与第一个深度数据容差在2cm内,满足容差条件,则累计频次为2,此时,计算一次深度数据为(1731*1+1713*1)/2=1722;扫描到第三个深度数据1750,与计算的深度数据1722容差大于2cm,则单独计数频次为1;扫描到第四个深度数据1761,与第三个深度数据1750容差小于2,累计频次为2,对应深度数据(1750*1+1761*1)/2=1755.5;扫描到第五个深度数据1767,与计算的深度数据1755.5容差小于2,累计频次为3,对应深度值(1755.5*2+1767*1)/3=1759.3,依次类推,最终,扫描确定出第一行中出现频次最高的深度数据是1759.3,出现频次为3。按照这样的方式分别对剩余的2-10行进行扫描,最终可以确定:第二行中出现频次最高的深度数据是1726,出现频次为5,第三行中出现频次最高的深度数据是1751,出现频次为2,第四行中出现频次最高的深度数据是1754.5,出现频次为4,第五行中出现频次最高的深度数据是1756.5,出现频次为4,第六行中出现频次最高的深度数据是1764.5,出现频次为3,第七行中出现频次最高的深度数据是1774.5,出现频次为6,第八行中出现频次最高的深度数据是1754.5,出现频次为4,第九行中出现频次最高的深度数据是1756.5,出现频次为3,第十行中出现频次最高的深度数据是1756.5,出现频次为2。
上述举例是以先扫描行为例,扫描列的方式类似,在此不作赘述。应理解,在统计深度数据时,同时统计每个深度数据出现的频次。另外,在本说明书实施例中,统计得到的深度数据,可以是扫描到的真实深度数据,也可以是基于扫描到的至少两个真实的深度数据加权处理得到的平均值。
在步骤106统计每一行或列中最高频次对应的深度数据之后,考虑到由于人体的非刚性及人体结构的特殊性,会有很多脏数据,无法进行后续的一系列分析,因此,为了保证扫描结果的精准性,所述方法还包括:
步骤108:对统计得到的深度数据进行过滤。
在本说明书实施例中,过滤的具体方式可以包括:将统计所有行得到的深度数据中频次与列数之间的比值小于阈值的深度数据滤掉;或者,将统计所有列得到的深度数据中频次与行数之间的比值小于阈值的深度数据滤掉。
举例说明,假设阈值为50%,那么,如果统计扫描结果得到的深度数据在扫描所在行或列出现的频次占比小于该阈值,则说明该深度数据无效,可以过滤掉,从而,保证统计得到的扫描结果的精准率,减少后续对无效数据的处理,提升处理效率。
应理解,当先进行行扫描后,统计得到的深度数据的个数即为扫描的总行数,当先进行列扫描后,统计得到的深度数据的个数即为扫描的总列数。
步骤110:基于预设第二容差对过滤后的深度数据进行扫描,统计频次最高和次高的深度数据。
具体实现时:如果当前扫描到的深度数据是过滤后的深度数据中的第一个深度数据,则为所述深度数据计数一个频次;如果当前扫描到的深度数据不是过滤后的深度数据中的第一个深度数据,判断当前扫描到的深度数据与上一次计数对应的深度数据之差是否小于预设第二容差,若是,则为上一次计数对应的深度数据累加一个频次,若否,则为所述深度数据计数一个频次,直至扫描完所述统计得到的深度数据;统计本次扫描后频次最高和次高的深度数据。
在本说明书的另一个实施例中,在统计本次扫描后频次最高和次高的深度数据时,可以按照第一次行扫描或列扫描时的统计方式,将统计得到的深度数据组成一维向量,并按照一维向量中各个深度数据出现的频次由高到低进行排序。
仍基于上述举例,将统计得到的深度数据中出现频次小于等于2的深度数据滤掉:[1759.3,1726,1754.5,1756.5,1764.5,1774.5,1754.5,1756.5],然后按照上述举例中行扫描的处理方式进行再次扫描,假设本次扫描的预设第二容差也是2cm,则得到的深度数据中最后假设计算得到1763.5出现的频次是5次,频次最高,1759.3出现的频次是2,频次次高,而1726出现的频次是1,频次最低,可以组成一维向量:[1759.3,1726,1763.5],之后,可以按照频次高低进行排序,得到:f(1763.5)>f(1759.3)>f(1726),其中,f(x)表示频次,x表示深度数据,其中,f(x)具体可以表示为深度数据x的频次。
应理解,上述所举例仅作为示例说明,在具体的方案中,深度数据的数量较大,这里的行列数目举例对本方案不构成限定。
步骤112:判断所述矩形框区域的尺寸比是否满足预置人体尺寸比。如果是,则执行步骤114;否则,执行步骤116。
具体实现时,可以判断所述矩形框区域的宽高比是否满足预置人体宽高比,或者,判断所述矩形框区域的高宽比是否满足预置人体高宽比。
应理解,在本说明书实施例中,预置人体宽高比或预置人体高宽比可以是基于经验值设置,在此不举例具体值。
步骤114:将最终统计得到的深度数据中频次最高的深度数据确定为交互目标与机器人之间距离。
在本说明书实施例中,如果矩形框区域的宽高比满足预置人体宽高比,则表示矩形框区域中的交互目标是正常的位姿(站立),没有异常动作,此时,取统计得到的深度数据中频次最高的深度数据作为实际距离,基于上述实例,可以将频次最高的50作为交互目标与机器人之间距离。
步骤116:将最终统计得到的深度数据中频次次高的深度数据确定为交互目标与机器人之间距离。
反之,如果矩形框区域的宽高比不满足预置人体宽高比,则表示矩形框区域中的交互目标是异常的位姿(例如,叉腰、坐姿、伸手、伸腿、挥动手臂等),此时,取统计得到的深度数据中频次次高的深度数据作为实际距离,基于上述实例,可以将频次次高的52作为交互目标与机器人之间距离。
下面分别以两种扫描方式介绍本说明书中确定交互人与机器人之间距离的方案。
参照图2a所示,以先对矩形框区域进行行扫描为例,可以包括以下步骤:
步骤202a:获取交互人的RGB图像。
步骤204a:基于人体检测算法确定交互人在RGB图像中的矩形框区域。
步骤206a:获取与所述RGB图像对齐后的深度图。
步骤208a:从所述深度图中提取矩形框区域的深度数据。
步骤210a:对矩形框区域进行行扫描,统计每行中各个深度数据出现的频次,以出现频次最高的深度数据作为扫描结果。
步骤212a:过滤扫描结果中的无效数据。
步骤214a:再次扫描过滤后的深度数据,统计各个深度数据在本次扫描中出现的频次,并按照频次高低进行排序。
步骤216a:计算矩形框区域的宽高比。
步骤218a:判断计算得到的宽高比是否满足正常宽高比。如果满足,则执行步骤220a,否则,执行步骤222a。
步骤220a:取最高频次的深度数据作为交互人与机器人之间的距离。
步骤222a:取次高频次的深度数据作为交互人与机器人之间的距离。
参照图2b所示,以先对矩形框区域进行列扫描为例,可以包括以下步骤:
步骤202b:获取交互人的RGB图像。
步骤204b:基于人体检测算法确定交互人在RGB图像中的矩形框区域。
步骤206b:获取与所述RGB图像对齐后的深度图。
步骤208b:从所述深度图中提取矩形框区域的深度数据。
步骤210b:对矩形框区域进行列扫描,统计每列中各个深度数据出现的频次,以出现频次最高的深度数据作为扫描结果。
步骤212b:过滤扫描结果中的无效数据。
步骤214b:再次扫描过滤后的深度数据,统计各个深度数据在本次扫描中出现的频次,并按照频次高低进行排序。
步骤216b:计算矩形框区域的宽高比。
步骤218b:判断计算得到的宽高比是否满足正常宽高比。如果满足,则执行步骤220b,否则,执行步骤222b。
步骤220b:取最高频次的深度数据作为交互人与机器人之间的距离。
步骤222b:取次高频次的深度数据作为交互人与机器人之间的距离。
应理解,在本说明书实施例中,执行方法时的顺序并不按照步骤序列号。
在本说明书实施例中,先采用人体检测算法确定交互目标所在的矩形框区域,再从深度图中提取矩形框区域的深度数据,然后分别按照行扫描或列扫描的方式减少分析复杂度,并对扫描统计得到的深度数据进行过滤,进而,根据过滤后得到的深度数据出现频次准确确定交互目标与机器人之间的距离,在保证实时采集确定距离的同时,还可以适用于多种位姿及场景。
实施例二
参照图3所示,为本说明书实施例提供的一种确定交互目标与机器人之间距离的装置300的结构示意图,所述装置300可以包括以下模块:
获取模块302,用于获取交互目标在拍摄场景下的图像以及与所述图像对齐的深度图;
提取模块304,用于基于所述图像以及所述深度图提取所述交互目标所在矩形框区域的深度数据;
统计模块306,用于基于预设第一容差对所述矩形框区域进行行或列扫描,统计每一行或每一列中最高频次的深度数据;
过滤模块308;用于在统计模块306统计每一行或列中最高频次对应的深度数据之后,对统计得到的深度数据进行过滤;
所述统计模块306,还用于基于预设第二容差对过滤后的深度数据进行扫描,统计频次最高和次高的深度数据;
判断模块310,用于判断所述矩形框区域的尺寸比是否满足预置人体尺寸比;
确定模块312,用于在所述判断模块判断结果为是时,将最终统计得到的深度数据中频次最高的深度数据确定为交互目标与机器人之间距离;以及,
用于在所述判断模块判断结果为否时,将最终统计得到的深度数据中频次次高的深度数据确定为交互目标与机器人之间距离。
可选地,一种可实现的方案,所述提取模块304在基于所述图像以及所述深度图提取所述交互目标所在矩形框区域的深度数据时,具体用于:
利用人体检测算法从所述图像中确定所述交互目标对应的矩形框区域;从与所述图像对齐的深度图中提取所述矩形框区域的深度数据。
本说明书一种可实现的方案,所述统计模块306在基于预设第一容差对所述矩形框区域进行行或列扫描,统计每一行或每一列中最高频次的深度数据时,可具体用于:
基于预设第一容差对所述矩形框区域进行行扫描或列扫描,确定每一行或每一列中深度数据的频次;统计每一行或列中最高频次对应的深度数据。
本说明书中再一种可实现的方案,所述统计模块306在基于预设第一容差,依次对所述矩形框区域进行行扫描或列扫描,确定每一行或每一列中深度数据的频次时,具体用于:
针对每一行深度数据,如果当前扫描到的深度数据是当前所在行的第一个深度数据,则为所述深度数据计数一个频次;否则,判断当前扫描到的深度数据与上一次计数对应的深度数据之差是否小于预设第一容差,若是,则为上一次计数对应的深度数据累加一个频次,若否,则为所述深度数据计数一个频次;直至扫描完当前行;或者,
针对每一列深度数据,如果当前扫描到的深度数据是当前所在列的第一个深度数据,则为所述深度数据计数一个频次;否则,判断当前扫描到的深度数据与上一次计数对应的深度数据之差是否小于预设第一容差,若是,则为上一次计数对应的深度数据累加一个频次,若否,则为所述深度数据计数一个频次;直至扫描完当前列。
本说明书中再一种可实现的方案,所述过滤模块308在对统计得到的深度数据进行过滤时,具体用于:
将统计所有行得到的深度数据中频次与列数之间的比值小于阈值的深度数据滤掉;或者,将统计所有列得到的深度数据中频次与行数之间的比值小于阈值的深度数据滤掉。
本说明书中再一种可实现的方案,所述统计模块306在基于预设第二容差对过滤后的深度数据进行扫描,统计频次最高和次高的深度数据时,具体用于:
如果当前扫描到的深度数据是过滤后的深度数据中的第一个深度数据,则为所述深度数据计数一个频次;如果当前扫描到的深度数据不是过滤后的深度数据中的第一个深度数据,判断当前扫描到的深度数据与上一次计数对应的深度数据之差是否小于预设第二容差,若是,则为上一次计数对应的深度数据累加一个频次,若否,则为所述深度数据计数一个频次,直至扫描完所述统计得到的深度数据;统计本次扫描后频次最高和次高的深度数据。
本说明书中再一种可实现的方案,所述装置300还包括:排序模块;所述排序模块用于在所述统计模块对统计得到的深度数据进行过滤之后,基于频次高低对统计得到的深度数据进行排序。
本说明书中再一种可实现的方案,所述判断模块310在判断所述矩形框区域的尺寸比是否满足预置人体尺寸比时,具体用于:
判断所述矩形框区域的宽高比是否满足预置人体宽高比,或者,判断所述矩形框区域的高宽比是否满足预置人体高宽比。
在本说明书实施例中,先采用人体检测算法确定交互目标所在的矩形框区域,再从深度图中提取矩形框区域的深度数据,然后分别按照行扫描或列扫描的方式减少分析复杂度,并对扫描统计得到的深度数据进行过滤,进而,根据过滤得到的深度数据出现频次准确确定交互目标与机器人之间的距离,在保证实时采集确定距离的同时,还可以适用于多种位姿及场景。
实施例三
下面参照图4详细介绍本说明书实施例的电子设备。请参考图4,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(Non-Volatile Memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(ExtendedIndustry Standard Architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成确定交互目标与机器人之间距离的装置。处理器,执行存储器所存放的程序,并具体用于执行前文所述确定交互目标与机器人之间距离的装置作为执行主体时所执行的方法操作。
上述如本说明书实施例图1-图2b所示实施例揭示的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图1-图2b的方法,并实现确定交互目标与机器人之间距离的装置在图1-图2b所示实施例的功能,本说明书实施例在此不再赘述。
当然,除了软件实现方式之外,本说明书实施例的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
实施例四
本说明书实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
获取交互目标在拍摄场景下的图像以及与所述图像对齐的深度图;
基于所述图像以及所述深度图提取所述交互目标所在矩形框区域的深度数据;
基于预设第一容差对所述矩形框区域进行行或列扫描,统计每一行或每一列中最高频次的深度数据;
对统计得到的深度数据进行过滤处理;
基于预设第二容差对过滤后的深度数据进行扫描,统计频次最高和次高的深度数据;
判断所述矩形框区域的尺寸比是否满足预置人体尺寸比;
如果是,则将最终过滤后的深度数据中频次最高的深度数据确定为交互目标与机器人之间距离;
否则,将最终过滤后的深度数据中频次次高的深度数据确定为交互目标与机器人之间距离。
在本说明书实施例中,先采用人体检测算法确定交互目标所在的矩形框区域,再从深度图中提取矩形框区域的深度数据,然后分别按照行扫描或列扫描的方式减少分析复杂度,并对扫描统计得到的深度数据进行过滤,进而,根据过滤后得到的深度数据出现频次准确确定交互目标与机器人之间的距离,在保证实时采集确定距离的同时,还可以适用于多种位姿及场景。
其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
总之,以上所述仅为本说明书实施例的较佳实施例而已,并非用于限定本说明书实施例的保护范围。凡在本说明书实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的保护范围之内。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书实施例中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。