深度计算系统与方法与流程

文档序号:16978166发布日期:2019-02-26 19:13阅读:270来源:国知局
深度计算系统与方法与流程

本发明属于电子技术领域,更具体地说,是涉及一种深度计算系统与方法。



背景技术:

深度相机可以用来获取目标的深度信息,基于深度信息可以实现三维重建、人脸识别、手势交互等功能。在终端设备中嵌入深度相机将成为未来终端由传统2d视觉向3d视觉转变的关键,但同时也面临一些挑战。

深度相机一般包含发射器、接收器以及处理器,其中处理器用于计算出深度图像并进一步传输到其他终端设备以做进一步的计算处理。比如已有的深度相机如kinect、astra等,其内部含有深度计算处理器,深度计算算法固化到该深度计算处理器上提升计算效率。在将深度相机集成到终端设备中后,执行具体的应用程序时可以调用深度图像以实现相应的功能,然而,由于应用程序的种类繁多,对深度图像的要求也不一致,比如三维重建要求深度图像精度高、手势交互则要求深度图像的帧率高。

因此,已有的方案难以满足深度图像多样化的需求。



技术实现要素:

为解决上述问题,本发明提出一种深度计算系统及方法,利用该系统所获得的深度图像具有多样化的特点,能够满足不同应用程序的需求。

本发明提供一种深度计算系统,包括:发射模组,用于向目标发射光束;接收模组,用于接收由目标反射回的光束;处理器,用于根据所接收到的光束信息进行深度计算以得到深度图像;存储器,用于存储包括所述处理器在执行深度计算时所需的至少一个深度算法程序以及参数数据;所述深度算法程序包括在执行深度计算时进行配置参数的配置,以输出不同效果的深度图像。

在一些实施例中,所述配置参数包括:图像的计算区域参数、深度计算效率参数、深度计算精度参数、深度计算分辨率参数、深度计算效果参数中的一种或多种。

其中,所述图像的计算区域参数包括起始像素与终止像素值;所述深度计算效率参数或深度计算精度参数包括搜索窗口值、搜索区域值、迭代次数、相似度阈值。所述深度计算分辨率参数包括搜索步伐值;所述深度计算效果参数包括光照不变因子。

在一些实施例中,所述深度相机为结构光深度相机;在另一些实施例中,所述深度相机为tof深度相机。

在一些实施例中,所述参数数据包括:参考结构光图像、深度相机内外参数。系统还包括显示器、接口、相机中的一种或多种;所述显示器用于显示图像;所述接口用于与外部进行连接,所述相机包括彩色相机、全景相机、光场相机、广角相机中的一种或多种。

本发明还提供一种深度计算方法,包括:处理器控制发射模组发射光束以及控制接收模组采集所述光束;处理器接收所述光束并调用存储器中存储的深度算法程序和参数数据,通过配置参数的配置进而计算深度图像。

本发明的有益效果:在存储器中存储深度算法程序,且其深度算法程序包括在执行深度计算时进行配置参数的配置,从而使得处理器在计算深度图像时,对不同的深度算法程序设置不同的配置参数,进而对各个算法进行调整,而且可以设置框架完全不同的深度算法程序,以输出不同效果的深度图像,满足不同应用程序的需求。

附图说明

图1为本发明一个实施例中深度相机侧面示意图。

图2为本发明一个实施例中深度计算系统结构示意图。

图3为本发明又一个实施例中深度计算系统结构示意图。

图4为本发明又一个实施例中深度算法程序模块的示意图。

图5为本发明再一个实施例中深度计算系统结构示意图。

具体实施方式

下面结合具体实施方式并对照附图对本发明作进一步详细说明,应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。

图1所示的是根据本发明一个实施例的深度相机侧面示意图。深度相机10主要组成部件有发射模组101、接收模组102、控制电路板105、深度计算芯片103以及存储器(图中未示出)。在一些深度相机中还配备了其他相机如彩色相机104。发射模组101、接收模组102以及彩色相机104一般被安装在同一个深度相机平面上,且处于同一条基线,每个模组或相机都对应一个开孔窗口。深度计算芯片103一般被集成在控制电路板105上,其他模组与控制电路板105连接,深度计算芯片103经由控制电路板105以一定的接口实现对各个模组的控制。深度计算芯片103还包含输出接口106,如usb接口、mipi接口等,用于将深度图像、彩色图像输出到其他设备。发射模组101用于向目标发射出光束,接收模组102用于接收由目标反射回的光束,深度计算芯片103则用于根据所接收到的光束信息进行深度计算以得到深度图像。

