【具体实施方式】
为了使本申请的目的、技术方案以及优点更加的明显和易懂,下面将结合本申请实施例以及相应的附图,对本申请进行清楚、完整地描述,其中,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。应当理解的是,下面所描述的本申请的各个实施例仅仅用以解释本申请,并不用于限定本申请,也即基于本申请的各个实施例,本领域的普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,下面所描述的本申请的各个实施例中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
图1为本申请实施例提供的标定方法的流程示意图,该标定方法应用于深度相机,该标定方法的应用环境如图2所示:设于导轨(图中未示出)且与导轨滑动配合的第一标定板B1、第二标定板B2,设于导轨一端的基座(图中未示出),设于基座上的深度相机(图中未示出),第一标定板B1、第二标定板B2的板面垂直于导轨的延伸方向,深度相机发射的同一光束G与第一标定板B1具有第一交点A1、与第二标定板B2具有第二交点A2,第一标定板B1平行于第二标定板B2,第一标定板B1、第二标定板B2与深度相机之间的距离不相同;其中,标定板的数量并非仅限于两个(即第一标定板B1和第二标定板B2),其可以为一个标定板(即第一标定板B1在导轨上移动得到第二标定板B2),也可以包括三个或三个以上,此处所描述的仅作为一种示例。
在上述应用环境中,同一光束G上的所有点在深度相机的像平面(即M1或M2)上相应的像素点均是同一个,也就是说理想状态下同一光束G经第一标定板B1和第二标定板B2反射后会照射于M1上的像素点P(即理想状态下第一交点A1、第二交点A2在M1上相应的像素点均为P),非理想状态下同一光束G经第一标定板B1和第二标定板B2反射后会照射于M2上的像素点P′(即非理想状态下第一交点A1、第二交点A2在M2上相应的像素点均为P′),而由于非理想状态与理想状态相比,非理想状态存在倾斜误差,所以理想状态下第一交点A1、第二交点A2在M1上相应的像素点P与非理想状态下第一交点A1、第二交点A2在M2上相应的像素点P′不同,但是在外部空间中第一交点A1及第二交点A2之间的实际距离与深度相机的像平面是否倾斜无关,即外部空间中第一交点A1与第二交点A2之间的实际距离始终是第一交点A1与第二交点A2之间的欧氏距离。
具体地,本申请实施例提供的标定方法包括如下步骤101至105。
步骤101、控制深度相机的发射模块发射同一光束至不同距离且相互平行的第一标定板和第二标定板,并致动深度相机的采集模块接收经标定板反射回的回波信号。
在本申请实施例中,对深度相机进行标定时,需要控制深度相机发射同一光束G至不同距离且相互平行的第一标定板B1和第二标定板B2,并接收经各个标定板反射回的回波信号;其中,同一光束G与第一标定板B1的交点即为第一交点A1、与第二标定板B2的交点即为第二交点A2。需要说明的是,同一光束G表征为深度相机发射模块发射至第一标定板B1与第二标定板B2的光束是相同方向的一束光,其亦可为不同方向的多束光。当其为不同方向的多束光时,依次按照每束光的方向得到对应的交点进行计算即可,此处不作限制。
步骤102、获取交点的相机坐标,并根据第一交点与第二交点的相机坐标和深度相机预设内外参数计算得到深度相机在理想状态下的第一交点与第二交点之间的第一距离。
在本申请实施例中,获取交点的相机坐标,并根据第一交点A1与第二交点A2的世界坐标与深度相机预设内外参数获取两交点的相机坐标,并进一步计算第一交点A1与第二交点A2之间的第一距离。由于该距离通过坐标变换计算得到,可视为理想状态下的第一距离,其中,理想状态指示深度相机的像平面平行于第一标定板B1及第二标定板B2(图2中的M1即表示理想状态下深度相机的像平面),第一距离起参考作用。
步骤103、基于深度相机的计算原理及回波信号计算得到第一交点与第二交点之间的第二距离。
在本申请实施例中,基于深度相机的计算原理得到第一交点A1与第二交点A2之间的距离为第二距离,即根据深度相机接收到的经各个标定板反射的回波信号进行计算所得到的第一交点A1与第二交点A2之间的距离。需要说明的是,在计算第二距离时,深度相机是否处于理想状态是未知的,由此基于深度相机的计算原理得到的此距离为实际的距离,意在与步骤102中起参考作用的第一距离进行对比。
步骤104、比较第一距离和第二距离,并判断深度相机的像平面是否平行于标定板。
在本申请实施例中,获取到第一距离和第二距离之后,还需要根据所获取的第一距离和第二距离,判断深度相机的像平面是否平行于第一标定板B1及第二标定板B2,相当于判断深度相机当前处于理想状态还是非理想状态。作为一种示例,如果第一距离与第二距离相同,那么确定深度相机的像平面平行于第一标定板B1及第二标定板B2,即确定深度相机当前处于理想状态;如果第一距离与第二距离不同,那么确定深度相机的像平面相对于第一标定板B1及第二标定板B2倾斜,即确定深度相机当前处于非理想状态,其中,非理想状态指示深度相机的像平面相对于第一标定板B1及第二标定板B2倾斜(图2中的M2即表示非理想状态下深度相机的像平面),而且在非理想状态下,由于深度相机的像平面相对于第一标定板B1及第二标定板B2倾斜,所以深度相机具有倾斜误差。
步骤105、根据判断结果选择是否需要对深度相机进行标定校正。
在本申请实施例中,对深度相机的像平面是否平行于第一标定板B1及第二标定板B2进行判断后,还需要根据判断结果选择是否需要对深度相机进行标定校正,而本文中的标定校正指的是对深度相机所具有的倾斜误差进行校正,从而消除倾斜误差所带来的不利影响。作为一种示例,如果深度相机的像平面平行于第一标定板B1及第二标定板B2,即深度相机当前处于理想状态,那么输出不需要对深度相机进行标定校正的结果;如果深度相机的像平面相对于第一标定板B1及第二标定板B2倾斜,即深度相机当前处于非理想状态,那么对深度相机进行标定校正以消除倾斜误差所带来的不利影响。
本申请实施例在对深度相机进行标定时,根据第一距离和第二距离判断深度相机的像平面是否平行于第一标定板B1及第二标定板B2,并根据判断结果选择是否需要对深度相机进行标定校正,比如在深度相机的像平面平行于第一标定板B1及第二标定板B2的情况下,意味着深度相机当前处于理想状态,可以不必对深度相机进行标定校正;在深度相机的像平面相对于第一标定板B1及第二标定板B2倾斜的情况下,意味着深度相机当前处于非理想状态,可以对深度相机进行标定校正。也就是说,本申请实施例在对深度相机进行标定时,充分考虑了深度相机所具有的倾斜误差(即非理想状态),而在深度相机具有倾斜误差时,本申请实施例会进一步对深度相机进行标定校正,从而在很大程度上消除了倾斜误差所带来的不利影响,进而有效地提升了深度相机的测量精度及测量结果的准确性。
作为一种实施方式,步骤102中的“第一距离”基于相机坐标系进行计算,具体可以包括:根据第一公式计算第一距离;其中,第一公式表示为:
D(P)表示第一距离,u表示深度相机的像平面M1上与第一交点A1及第二交点A2相应的像素点P的横坐标,v表示深度相机的像平面M1上与第一交点A1及第二交点A2相应的像素点P的纵坐标,(u,v)可根据交点的世界坐标与深度相机预设外参数计算得到,f表示深度相机的焦距,d1表示第一标定板B1与深度相机之间的距离,d2表示第二标定板B2与深度相机之间的距离,cx表示理想状态下深度相机的像平面M1的中心横坐标,cy表示理想状态下深度相机的像平面M1的中心纵坐标。
本实施方式与理想状态相对应,理想状态下第一距离容易得到,只需要先将第一标定板B1、第二标定板B2相对于导轨滑动,使得第一标定板B1、第二标定板B2与深度相机之间的距离分别为d1、d2,之后再基于“同一光束G上的所有点在深度相机的像平面(即M1或M2)上相应的像素点均是同一个”的原理,利用深度相机的内参、外参计算出M1上像素点P的像素坐标(u,v),最后再根据M1上像素点P的像素坐标(u,v)计算出第一距离即可。
另外,由于深度相机具有不同的类型(即i-TOF相机和d-TOF相机),因此在基于深度相机的计算原理计算第二距离时,应当充分考虑深度相机所具有的不同类型,第二距离的计算方式不同。
作为一种实施方式,步骤103中的“第二距离”的计算方式可以包括:获取第一交点与第二交点之间的相位差;根据所获取的相位差计算第二距离。具体地,本实施方式将第一交点A1与第二交点A2之间的相位差代入第二公式计算出第二距离;其中,第二公式表示为:
D′(P′)表示第二距离,c表示光速,
表示第一交点A1相应的相位,
表示第二交点A2相应的相位,π表示圆周率,f
m表示i-TOF相机的调制频率。
不同TOF相机由于抽头数、调制方式的差异,所以其第一交点A1与第二交点A2之间的相位差的计算过程也会存在差异。但是,对于深度相机的像平面M2上与第一交点A1、第二交点A2相应的像素点P′的坐标(u′,v′)而言,可根据深度相机该像素接收到经第一交点A1、第二交点A2反射的回波信号计算得到第一交点A1相应的相位
和第二交点A2相应的相位
从而得到第一交点A1与第二交点A2之间的相位差
进而能够根据上述第二公式计算出第二距离。
作为另一种实施方式,步骤103中的“第二距离”的计算方式可以包括:获取第一飞行时间与第二飞行时间之间的时间差;根据所获取的时间差计算第二距离;其中,第一飞行时间为从深度相机发射同一光束G开始,至深度相机接收到经第一交点A1反射回的同一光束G(即回波信号)为止,期间所历经的时间;第二飞行时间为从深度相机发射同一光束G开始,至深度相机接收到经第二交点A2反射回的同一光束G为止,期间所历经的时间。具体地,本实施方式将第一飞行时间与第二飞行时间之间的时间差代入第三公式计算出第二距离;其中,第三公式表示为:
其中,D′(P′)表示第二距离,c表示光速,t2表示第二飞行时间,t1表示第一飞行时间。
本实施方式中,对于深度相机的像平面M2上与第一交点A1、第二交点A2相应的像素点P′而言,根据像素点P′的坐标(u′,v′)接收的回波信号得到第一飞行时间t1和第二飞行时间t2,从而得到第一飞行时间t1与第二飞行时间t2之间的时间差Δt=t2-t1,进而能够根据上述第三公式计算出第二距离。
进一步地,如果第一距离与第二距离相同,即D(P)与D′(P′)相同,那么确定深度相机的像平面平行于第一标定板B1及第二标定板B2,进而确定深度相机当前处于理想状态,第一交点A1和第二交点A2在像平面的相机坐标相同,即(u,v)=(u′,v′);如果第一距离与第二距离不同,那么确定深度相机的像平面相对于第一标定板B1及第二标定板B2倾斜,即确定深度相机当前处于非理想状态,第一交点A1和第二交点A2在像平面的相机坐标不相同,即(u,v)≠(u′,v′)。
基于此,作为一种实施方式,步骤105中如果深度相机的像平面相对于第一标定板B1及第二标定板B2倾斜(即深度相机当前处于非理想状态),那么便需要对深度相机进行标定校正以消除倾斜误差所带来的不利影响。在本实施方式中,对深度相机进行标定校正可以包括:获取非理想状态下深度相机的像平面与理想状态下深度相机的像平面之间的旋转矩阵;根据所获取的旋转矩阵对深度相机进行标定校正。
可以理解的是,由于非理想状态与理想状态相比,非理想状态存在倾斜误差(即深度相机的像平面M2相对于第一标定板B1及第二标定板B2倾斜),所以非理想状态下深度相机的像平面M2与理想状态下深度相机的像平面M1之间存在旋转矩阵。具体地,理想状态下深度相机的像平面M1上与第一交点A1及第二交点A2相应的像素点P的坐标(u,v)满足如下关系:
其中,z表示导轨与第一标定板B1/第二标定板B2之间的距离,K表示深度相机的内参矩阵,q表示深度相机的像平面M1上与第一交点A1及第二交点A2相应的像素点P在相机坐标系下的坐标。
非理想状态下深度相机的像平面M2上与第一交点A1及第二交点A2相应的像素点P′的坐标(u′,v′)满足如下关系:
其中,z表示导轨与第一标定板B1/第二标定板B2之间的距离,K表示深度相机的内参矩阵,q′表示深度相机的像平面M2上与第一交点A1及第二交点A2相应的像素点P′在相机坐标系下的坐标,R表示非理想状态下深度相机的像平面M2与理想状态下深度相机的像平面M1之间的旋转矩阵。由此可见,只要清楚非理想状态下深度相机的像平面M2与理想状态下深度相机的像平面M1之间的旋转矩阵R,就可以很容易地建立像平面M2上的像素点P′与像平面M1上的像素点P之间的对应关系。
在一个具体实现中,本实施方式中的“获取非理想状态下深度相机的像平面与理想状态下深度相机的像平面之间的旋转矩阵”可以包括:根据深度相机的位姿表达式,获取非理想状态下深度相机的像平面与理想状态下深度相机的像平面之间的初始旋转矩阵;位姿表达式如下所示:
其中,深度相机包括n个像素,n为大于1的正整数,D(P,i)表示深度相机中第i个像素所得到的第一距离,D′(P′,i)表示深度相机中第i个像素所得到的第二距离,e
i表示深度相机中第i个像素所得到的第一距离与第二距离之间的误差,R表示旋转矩阵,T表示深度相机的平移矩阵,J表示雅可比矩阵运算,且
最小时的R为初始旋转矩阵。在得到初始旋转矩阵后,便可以通过所得到的初始旋转矩阵对深度相机进行标定校正以消除倾斜误差所带来的不利影响。
对于本具体实现,由于非理想状态下深度相机的像平面M2与理想状态下深度相机的像平面M1之间的旋转矩阵未知,即像平面M2上的像素点P′与像平面M1上的像素点P之间的对应关系未知,所以只能根据深度相机当前外参的估计值去寻找P′的位置,如果深度相机当前的外参不理想,那么像平面M2上的像素点P′与像平面M1上的像素点P之间的距离差的差别就较大,故而为了减小这个差别,便需要优化深度相机的外参以寻找与P更相似的P′。
判断像平面M2上的像素点P′与像平面M1上的像素点P之间是否相似的标准就是计算第一距离与第二距离之间的误差(即第一距离与第二距离之间的差值),定义第一距离与第二距离之间的误差e=D(P)-D′(P′),而考虑到深度相机包括多个像素(比如包括n个,n为大于1的正整数),那么深度相机的位姿估计问题就变成了上述位姿表达式,当该位姿表达式中的
最小时,该位姿表达式中的R便为初始旋转矩阵。
在另一个具体实现中,以上一个具体实现为基础,本实施方式中的“获取非理想状态下深度相机的像平面与理想状态下深度相机的像平面之间的旋转矩阵”还可以包括:根据初始旋转矩阵计算第一交点、第二交点在深度相机中相应的像素坐标;根据第一交点、第二交点在深度相机中相应的像素坐标,计算第一交点与第二交点之间的第三距离;对第三距离与第一距离的差进行求导,并将求导的结果转换为雅可比矩阵;通过非线性优化算法计算增量、迭代求解的方式对雅可比矩阵进行处理,得到最优旋转矩阵。进一步地,在得到最优旋转矩阵后,便可以通过所得到的最优旋转矩阵对深度相机进行标定校正以消除倾斜误差所带来的不利影响;可以理解的是,由于最优旋转矩阵消除倾斜误差所带来的不利影响的效果优于初始旋转矩阵,所以在得到最优旋转矩阵后,便不再通过初始旋转矩阵对深度相机进行标定校正,而是通过最优旋转矩阵对深度相机进行标定校正。
为了清楚地理解本具体实现,下面对本具体实现进行详细阐述:
设理想状态下深度相机的像平面M1上与第一交点A1、第二交点A2相应的像素点P的相机坐标为p,非理想状态下深度相机的像平面M2上与第一交点A1、第二交点A2相应的像素点P′的相机坐标为q、像素坐标为s,那么通过上一个具体实现所求解出的初始旋转矩阵可以对p、q、s进行关联,表达如下:
其中,z表示导轨与第一标定板B1/第二标定板B2之间的距离,K表示深度相机的内参矩阵。需要说明的是,此处的s与前文中像平面M2上的像素点P′的像素坐标(u′,v′)不等同,此处的s为通过上一个具体实现中的初始旋转矩阵计算出的,即此处求取的是旋转后的像素坐标s。
之后,通过像素坐标s计算第一交点A1与第二交点A2之间的第三距离,与像素坐标s不等同前文中像平面M2上的像素点P′的像素坐标(u′,v′)同理,虽然此处的第三距离对应于前文中的第二距离,但是此处的第三距离是通过上一个具体实现中的初始旋转矩阵计算出的像素坐标并根据该像素坐标在深度相机接收模块中对应的像素接收到的回波信号计算得到,即此处求取的第三距离实际上是旋转后的第二距离。在得到第三距离后,对第三距离与第一距离做差,即求取第三距离与第一距离的误差e=D(p)-D′(s);其中,D(p)表示第一距离,D′(s)表示第三距离。通过e=D(p)-D′(s)可以发现,e随着D′(s)变化,而D′(s)与像素坐标s相关,像素坐标s随初始旋转矩阵R变化,那么为了进一步优化初始旋转矩阵R,就要使得第三距离与第一距离的误差e最小,此时对第三距离与第一距离的误差e进行求导,表达式如下:
其中,ξ为初始旋转矩阵R的李代数形式,δξ为扰动项。
将上述第三距离与第一距离的误差e的求导表达式转换为雅可比矩阵,如下所示:
等效地,
其中,
是对
求导,
可以通过李代数求导得到。基于此,
(即
)可以由如下表达式表示:
其中,f
x与f
y为像素尺寸,像素点P′的相机坐标为q(X,Y),z表示导轨与第一标定板B1/第二标定板B2之间的距离。进一步地,将此与
相结合即可得到更为具体的第三距离与第一距离的误差e的求导表达式的雅可比矩阵。
在得到上述雅可比矩阵之后,便可以通过非线性优化算法(比如高斯牛顿算法)计算增量、迭代求解的方式对上述雅可比矩阵进行处理,从而得到最优旋转矩阵,以利用所得到的最优旋转矩阵对深度相机进行标定校正。在利用最优旋转矩阵对深度相机进行标定校正的过程中,可以通过最优旋转矩阵求取第一交点A1与第二交点A2之间的真实距离,后续的标定流程可以沿用i-TOF相机现有的标定流程,比如wiggling、FPPN等误差标定。
本实施方式提供了一种已知旋转矩阵(即初始旋转矩阵或最优旋转矩阵),去计算第一交点A1与第二交点A2之间的真实距离的技术手段:理想状态下标志点(即第一交点A1、第二交点A2)在深度相机像平面上相应像素点的相应相机坐标是已知的,根据初始旋转矩阵或最优旋转矩阵可以求取标志点在深度相机像平面上相应像素点旋转后的相机坐标,之后再对旋转后的标志板(即第一标定板B1、第二标定板B2)进行平面拟合,标志点在深度相机像平面上的成像满足透视变换,可以得到对应像平面的位置信息,即可以得到非理想状态下深度相机的像平面M2的位置信息。
应当理解的是,上述实施方式仅作为本申请实施例的优选实现,并非是本申请实施例对步骤105的具体流程的唯一限定;对此,本领域技术人员可以在本申请实施例的基础上,根据实际应用场景进行灵活设定。
进一步地,本申请实施例还提供了一种标定系统,该标定系统包括导轨、与导轨滑动连接的标定板、基座、深度相机及控制与处理器,其中,深度相机放置于基座上,基座与标定板分别设立于导轨两端,控制与处理器可控制标定板在导轨上滑动、控制深度相机发射光信号(即前文所述的同一光束G)至标定板并接收经不同距离的标定板(比如前文所述的第一标定板B1及第二标定板B2)反射回的回波信号,以及根据接收到的回波信号执行上述标定方法以完成对深度相机的标定。
综合前文所述,深度相机的倾斜问题可以看成深度相机的像平面沿光心有一个旋转角度,只要计算出该旋转角度(相当于初始旋转矩阵或最优旋转矩阵),就可以求解出第一交点A1与第二交点A2之间的真实距离。实验表明,本申请实施例对深度相机的倾斜校正效果较好,具体校正效果可以参见图3和图4;其中,图3为本申请实施例提供的标定方法于1000mm下的校正效果图,图4为本申请实施例提供的标定方法于2000mm下的校正效果图。
图5为本申请实施例提供的深度相机的模块框图。本申请实施例还提供了一种深度相机,包括投影模块501、采集模块502、处理模块503及存储模块504,其中,存储模块504用于存储执行本申请实施例提供的标定方法时获取的标定参数(比如前文所述的初始旋转矩阵或最优旋转矩阵)。具体地,投影模块501用于向目标区域投射光信号(即前文所述的同一光束G),采集模块502用于接收经目标区域反射回的回波信号,处理模块503用于根据反射回的回波信号生成目标区域的深度图像,并基于存储模块504中的标定参数对深度图像进行校正,从而得到校正后的深度图像。
图6为本申请实施例提供的计算机可读存储介质的模块框图。本申请实施例还提供了一种计算机可读存储介质600,该计算机可读存储介质600上存储有可执行指令610,该可执行指令610被执行时执行本申请实施例提供的标定方法。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请所述的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk)等。
需要说明的是,本申请内容中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于产品类实施例而言,由于其与方法类实施例相似,所以描述的比较简单,相关之处参见方法类实施例的部分说明即可。
还需要说明的是,在本申请内容中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请内容。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本申请内容中所定义的一般原理可以在不脱离本申请内容的精神或范围的情况下,在其它实施例中实现。因此,本申请内容将不会被限制于本申请内容所示的这些实施例,而是要符合与本申请内容所公开的原理和新颖特点相一致的最宽的范围。