本发明实施例涉及计算机技术领域,尤其涉及一种基于散斑结构光的高精度深度计算方法及系统。
背景技术:
主动式的散斑结构光深度感知技术一种基于空间编码结构光的深度测量技术,在工业领域、医疗领域、消费电子领域等有着广泛的应用需求。其主要思想是将具有特殊结构的光学图样投射到已知位置的参考平面,通过相机记录此时参考平面的图像作为参考图,即结构光系统的标定过程。标定完成后,再将图样投射到任意场景,通过光学传感器采集任意场景的图像,与已知参考图的匹配,来计算场景的深度信息。
现有技术中,如图1所示,在深度计算中,一般认为参考平面(理想的参考面)平行于相机的光学传感器坐标系的xy平面,且相距。标定完成后,若在任意场景中存在物点q,对应于图像上的q点,则在视差匹配对比过程中,可以在参考图像上找到其散斑特征相同的点,为点p,对应于参考平面上的物点p。在拍摄参考图时,已知参考图深度为,即认为p点深度为,进而根据相机焦距和散斑投射器与相机之间的距离可以计算出位置点q的深度d1。但是在实际标定过程中,参考面相对于xy平面可能存在较小的夹角,而非绝对平行,从而引入误差:即实际物点p的深度为而非,使得计算出的点q的深度存在一定误差。在要求较高的应用场合,如安防、精密的3d测量等等,这种误差可能带来5%-10%的深度误差,是无法容忍的。
现有的深度计算过程中,计算方式输出深度图的绝对精度高度依赖于参考面的位置精度。当参考面的位置精度不够时,会导致在深度测量时产生较大的误差。
技术实现要素:
本发明实施例提供一种基于散斑结构光的高精度深度计算方法及系统,用以解决现有技术中现有的深度计算过程中,计算方式输出深度图的绝对精度高度依赖于参考面的位置精度。当参考面的位置精度不够时,会导致在深度测量时产生较大的误差的问题。
第一方面,本发明实施例提供一种基于散斑结构光的高精度深度计算方法,包括:
采集标定板在参考平面上的图像信息,通过摄像机标定算法,计算获所述图像信息中的特征点在相机坐标系中的坐标;
根据所述特征点在相机坐标系中的坐标,计算获得所述参考平面在所述相机坐标系中的平面方程;
采集所述参考平面的散斑图,根据所述散斑图,计算获得图中散斑点的视差;
根据所述相机坐标系中的平面方程和所述散斑点的视差,计算获得所述参考平面上目标位置点的深度。
其中,所述采集标定板在参考平面上的图像信息,通过摄像机标定算法,计算获所述参考平面上的特征点在相机坐标系中的坐标的步骤,具体包括:采集n张标定板在所述参考平面不同位置的图像,获得标定板在参考平面上的图像信息,其中,每一张标定板在参考平面中的图像包含m个特征点;根据张正友标定算法,计算获得每一个特征点在相机坐标系中的坐标;其中,m和n均为正整数。
其中,所述根据所述特征点在相机坐标系中的坐标,计算获得所述参考平面在所述相机坐标系中的平面方程的步骤,具体包括:基于m*n个特征点在相机坐标系中的坐标,根据最小二乘法,计算获得所述参考平面在所述相机坐标系中的平面方程。
其中,所述计算获得所述参考平面在所述相机坐标系中的平面方程的步骤还包括:根据所述标定板的厚度,对所述参考平面在所述相机坐标系中的平面方程进行修正,获得修正后的参考平面方程。
其中,根据所述相机坐标系中的平面方程和所述散斑点的视差,计算获得所述参考平面上目标位置点的深度的步骤,具体包括:根据所述参考平面在所述相机坐标系中的平面方程,获取所述目标位置点在所述参考平面中的坐标点;根据所述散斑点的视差和所述目标位置点在所述参考平面中的坐标点,通过相机针孔模型,计算所述目标位置点的深度。
第二方面,本发明实施例提供一种基于散斑结构光的深度计算系统,包括:
标定参数计算模块,用于采集标定板在参考平面上的图像信息,通过摄像机标定算法,计算获所述图像信息中的特征点在相机坐标系中的坐标;
平面方程计算模块,用于根据所述特征点在相机坐标系中的坐标,计算获得所述参考平面在所述相机坐标系中的平面方程;
视差计算模块,用于采集所述参考平面的散斑图,根据所述散斑图,计算获得图中散斑点的视差;
深度计算模块,用于根据所述相机坐标系中的平面方程和所述散斑点的视差,计算获得所述参考平面上目标位置点的深度。
其中,所述标定参数计算模块具体用于:采集n张标定板在所述参考平面不同位置的图像,获得标定板在参考平面上的图像信息,其中,每一张标定板在参考平面中的图像包含m个特征点;根据张正友标定算法,计算获得每一个特征点在相机坐标系中的坐标,其中,m和n均为正整数。
其中,所述平面方程计算模块还包括:标定板的厚度修正子模块,用于根据所述标定板的厚度,对所述参考平面在所述相机坐标系中的平面方程进行修正,获得修正后的参考平面方程。
第三方面,本发明实施例提供一种电子设备,包括处理器、通信接口、存储器和总线,其中,处理器,通信接口,存储器通过总线完成相互间的通信,处理器可以调用存储器中的逻辑指令,以执行如上述第一方面所提供的基于散斑结构光的高精度深度计算方法。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面所提供的基于散斑结构光的高精度深度计算方法。
本发明实施例提供的基于散斑结构光的高精度深度计算方法及设备,通过平面方程和散斑点的视差,计算参考平面的精确位姿,从根本上减少了误差传递,从而大幅提高了深度计算精度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中深度计算的原理图;
图2为本发明一实施例提供的基于散斑结构光的高精度深度计算方法的流程示意图;
图3为本发明一实施例提供的基于散斑结构光的高精度深度计算方法中,标定板位置示意图;
图4为发明一实施例提供的基于散斑结构光的深度计算系统的结构示意图;
图5为本发明一实施例的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图2为本发明一实施例提供的基于散斑结构光的高精度深度计算方法的流程示意图,参考图2,本发明实施例所提供的方法包括:
s1,采集标定板在参考平面上的图像信息,通过摄像机标定算法,计算获所述图像信息中的特征点在相机坐标系中的坐标。
具体的,在进行深度计算时,首先需要准备一个参考平面,其平面起伏误差应确保小于一定阈值,该阈值根据光学系统设计而定,优选的,该阈值不应大于1mm。准备合适大小、合适类型的标定板,优选的,该标定板应占满视场的50%以上,厚度小于15mm,准备进行标定工作。将参考平面摆放于相机的正前方,并固定。该过程中应尽量使参考平面与相机光轴垂直,摆放距离由光学系统的工作距离及设计距离而定。
将标定板置于参考平面上,随后采集标定板图像,若标定板上特征点为m个点,则可以获得m个特征点的三维位置,解算过程可使用摄像机标定算法进行初值计算,再使用lm法等非线性迭代法进行更加准确的迭代等方式。
s2,根据所述特征点在相机坐标系中的坐标,计算获得所述参考平面在所述相机坐标系中的平面方程。
具体的,由于标定板厚度一定,且紧贴于参考平面上,可认为获得的m个三维坐标点均位于同一平面上,从而计算参考平面的平面方程。
优选的,拟合可采用最小二乘法,具体步骤为:令m*n个三维坐标点所在的平面在相机坐标系中的平面方程为:
则m个特征点都应该满足上述方程,从而求解参数a,b和c,这是一个线性最小二乘问题,可用svd解法进行求解,求解目标为参数矩阵x=(a,b,c)′,求解过程如下:
简化上述超静定方程为:
ax=p
其中
其中,a为标定板上特征点的三维坐标矩阵,共n张图像,每张图像上有m点,共m*n个特征点,x为需要求解的参数矩阵,p为常数矩阵。由最小二乘法,可解得:x=(ata)-1atp。
s3,采集所述参考平面的散斑图,根据所述散斑图,计算获得图中散斑点的视差。
在获得了参考平面的平面方程后,撤去标定板,打开散斑投射器,将散斑投射至参考面上,采集一幅参考图,该参考图即为所述参考平面的散斑图。根据该散斑图,可以计算散斑点的视差。
s4,根据所述相机坐标系中的平面方程和所述散斑点的视差,计算获得所述参考平面上目标位置点的深度。
具体的,常规计算流程如图1所示,并未考虑参考平面的倾斜带来的误差,认为该平面是相机坐标系中的xy平面是平行的。而得到参考平面的平面方程后,便可描述参考平面的准确位姿,对在深度计算过程中进行补偿。优选的计算方式如下,针对任意场景图像中的一点q,其所对应参考图上的点p(u,v),已计算视差为e,根据相机针孔模型,则该点在参考平面上的实际深度可由以下三式确定:
通过上述的三元一次方式,可解出d′。式中,f为相机焦距,由标定得到,u,v分别为当前计算的点的横坐标、纵坐标,cx,cy为相机主点位置,由标定得到。
再使用深度计算公式:
计算出该场景下该点的深度d1,式中,f为相机焦距,l为投射器中心距离镜头光心的长度,由系统设计确定。e为视差计算模块得到出的视差值。
本发明实施例提供的方法,通过平面方程和散斑点的视差,计算参考平面的精确位姿,从根本上减少了误差传递,从而大幅提高了深度计算精度。
在上述实施例的基础上,所述采集标定板在参考平面上的图像信息,通过摄像机标定算法,计算获所述参考平面上的特征点在相机坐标系中的坐标的步骤,具体包括:采集n张标定板在所述参考平面不同位置的图像,获得标定板在参考平面上的图像信息,其中,每一张标定板在参考平面中的图像包含m个特征点;根据张正友标定算法,计算获得每一个特征点在相机坐标系中的坐标,其中,m和n均为正整数。
具体的,如图3所示,与常规标定过程相比,标定过程中须增加以下步骤,将标定板紧贴于参考平面的不同位置,并采集若干幅图像。若标定板上的特征点有m个,将标定板置于参考平面上n个不同的位置,供采集n张标定板在参考平面上的图像信息,可得到n张图像中共m*n个点的三维位置。解算过程可使用目前广泛采用的张正友标定法进行初值计算,再使用lm法等非线性迭代法进行更加准确的迭代。
通过此方法,采用多张标定板在参考平面上不同位置的图像,获取更多的参考点坐标,提升了后续深度计算的精确度。
在上述实施例的基础上,所述根据所述特征点在相机坐标系中的坐标,计算获得所述参考平面在所述相机坐标系中的平面方程的步骤,具体包括:基于m*n个特征点在相机坐标系中的坐标,根据最小二乘法,计算获得所述参考平面在所述相机坐标系中的平面方程。
具体的,由于标定板厚度一定,且紧贴于参考平面上,可认为上述步骤中获得的m*n个三维坐标点,均位于同一平面上,计算该平面方程。优选的,拟合可采用最小二乘法,将m*n各三维坐标点都满足与平面方程:
ax+by+cz=1
从而求解参数a,b,c。
在上述实施例的基础上,所述计算获得所述参考平面在所述相机坐标系中的平面方程的步骤还包括:
根据所述标定板的厚度,对所述参考平面在所述相机坐标系中的平面方程进行修正,获得修正后的参考平面方程。
具体的,最后需考虑标定板厚度,已知标定板厚度为t,考虑参考平面与上述得的平面,则最终参考平面方程为:
通过此方法,将标定板的厚度列入参考平面方程的考量中,提升了对深度计算的精准度。
在上述实施例的基础上根据所述相机坐标系中的平面方程和所述散斑点的视差,计算获得所述参考平面上目标位置点的深度的步骤,具体包括:根据所述参考平面在所述相机坐标系中的平面方程,获取所述目标位置点在所述参考平面中的坐标点;根据所述散斑点的视差和所述目标位置点在所述参考平面中的坐标点,通过相机针孔模型,计算所述目标位置点的深度。
具体的,针对任意场景图像中的一点q,其所对应参考图上的点p(u,v),已计算视差为e,根据相机针孔模型,则该点在参考平面上的实际深度可由以下三式确定:
通过上述的三元一次方式,可解出d′。再使用深度计算公式:
计算出该场景下该点的深度d1。
综上所述,本发明实施例提供的方法,通过求解参考平面的平面方程,从而确定了参考平面的精确位姿,提高了深度计算的绝对精度。
图4为发明一实施例提供的基于散斑结构光的深度计算系统的结构示意图,如图4所示,所提供的系统包括:标定参数计算模块41、平面方程计算模块42、视差计算模块43和深度计算模块44。
其中,标定参数计算模块41用于采集标定板在参考平面上的图像信息,通过摄像机标定算法,计算获所述图像信息中的特征点在相机坐标系中的坐标;
平面方程计算模块42用于根据所述特征点在相机坐标系中的坐标,计算获得所述参考平面在所述相机坐标系中的平面方程;
视差计算模块43用于采集所述参考平面的散斑图,根据所述散斑图,计算获得图中散斑点的视差;
深度计算模块44用于根据所述相机坐标系中的平面方程和所述散斑点的视差,计算获得所述参考平面上目标位置点的深度。
其中,所述标定参数计算模块41具体用于:
采集n张标定板在所述参考平面不同位置的图像,获得标定板在参考平面上的图像信息,其中,每一张标定板在参考平面中的图像包含m个特征点;根据张正友标定算法,计算获得每一个特征点在相机坐标系中的坐标。
所述平面方程计算模块42还包括:标定板的厚度修正子模块,用于根据所述标定板的厚度,对所述参考平面在所述相机坐标系中的平面方程进行修正,获得修正后的参考平面方程。
需要说明的是,上述标定参数计算模块41、平面方程计算模块42、视差计算模块43和深度计算模块44配合以执行上述实施例中的一种基于散斑结构光的高精度深度计算方法,该系统的具体功能参见上述的基于散斑结构光的高精度深度计算方法的实施例,此处不再赘述。
本发明实施例中,通过平面方程和散斑点的视差,计算参考平面的精确位姿,从根本上减少了误差传递,从而大幅提高了深度计算精度。
图5为本发明一实施例的电子设备的结构示意图,如图5所示,深度学习系统的漏洞检测设备包括:处理器(processor)501、存储器(memory)503和总线504,其中,处理器501,存储器503通过总线504完成相互间的通信。处理器501可以调用存储器503中的逻辑指令,以执行如下方法,例如包括:采集标定板在参考平面上的图像信息,通过摄像机标定算法,计算获所述图像信息中的特征点在相机坐标系中的坐标;根据所述特征点在相机坐标系中的坐标,计算获得所述参考平面在所述相机坐标系中的平面方程;采集所述参考平面的散斑图,根据所述散斑图,计算获得图中散斑点的视差;根据所述相机坐标系中的平面方程和所述散斑点的视差,计算获得所述参考平面上目标位置点的深度。
本发明实施例公开一种计算机程序产品,计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:采集标定板在参考平面上的图像信息,通过摄像机标定算法,计算获所述图像信息中的特征点在相机坐标系中的坐标;根据所述特征点在相机坐标系中的坐标,计算获得所述参考平面在所述相机坐标系中的平面方程;采集所述参考平面的散斑图,根据所述散斑图,计算获得图中散斑点的视差;根据所述相机坐标系中的平面方程和所述散斑点的视差,计算获得所述参考平面上目标位置点的深度。
本实施例提供一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行上述各方法实施例所提供的方法,例如包括:采集标定板在参考平面上的图像信息,通过摄像机标定算法,计算获所述图像信息中的特征点在相机坐标系中的坐标;根据所述特征点在相机坐标系中的坐标,计算获得所述参考平面在所述相机坐标系中的平面方程;采集所述参考平面的散斑图,根据所述散斑图,计算获得图中散斑点的视差;根据所述相机坐标系中的平面方程和所述散斑点的视差,计算获得所述参考平面上目标位置点的深度。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。