深度相机包括结构光深度相机、tof深度相机等。在一个实施例中,深度相机为结构光深度相机,其中,发射模组用于向目标空间中投射经编码的结构光图案化光束,接收模组采集到该结构光图案后输出至深度计算芯片,芯片将结构光图案进行深度计算从而得到目标空间的深度图像。发射模组可以包括光源、透镜以及衍射光学元件,所发射的结构光图案为红外散斑图案,图案具有颗粒分布相对均匀但具有很高的不相关性,此时接收模组为红外相机。结构光图案也可以是条纹、二维图案等其他形式。在一个实施例中,深度相机为tof深度相机,其中发射模组用于发射经调制的光束,接收模组用于接收由物体反射回的光束,深度计算芯片用于对反射回的光束进行解调,以计算出发射与接收的时间差,并利用时间飞行法原理计算出目标的深度图像。

可以理解的是,深度相机也可以包括其他种类,比如双目结构光深度相机等。在以下的说明中将以结构光深度相机为例进行说明,其原理可以应用于其他类型的深度相机中。

终端设备给人们带来了无限便利,比如手机、平板、电脑、电视等终端可以实现通话、娱乐、办公等功能,同时移动终端的功能还要不断扩展,比如人脸识别解锁、移动支付等。由此对移动终端的硬件要求也越来越高,集成深度相机将成为终端设备未来的趋势。

图2是根据本发明一个实施例的集成了深度相机的终端设备示意图。终端设备20集成了深度相机因此具备深度图像计算功能,在后文中统一将这类设备称为深度计算系统。深度计算系统20包括用于深度计算的深度相机、处理器205、存储器206等,还可以包括如显示器210、相机212以及接口211等。

其中深度相机包括接收模组201、发射模组202以及深度计算芯片203,其具体功能参照对图1的描述。

处理器205是用于对整个系统进行整体控制,处理器205可以是单个的处理器也可以包含多个处理器单元,包括但不限于中央处理器(cpu)、图形处理器(gpu)、数字信号处理器(dsp)、神经网络处理器(npu)、图像信号处理器(isp)等。在一些实施例中,处理器20可以是集成片上系统(soc)或专用集成电路(asic),包含cpu等处理器、片上存储器、控制器、通信接口等。在一些实施例中,处理器20为应用处理器ap,比如移动应用处理器,主要负责移动终端中除通信外其他功能的实现,例如文本处理、图像处理等。

显示器210用于在处理器205的控制下显示图像以将应用等呈现给用户,另外显示器也可以包含触控功能,此时显示器也作为人机交互接口,用于接收用户的输入。

接口211用于使得系统与外部进行连接,以进一步实现数据传输、电力传输等功能,接口211经由处理器205中的通信接口来控制。接口种类包括usb接口、wifi接口等。

相机212一般用于采集图像,比如彩色相机、全景相机、光场相机、广角相机等等。可以理解的是,相机212也可以是深度相机的一部分,如图1所示。

存储器206用于保存数据,比如系统数据207、应用程序数据208、参数数据209以及处理器205在执行过程中保存的临时代码和数据等。系统数据比如android、linux等操作系统,应用程序数据208比如用户常用的聊天程序、购物程序、解锁程序、支付程序等等,参数数据209包括深度计算芯片203在执行深度计算时需要的数据,比如参考结构光图像、深度相机内外参数(比如接收模组的内参以及接收模组与发射模组之间的外参)等。比如对于单目结构光深度相机而言,参数数据209中包含参考结构光图像,深度计算芯片203将利用参数结构光图像与当前目标的结构光图像进行深度计算以获取当前目标的深度图像。深度计算芯片203通过接口与接收模组201、发射模组202连接并控制各个模组的触发,比如同步触发以采集结构光图像。在一些实施例中,也可以由处理器205直接与各个模组连接以实现同步触发等控制,这样的好处在于,在一些需要利用深度图像的应用程序被处理器205执行时,应用处理器20可以直接对各个模组进行控制,以简化操作,提升效率。这里的接口可以包括各种接口,比如集成总线接口i2c。

在一个实施例中,取消深度相机中的存储器将有利于减少深度相机的体积、降低功耗,更加便于集成,在深度图像等计算中涉及到的参数数据可以保存到系统20公共的存储器206中。在进行深度计算时,处理器205可以调用存储器206中的参数数据209并传输给深度计算芯片203以进一步执行深度图像计算。深度计算芯片203也可以直接与存储器206连接,以调用其存储的参数数据209。

存储器206可以由单个或多个存储器组成,其可以是ram、flash等任何可用于保存数据的存储器形式。可以理解的是,存储器既可以作为系统的一部分,也可以独立于移动终端存在,比如云端存储器,其保存的数据可以通过接口211等与深度计算系统20通信。应用程序如人脸识别、手势交互等应用一般被保存在非易失性可读存储介质中,当执行该应用时,处理器将从该存储介质中调用相应的程序来执行。存储器206也可以作为深度相机的一部分,如图1所示。

图3是根据本发明又一个实施例的深度计算系统的示意图。在本实施例中,取消了专门用于深度计算的深度计算芯片以降低成本,深度图像的计算任务将由深度计算系统中的处理器303来执行。深度计算算法(深度算法)306将以软件程序的形式(即深度算法程序)存储在存储器305中。处理器303直接与接收模组301、发射模组302连接,比如通过i2c接口以实现对模组的控制、通过mipi等接口可以传输由接收模组301传输来的红外(ir)结构光图像(以红外相机为例进行说明)。在进行深度计算时,处理器303将调用存储器305中的深度算法306以及辅助运算的参数数据307,在接收到ir结构光图像后执行相应的深度算法计算指令以计算出深度图像,在一个实施例中,深度图像可进一步由显示器304显示。深度算法306可以是单一算法程序也可以包含多种算法程序,比如可以同时包括基于单目、双目等多种深度计算的算法程序。在一个实施例中,对于单目主动结构光深度成像而言,其对应的深度算法程序一般包含图像预处理、图像匹配、深度值计算等步骤。其中,图像预处理是在接收到结构光图像后对结构光图像的噪声、对比度、亮度等进行处理;图像匹配是指利用匹配算法,如平均绝对差算法(mad)、绝对误差和算法(sad)、误差平方和算法(ssd)、平均误差平方和算法(msd)、归一化积相关算法(ncc)、序贯相似性检测算法(ssda)、hadamard变换算法(satd)等,对结构光图像与参考结构光图像进行匹配计算以输出对应像素的偏离值;深度值计算即利用偏离值以及结构光三角法原理计算出像素的深度值。

在将深度相机集成到终端设备中后,执行具体的应用程序时可以调用深度图像以实现相应的功能,然而,由于应用程序的种类繁多,对深度图像的要求也不一致,比如人脸识别要求深度图像精度高、手势交互则要求深度图像的帧率高。为了解决对深度图像多样性要求的问题,本发明提供了几种解决方案。

如图2所示,深度计算芯片203中设置了配置模块204,配置模块204可以对深度计算芯片203中运行的深度算法进行参数的配置,从而使得深度算法可以在算法框架不改变的前提下,输出不同效果的深度图像。配置参数包括但不限于以下几种(以结构光深度算法为例进行说明):

1图像的计算区域参数。在将结构光图像进行深度计算时,一般是对整幅图像进行匹配计算,最终输出整幅深度图像。然而在一些应用中,仅需要对其中的少数像素进行计算即可,比如对于人脸识别应用,往往人脸区域仅占到整幅图像的一部分,以人脸区域面积占全部图像面积的一半、且人脸区域正好位于图像中心为例进行说明,假定图像的长宽为(l,h),单位是像素,人脸区域左上角与右下角像素坐标分别为(l/4,h/4)、(3l/4,3h/4)。则在本实施例中,先利用彩色图像或红外泛光图像进行人脸识别,即识别出人脸区域的像素坐标位置,其次仅对人脸所在区域进行深度计算,具体地,通过配置反映计算区域的参数来执行深度计算,比如配置参数是起始像素值(比如左上角像素坐标值)与终止像素值(比如右下角像素坐标值),起始像素值与终止像素值可以准确反映出计算区域,深度计算芯片在执行深度计算时则根据起始像素与终止像素进行计算,最终输出的是部分深度图像。与现有技术相比,由于计算的像素数减少了一半,计算量减半,计算效率得到明显的提升。

2深度计算效率参数。在进行深度计算时,计算效率往往取决于匹配算法的效率,而匹配算法效率则常常取决于匹配算法的窗口大小、搜索区域大小、匹配的迭代次数、相似度阈值等。因此在一些对深度图像计算效率要求较高的应用中,比如手势交互要求帧率高,则可以通过配置这些效率参数来输出高帧率的深度图像,比如将搜索窗口减小、搜索区域减小、迭代次数减小、相似度阈值减小(相似度值越大表示越相关)等。效率参数包含但不限于以上所说的窗口大小、搜索区域大小、匹配的迭代次数、相似度阈值等参数。

3深度计算精度参数。深度计算的精度往往取决于匹配算法的搜索精度,进一步又常常取决于匹配算法的窗口大小、搜索区域大小、匹配的迭代次数、相似度阈值等。在一些对深度图像计算精度要求较高的应用中,比如三维扫描要求深度图像精度高,则可以通过配置这些效率参数来输出高精度的深度图像,比如将搜索窗口增加、搜索区域增加或扩展(比如沿横、纵向均进行搜索)、迭代次数增加、相似度阈值增大等。效率参数包含但不限于以上所说的窗口大小、搜索区域大小、匹配的迭代次数、相似度阈值等参数。

深度计算精度与深度计算效率之间难以同时达到,深度计算精度的提升常常导致深度计算效率下降。在上述说明中也给出了可以通过匹配算法的窗口大小、搜索区域大小、匹配的迭代次数、相似度阈值等参数来实现精度与效率的输出控制,下面以一个具体例子来进行说明。在一个实施例中,接收模组的实际像素分辨率为1280x960,现在运行的手势交互应用要求深度图像的输出帧率为60fps。在执行深度计算算法时,将搜索窗口设置为21x21、搜索区域为整幅图像、迭代次数不限、相似度阈值为0.95(即搜索窗口在搜索区域中进行搜索,并实时计算搜索窗口与目标窗口的相似度,比如利用ssd匹配算法,当相似度达到0.95时,搜索结束,搜索到的窗口中心的像素即为要匹配的目标像素,当相似度低于0.95时,继续搜索,即不断迭代),此时算法的计算量非常大,难以实现60fps的深度图像输出。此时,若将算法窗口大小减少至11x11,相似度计算会加快,从而提升计算效率;或将搜索区域限制在沿基线方向的某局区域中,搜索速度会加快从而提升计算效率;或将迭代次数限制在5次,即不管在5次内能不能搜索到相似度达到阈值的像素,均结束搜索,由此也会大大加快计算效率;或者将相似度阈值设置为0.8甚至更低的值(本实施例中,相似度值越高表示越相似),由此也可加速算法计算效率;或者同时改变两个或两个以上的参数,算法效率的提升会越明显。相反地,若想提升深度计算精度,则将上述参数向相反的方向进行调整,所带来的结果是计算量增加,计算效率降低,但由于匹配结果更佳,从而得到的深度图像精度更高。

4深度计算分辨率参数。深度计算分辨率决定了生成的深度图像的真实分辨率,一般地若对结构光图像中的每个像素进行深度计算即输出与结构光图像分辨率相同的深度图像。实际应用中,对于一些对分辨率要求低的应用,比如近距离深度成像的应用中,低分辨率深度图像也可以包含足够多的深度信息。可以通过搜索步伐、搜索策略等调整分辨率,比如将搜索步伐设置为每隔一个像素进行匹配计算,则可以将分辨率下降到原始的1/4,或者采用亚像素搜索策略,则可以实现超分辨率深度图像计算。

5深度计算效果参数。在不同应用中,对深度图像的计算效果要求不同,比如有些应用仅要求深度图像中对物体边缘的精度较高,有些应用要求深度图像的孔洞少,有些应用要求深度计算对光照不敏感等,此时可以通过配置一些效果参数为达到这些计算效果,比如通过调整匹配算法中的光照不变因子参数来降低深度计算对光照的敏感度等。

以上的配置参数仅示例性进行了分类,实际上不同分类中的配置参数也可以相同,各个分类相互之间也有联系,比如降低分辨率则会提升计算效率,因此在实际应用中,可以根据不同的应用需要,不限于以上的计算区域、计算精度、计算效率、计算分辨率、计算效果等需求,配置参数也可以进行不同的设置,配置参数也不仅限于上面所示例出的参数。

可以理解的是,对于图1所示的深度相机而言,同样可以在其深度计算芯片中设置配置模块,配置模块可以对深度计算芯片中运行的深度算法进行参数的配置,从而使得深度算法可以在算法框架不改变的前提下,输出不同效果的深度图像。由此可以使得深度相机输出不同效果的深度图像,以满足不同应用的需求。

在一个实施例中,配置模块包含寄存器,内部设置用于保存各种参数的单元,比如深度计算区域参数单元、深度计算效率参数单元、深度计算精度参数单元、深度计算分辨率参数单元以及深度计算效果参数单元等,各个单元中保存的参数在执行深度计算时,可以被芯片中其他模块适时调用。这些单元中所保存的参数也可以根据不同的需求被配置,比如被配置模块外部的处理器访问以配置相应的参数。

同样地,对于图3所示的实施例中,为了满足不同的应用需求,深度算法程序需要进行了特别的设置。图4是根据本发明一个实施例的深度算法程序模块的示例图。深度算法模块401包含了至少两个以上的深度计算算法,比如包含算法1、算法2以及算法3,不同的算法可以输出不同效果的深度图像。比如算法1的核心匹配算法为灰度匹配算法(例如数字图像相关算法),可以进行高精度的匹配计算以输出高精度的深度图像;而算法2中采用特征匹配算法,可以进行快速计算以输出高帧率的深度图像。通过将多种不同的算法打包到同一软件中可以以较低的成本实现不同需求的深度图像计算。与图2所示的用硬件实现的算法相比,成本更低,显然将多个不同的算法固化到芯片上的难度及成本要大得多。

在一些实施例中,也可以对深度算法程序设置一些配置参数,比如对图3所示实施例中的深度算法306中,配置参数可以使得深度算法程序在执行深度计算时以输出不同效果的深度图像。又比如可以对图4所示实施例中深度算法模组401中的单个或多个深度算法设置一些配置参数,如图4中的配置参数405、406以及407。这些配置参数可以在算法执行时根据当前应用程序的需求,进一步对各个算法进行调整,配置参数的功能参考对上述图2中的配置模块2中对配置参数的说明。

在一些实施例中,比如对深度图像安全性要求高的应用,如支付应用,深度算法的安全性要求较高,此时深度算法可以运行在具有安全环境的处理器上,例如arm处理器、数字信息处理器(dsp)等。

图5是根据本发明再一个实施例的深度计算系统的示意图。深度计算系统中的处理器503包含了一个专用模块——深度计算引擎504,该引擎则专门用于执行深度计算,比如当处理器503是以arm处理器为核心的系统级芯片(soc)时,在该soc中设置一块专门用于深度计算的引擎,该引擎包括但不限于dsp、isp、gpu、asic、fpga、npu中的一种或组合等形式。同样地,可以在深度计算引擎504中设置配置模块505以实现不同需求的深度计算。在一个实施例中,同深度计算芯片的配置模块,深度计算引擎中的配置模块也为保存有各种参数的寄存器,可以被深度计算引擎中的其他模块适时调用。

图2、图3以及图5所示的三种方案仅用作示意,并非对本发明方案的限制。三种方案各有优缺点,图2所示的方案由于采用独立的深度计算芯片,因此计算效率高,虽然可以通过配置参数来输出不同需求的深度图像,但由于算法框架已经固化在芯片中,不可改变,因此输出的深度图像不会有很大程度上的改变,同时由于是独立的芯片,因此成本也较高;对于图3所示方案中的算法以软件程序的形式保存在存储器中,需要时被处理器调用,优点在于可以设置框架完全不同的深度算法,而且非常便于后期的算法更新、更换等,但缺点在于计算效率慢、功耗相对较高、安全性较低;对于图5所示的方案,相对于另两个方案来说,不仅保留了较高的计算效率以及安全性,而且降低了成本。

根据本发明一个实施例的根据具体应用程序执行相应深度算法的步骤如下。

步骤601,由深度计算系统中的处理器执行当前应用程序,比如对于移动终端的人脸解锁应用程序,当移动终端被拿起或者通过按钮触发后,人脸解锁应用程序被触发,即由处理器调用存储器中相应的应用程序被执行。

步骤602,处理器根据当前应用程序对深度图像的要求,执行相应的深度算法或者根据相应的配置参数来执行深度算法。在一个实施例中,提前设置好应用程序对深度图像的需求参数设定以及深度算法的配置参数设定,比如分辨率、精度、帧率等参数,处理器在执行该应用程序时,同时提取相应的需求参数,并依据该需求参数来配置相应的参数或者相应的算法,随后执行相应的深度算法或者根据相应的配置参数来执行深度算法。这里说的执行相应的深度算法对应的是图3所示的实施例,根据不同的配置参数来执行深度算法则适用于图2、图3以及图5所示的实施例。

步骤603,处理器将计算出的深度图像根据应用程序进行进一步处理,比如在显示器上显示、图像分割、人脸检测、人脸识别、3d建模、手势交互等处理。

在一些实施例中,步骤602中执行深度计算时,同一个应用程序在不同的阶段也可以进行算法的调整或者配置参数的调整。比如对于3d人脸解锁或支付应用,大致可以分为人脸检测、人脸识别、解锁或支付几个阶段,在开始的人脸检测阶段,不需要高精度或高分辨率的深度图像,此时可以通过相应的算法或者配置参数计算低精度或低分辨率的深度图像,随后在人脸识别阶段,通过算法调整或者配置参数调整来计算高精度或高分辨率的深度图像来满足人脸识别需求。

以上内容是结合具体/优选的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,其还可以对这些已描述的实施方式做出若干替代或变型,而这些替代或变型方式都应当视为属于本发明的保护范围。

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