1.本发明涉及图像处理领域,尤其涉及一种基于
焦距等效和帧流同步的双
摄像头深度估计方法和装置。
背景技术:
2.近年来,移动设备上增强现实(ar)应用和虚拟现实(vr)应用日益流行,在移动设备上实现增强现实(ar)和虚拟现实(vr)的实时深度估计技术也越发受到重视。在双目深度估计技术已被研发以及移动设备上普遍安装后置双摄像头的背景下,研究人员期望利用移动设备上后置双摄像头实现深度估计。
3.然而,经过深度的调研分析发现,利用移动设备上后置双摄像头实现深度估计面临以下几个挑战:
4.(1):后置双摄像头焦距不同导致极线校正不准确。即移动设备上后置双摄像头的设计初衷是为了满足微距拍摄、广角拍摄等应用场景,它们具有非常不同的焦距。如果直接对双摄像头拍摄图像进行极线校正,极有可能使校正后的图像扭曲变形,影响深度估计效果。
5.(2):后置双摄像头捕捉的帧流不同步导致视差计算精度差。即由于后置双摄像头的帧周期会有稍许差异,因此后置双摄像头在运行时会出现帧流高度不同步的现象。后置双摄像头帧流不同步时拍摄图像在对帧中存在位移,这个位移将导致视差计算不准确,进而影响深度估计效果。
6.目前,尚未有能克服上述难题的技术被提出。
技术实现要素:
7.本发明的目的是提供一种基于焦距等效和帧流同步的双摄像头深度估计方法和装置,以解决因移动设备上双摄像头焦距不同以及帧流不同步导致的深度估计效果差的问题,提高深度估计的准确性。
8.第一方面,本发明提供一种基于焦距等效和帧流同步的双摄像头深度估计方法,
所述双摄像头为置于移动设备上的异构摄像头,所述方法包括:
9.根据迭代fov裁剪技术,对所述双摄像头进行焦距等效;
10.基于预设丢帧阈值,对所述异构摄像头进行帧流同步;
11.利用焦距等效和帧流同步后的双摄像头,对目标图像进行深度估计。
12.根据本发明提供的一种基于焦距等效和帧流同步的双摄像头深度估计方法,所述根据迭代fov裁剪技术,对所述双摄像头进行焦距等效,包括:
13.利用所述双摄像头,采集k对棋盘格图像;
14.滤除所述k对棋盘格图像中重投影误差大于预设重投影误差阈值的图像对,并将剩余的图像对作为原始图像对;
15.根据迭代fov裁剪技术以及所述原始图像对,确定裁剪因子;
16.利用所述裁剪因子,对所述双摄像头中宽
视场摄像头进行数字变焦,以使所述双摄像头的焦距等效;
17.其中,所述k为第一预设值。
18.根据本发明提供的一种基于焦距等效和帧流同步的双摄像头深度估计方法,所述根据迭代fov裁剪技术以及所述原始图像对,确定裁剪因子,包括:
19.步骤a:初始化裁剪因子;
20.步骤b:利用张正友标定法标定所述原始图像对中具有窄视场的图像,得到所述双摄像头中窄视场摄像头对应的焦距;
21.步骤c:在每一次迭代中,以视场中心为基点,按照所述裁剪因子对所述原始图像对中具有宽视场的图像进行全方位裁剪;
22.步骤d:利用张正友标定法标定裁剪后的图像,得到本次迭代所述双摄像头中宽视场摄像头对应的焦距;
23.步骤e:将所述窄视场摄像头对应的焦距和本次迭代所述宽视场摄像头对应的焦距输入到预设焦距差损失函数中,得到本次迭代的焦距差损失函数值;
24.步骤f:若连续g轮迭代的焦距差损失函数值均小于预设损失函数值,则输出当前裁剪因子;否则,更新裁减因子并返回步骤c;
25.其中,g为第二预设值。
26.根据本发明提供的一种基于焦距等效和帧流同步的双摄像头深度估计方法,所述焦距差损失函数的表达式如下:
[0027][0028]
上式中,j(αi)为第i次迭代的焦距差损失函数值,αi为第i次迭代时的裁减因子,为第i次迭代所述宽视场摄像头对应的焦距,f
t
为所述窄视场摄像头对应的焦距。
[0029]
根据本发明提供的一种基于焦距等效和帧流同步的双摄像头深度估计方法,所述更新裁减因子,包括:
[0030]
若本次迭代所述宽视场摄像头对应的焦距与所述窄视场摄像头对应的焦距的差值大于0,则将所述裁减因子更新为所述裁减因子与预设步长的差值;否则,将所述裁减因子更新为所述裁减因子与预设步长的加和值。
[0031]
根据本发明提供的一种基于焦距等效和帧流同步的双摄像头深度估计方法,所述基于预设丢帧阈值,对所述异构摄像头进行帧流同步,包括:
[0032]
将两个摄像头的帧流中索引值相同的两帧图像视为一对匹配帧;其中,所述索引值表示相应一帧图像在帧流中的次序;
[0033]
从索引值升序的方向,定时的搜索目标匹配帧;
[0034]
在搜索到目标匹配帧的情况下,丢弃目标匹配帧中捕捉时间戳靠前的一帧图像,并更新次序在被丢弃的一帧图像之后的各帧图像的捕捉时间戳;其中,所述目标匹配帧为首个满足预设条件的匹配帧;
[0035]
所述预设条件为两帧图像的捕捉时间戳之间的差值大于预设丢帧阈值。
[0036]
根据本发明提供的一种基于焦距等效和帧流同步的双摄像头深度估计方法,在所
述移动设备为android设备的情况下,对所述异构摄像头进行帧流同步的同时,还包括:
[0037]
采用java反射机制,调用camerametadatanative实例中的私有close()成员函数,以释放camerametadatanative实例所持有的元数据;
[0038]
其中,所述元数据,包括:帧速率、图像尺寸、拍摄时间、彩位深、相机像距和相机可控制属性。
[0039]
第二方面,本发明提供一种基于焦距等效和帧流同步的双摄像头深度估计装置,所述双摄像头为置于移动设备上的异构摄像头,所述装置包括:
[0040]
焦距等效模块,用于根据迭代fov裁剪技术,对所述双摄像头进行焦距等效;
[0041]
帧流同步模块,用于基于预设丢帧阈值,对所述异构摄像头进行帧流同步;
[0042]
深度估计模块,用于利用焦距等效和帧流同步后的双摄像头,对目标图像进行深度估计。
[0043]
第三方面,本发明还公开了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的基于焦距等效和帧流同步的双摄像头深度估计方法。
[0044]
第四方面,本发明还公开了一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的基于焦距等效和帧流同步的双摄像头深度估计方法。
[0045]
本发明提供的基于焦距等效和帧流同步的双摄像头深度估计方法和装置,采用迭代视场裁剪方式,同步移动设备上两个摄像头的焦距,以实现精确的极线矫正。同时,对移动设备上两个摄像头捕捉的帧流进行同步,避免移动物体在同一移动设备上的帧间位移。在此基础上,利用焦距等效和帧流同步后的双摄像头对目标图像进行深度估计,可降低深度估计的误差。
附图说明
[0046]
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0047]
图1是现有技术提供的双摄像头系统示意图;
[0048]
图2是本发明提供的基于焦距等效和帧流同步的双摄像头深度估计方法流程图;
[0049]
图3是本发明提供的焦距与视场关系图;
[0050]
图4是本发明提供的迭代fov裁剪技术原理示意图;
[0051]
图5是本发明提供的帧流同步原理示意图;
[0052]
图6是本发明提供的基于焦距等效和帧流同步的双摄像头深度估计装置结构图;
[0053]
图7是本发明提供的实现基于焦距等效和帧流同步的双摄像头深度估计方法的电子设备结构示意图。
具体实施方式
[0054]
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本
发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0055]
图1示例了双摄像头系统,该双摄像头系统模拟了人类视觉在3d世界中进行深度估计的原理。如图1所示,这两个摄像头在不同的位置处于同一方向,距离为b。根据双目深度估计技术可知,要获得点p(xw,yw,zw)的精确深度z有几个先决条件:1)两个摄像头的焦距f应该相等,它保证两个摄像头具有相同的视场,使成像点pl(ul,vl)和pr(ur,vr)位于相同的极线上。(2)两个摄像头需要同时抓拍帧,它避免移动物体在同一对帧之间的位移,是视差准确估计的基础。(3)准确估计两点pl和pr之间的视差dl-dr。
[0056]
满足上述条件,由下式可得深度z:
[0057][0058]
该公式表明,深度根据精确的视差和双摄像头等效焦距很容易计算得到。
[0059]
鉴于此,本发明提供一种基于焦距等效和帧流同步的双摄像头深度估计方法,如图2所示,包括:所述双摄像头为置于移动设备上的异构摄像头,所述方法包括:
[0060]
根据迭代fov裁剪技术,对所述双摄像头进行焦距等效;
[0061]
可以理解的是,现有移动设备上双摄像头的设计初衷是为了满足微距拍摄、广角拍摄等应用场景,它们具有非常不同的焦距。而焦距决定了摄像头的视场(fov),即焦距不同的摄像头视场不同,拍摄的图像的画幅大小不同。在本领域中,对移动物体进行深度估计时,预准备阶段需对双摄像头拍摄的移动物体图像进行极线矫正。如果直接校正焦距不同的双摄像头拍摄的物体图像,双摄像头焦距的巨大差异可能使校正后的图像扭曲变形,进而产生灾难性的极线校正效果。因此,若想在移动设备上实现深度估计,设计能使双摄像头变焦以使双摄像头焦距等效的方法是极为必要的。
[0062]
本发明提供的迭代fov裁剪技术,通过迭代方式进行视场裁剪,以将双摄像头的视场裁剪为一致,进而使得双摄像头的焦距一致。
[0063]
基于预设丢帧阈值,对所述异构摄像头进行帧流同步;
[0064]
可以理解的是,对于移动设备上双摄像头来说,即使设置双摄像头具有相同的帧速率,双摄像头的帧周期(即连续帧之间的时间间隔)也不完全相等。例如:设定双摄像头的帧速率每秒30帧,但是在运行时就会发现主摄像头的平均帧长为33.33ms,次摄像头的平均帧长为33.31ms,即平均每帧有0.02ms的时间差。这种差异会随着双摄像头的运行而不断累积,导致双摄像头的帧流高度不同步。而当两帧图像在不同时间拍摄时,同一关键点(例如:左手)在移动场景中可能会有几十个像素的移动位置,这导致视差精准计算变得即为困难。因此,保证双摄像头的帧流同步是尤为必要的。
[0065]
本发明设定丢帧阈值,以过滤掉时间生成明显不同的帧,保证双摄像头的帧流同步。
[0066]
利用焦距等效和帧流同步后的双摄像头,对目标图像进行深度估计。
[0067]
本发明提供的基于焦距等效和帧流同步的双摄像头深度估计方法,采用迭代视场裁剪方式,同步移动设备上两个摄像头的焦距,以实现精确的极线矫正。同时,对移动设备上两个摄像头捕捉的帧流进行同步,避免移动物体在同一移动设备上的帧间位移。在此基
础上,利用焦距等效和帧流同步后的双摄像头对目标图像进行深度估计,可降低深度估计的误差。
[0068]
在上述各实施例的基础上,作为一种可选的实施例,所述根据迭代fov裁剪技术,对所述双摄像头进行焦距等效,包括:
[0069]
利用所述双摄像头,采集k对棋盘格图像;
[0070]
图3示例了焦距与视场关系图,如图3所示,移动设备上双摄像头的焦距通常是不同的,导致双摄像头的视场(fov)不同。具体而言,根据镜头成像规则,摄像头的视场由摄像头的焦距决定,焦距短的摄像头fw有一个宽视场wfov,焦距长的摄像头f
t
有一个窄视场tfov。因而,只要裁剪wfov使其等于tfov,就可以使双摄像头的焦距都等于f
t
。所以双摄像头的焦距等效问题,被转换为了裁减因子的最优选取问题。
[0071]
本发明在不同位置捕获k对校准模式图像(即棋盘格图像),为裁剪因子的准确获取奠定基础。
[0072]
滤除所述k对棋盘格图像中重投影误差大于预设重投影误差阈值的图像对,并将剩余的图像对作为原始图像对;
[0073]
可以想到的是,重投影误差阈值是基于工况自行选定的值。例如:采集放置在20mm
×
20mm大小平板上的12
×
9棋盘格图像20张,滤除重投影误差超过0.2像素的图像对。
[0074]
本发明滤除重投影误差较大的图像对,以提高双摄像头焦距的标定精度。
[0075]
根据迭代fov裁剪技术以及所述原始图像对,确定裁剪因子;
[0076]
现有方法通常采用图像匹配算法来裁剪视场,例如sift、surf和orb。然而,它们只进行了单应变换,裁剪准确性并不令人满意。对于此,本发明分析通过裁剪视场来寻等效焦距的可行性,进而提出了迭代裁剪fov直到双摄像头焦距相等的技术,其中双摄像头焦距相等时对应的裁减因子,即为需要获取的最优裁减因子。
[0077]
利用所述裁剪因子,对所述双摄像头中宽视场摄像头进行数字变焦,以使所述双摄像头的焦距等效;
[0078]
可以理解的是,数字变焦后两个摄像头拍摄的物体图像具备相同的画幅。此时,将物体图像传递给opencv中的cvstereorectify函数,即可进行精确的极线矫正。
[0079]
其中,所述k为第一预设值。
[0080]
本发明设计了迭代fov裁剪技术,同步移动设备上两个摄像头的焦距,以提高极线校正的精度。
[0081]
在上述各实施例的基础上,作为一种可选的实施例,所述根据迭代fov裁剪技术以及所述原始图像对,确定裁剪因子,包括:
[0082]
步骤a:初始化裁剪因子;
[0083]
步骤b:利用张正友标定法标定所述原始图像对中具有窄视场的图像,得到所述双摄像头中窄视场摄像头对应的焦距;
[0084]
步骤c:在每一次迭代中,以视场中心为基点,按照所述裁剪因子对所述原始图像对中具有宽视场的图像进行全方位裁剪;
[0085]
步骤d:利用张正友标定法标定裁剪后的图像,得到本次迭代所述双摄像头中宽视场摄像头对应的焦距;
[0086]
步骤e:将所述窄视场摄像头对应的焦距和本次迭代所述宽视场摄像头对应的焦
距输入到预设焦距差损失函数中,得到本次迭代的焦距差损失函数值;
[0087]
步骤f:若连续g轮迭代的焦距差损失函数值均小于预设损失函数值,则输出当前裁剪因子;否则,更新裁减因子并返回步骤c;
[0088]
其中,g为第二预设值。
[0089]
可以理解的是,本发明对移动设备上的双摄像头进行焦距等效,采用离线方式完成。
[0090]
图4为迭代fov裁剪技术原理示意图,其展示了迭代fov裁剪的工作流程,具体如下:
[0091]
步骤i:将裁剪因子α0初始化为1;
[0092]
步骤ii:利用张正友标定法标定窄视场棋盘图像,得到窄视场摄像头的焦距;
[0093]
步骤iii:根据αi,以视场中心为基点对宽视场棋盘图像进行全方位裁剪,并利用张正友标定法标定裁剪后的图像,得到与αi相对应的宽视场摄像头的焦距;
[0094]
步骤iv:基于预设焦距差损失函数、与αi相对应的宽视场摄像头的焦距以及窄视场摄像头的焦距,判断是否满足迭代终止条件。如果满足,则此时αi为最终的裁减因子;如果不满足,将αi更新为α
i+1
,并返回步骤iii。
[0095]
这里,本发明采用的迭代终止条件为连续g轮迭代的焦距差损失函数值均小于预设损失函数值。其中,预设损失函数值δ,一般设置为0.01;g一般设置为5。
[0096]
本实施例迭代fov裁剪技术,即通过迭代裁剪的方式寻能够使两个摄像头的焦距等效的裁剪因子α,进而借助裁剪因子α实现画幅相同的图像拍摄,进而为深度学习奠定基础。
[0097]
在上述各实施例的基础上,作为一种可选的实施例,所述焦距差损失函数的表达式如下:
[0098][0099]
上式中,j(αi)为第i次迭代的焦距差损失函数值,αi为第i次迭代时的裁减因子,为第i次迭代所述宽视场摄像头对应的焦距,f
t
为所述窄视场摄像头对应的焦距。
[0100]
本发明设计了焦距差损失函数,以量化每次迭代的双摄像头焦距差损失。通过迭代使焦距差损失最小化,到最佳的裁减因子。
[0101]
在上述各实施例的基础上,作为一种可选的实施例,所述更新裁减因子,包括:
[0102]
若本次迭代所述宽视场摄像头对应的焦距与所述窄视场摄像头对应的焦距的差值大于0,则将所述裁减因子更新为所述裁减因子与预设步长的差值;否则,将所述裁减因子更新为所述裁减因子与预设步长的加和值。
[0103]
本发明视线中,预设步长通常设置为0.01。
[0104]
在上述各实施例的基础上,作为一种可选的实施例,所述基于预设丢帧阈值,对所述异构摄像头进行帧流同步,包括:
[0105]
将两个摄像头的帧流中索引值相同的两帧图像视为一对匹配帧;其中,所述索引值表示相应一帧图像在帧流中的次序;
[0106]
从索引值升序的方向,定时的搜索目标匹配帧;
[0107]
在搜索到目标匹配帧的情况下,丢弃目标匹配帧中捕捉时间戳靠前的一帧图像,并更新次序在被丢弃的一帧图像之后的各帧图像的捕捉时间戳;其中,所述目标匹配帧为首个满足预设条件的匹配帧;
[0108]
所述预设条件为两帧图像的捕捉时间戳之间的差值大于预设丢帧阈值。
[0109]
为了获得时间对齐的帧,以往通常使用额外的外部硬件信号同时触发两个摄像头捕捉图像。然而,在大多数移动设备上,并没有这样的专用硬件来触发摄像头。故而为双摄像头设定同样的帧率来捕捉时间对齐的帧,还是目前的主流趋势。正如之前所言,即使在相同帧率的设置下,双摄像头的实际帧率也略有不同。如果不仔细地同步,异构摄像机捕捉到的帧的时间差会在运行时累积。为此,本发明设置了一个简单而有效的技术,以减少异构摄像头帧之间的时间差异。
[0110]
图5为帧流同步原理示意图,如图5所示,tl和tr分别表示主摄像头和次摄像头的帧周期。图中的小圆圈表示帧,圆圈上方的数字表示帧在帧流中的顺序。摄像头帧流同步依赖于两个摄像头捕捉到每一帧的时间戳,
[0111]
具体为:第一步将主摄像头帧流和次摄像头帧流中顺序相同的两帧为一个帧对。第二步:比较主摄像头帧流和次摄像头帧流中顺序相同的两帧的时间戳。如果一个帧对的时间戳差值小于阈值i,则将两帧视为一对匹配帧,在图5中用实线表示,将这一对匹配帧作为下一步(图像校正)的输入。如果一个帧对的时间戳差值超过阈值θ,丢弃这一帧对中处于较快帧流的帧。第三步:返回第一步,以使被丢弃帧之后一帧与其他帧流中的帧进行对比。即未丢弃前,顺序n-th的帧对不为匹配帧且主摄像头帧流较快,那么丢弃主摄像头帧流中n-th的帧,并用主摄像头帧流中(n+1)-th的帧与次摄像头帧流中n-th的帧进行帧对匹配。
[0112]
可以理解的是,假设主摄像头帧流比次摄像头帧流快(即次摄像头追赶主摄像头),丢弃主摄像头帧流中的一帧后次摄像头帧流会变得比主摄像头帧流快(即主摄像头追赶次摄像头),循环往复,匹配帧的时间戳差值将一直被约束在预设丢帧阈值范围内,近乎完成帧流同步。
[0113]
需要注意的是,通过微调丢帧阈值θ,我们在帧流的同步化和丢失帧之间进行了权衡。i的值越大,可以保留的帧越多,但是帧的时间差可能会变大,会因为物体的位移而导致深度估计不准确。反之i的值越小,可以保留的帧越小,但是帧的时间差或变小,深度估计准确。i的取值应根据实际应用场景确定。例如,在目标对象大部分是静态的场景中,我们可以使用一个更大的i来容忍稍微不同步的帧。而如果目标对象移动较快,θ的值应该更小,以确保更高的精度。
[0114]
本发明对移动设备上两个摄像头捕捉的帧流进行同步,避免移动物体在同一移动设备上的帧间位移,进而提高深度估计的准确性。
[0115]
在上述各实施例的基础上,作为一种可选的实施例,在所述移动设备为android设备的情况下,对所述异构摄像头进行帧流同步的同时,还包括:
[0116]
采用java反射机制,调用camerametadatanative实例中的私有close()成员函数,以释放camerametadatanative实例所持有的元数据;其中,所述元数据,包括:帧速率、图像尺寸、拍摄时间、彩位深、相机像距和相机可控制属性。
[0117]
在研究帧流同步的同时,研究人员发现对于android系统,从双摄像头获取帧流会频繁触发android垃圾收集(gc)事件,导致双摄像头的帧周期波动。通过跟踪内存使用情
况,我们发现频繁的gc是由于未回收的元数据。即运行一段时间后,未回收的元数据将占用所有预分配的内存,android系统触发gc释放内存。为了解决这个问题,本发明预在触发gc之前自动释放元数据,以减少gc次数,进而减少双摄像头的帧周期波动。
[0118]
具体的,android系统的app向camera2 api发送capturerequest实例时,camera2 api会返回一个captureresult实例:captureresult实例中会包含一个camerametadatanative实例,这个实例的类重写了finalize()函数。对于重写了finalize()函数的类,在该类的实例未被任何变量引用时,该实例会被加入到falizerdaemon的队列中,等待被回收内存。但是,若gc在一段时间内没有发生且队列为空时,falizerdaemon会一直阻塞,使得新加入falizerdaemon的camerametadatanative实例无法被回收内存,从而导致了内存的不断增加,进而引发gc的频繁发生。只有发生gc后,android系统的falizerdaemon会调用实例的falize()函数,从而间接调用close()函数以释放元数据。
[0119]
由于camerametadatanative实例中有用的元数据是只与当前帧相关,因此可以及时释放失效的元数据。考虑到是finalize()时私有的未暴露在外的api函数以及finalize()函数调用了close()函数释放元数据,本发明采用java反射方法直接调用close()函数,以释放camerametadatanative实例中的元数据。
[0120]
本发明通过及时发布由android创建的元数据,避免频繁触发垃圾收集(gc),进而减少双摄像头的帧周期波动,进而降低双摄像头帧流不同步的概率。
[0121]
第二方面,对本发明提供的基于焦距等效和帧流同步的双摄像头深度估计装置进行描述,下文描述的基于焦距等效和帧流同步的双摄像头深度估计装置与上文描述的基于焦距等效和帧流同步的双摄像头深度估计方法可相互对应参照。图6示例了一种基于焦距等效和帧流同步的双摄像头深度估计装置的结构示意图,图中所述装置包括:
[0122]
焦距等效模块21,用于根据迭代fov裁剪技术,对所述双摄像头进行焦距等效;
[0123]
帧流同步模块22,用于基于预设丢帧阈值,对所述异构摄像头进行帧流同步;
[0124]
深度估计模块23,用于利用焦距等效和帧流同步后的双摄像头,对目标图像进行深度估计。
[0125]
本发明提供的基于焦距等效和帧流同步的双摄像头深度估计装置,采用迭代视场裁剪方式,同步移动设备上两个摄像头的焦距,以实现精确的极线矫正。同时,对移动设备上两个摄像头捕捉的帧流进行同步,避免移动物体在同一移动设备上的帧间位移。在此基础上,利用焦距等效和帧流同步后的双摄像头对目标图像进行深度估计,可降低深度估计的误差。
[0126]
第三方面,图7示例了一种电子设备的实体结构示意图。如图7所示,该电子设备可以包括:处理器(processor)710、通信接口(communications interface)720、存储器(memory)730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。处理器710可以调用存储器730中的逻辑指令,以执行基于焦距等效和帧流同步的双摄像头深度估计测方法,所述双摄像头为置于移动设备上的异构摄像头,该方法包括:根据迭代fov裁剪技术,对所述双摄像头进行焦距等效;基于预设丢帧阈值,对所述异构摄像头进行帧流同步;利用焦距等效和帧流同步后的双摄像头,对目标图像进行深度估计。
[0127]
此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为
独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0128]
第四方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,以执行基于焦距等效和帧流同步的双摄像头深度估计测方法,所述双摄像头为置于移动设备上的异构摄像头,该方法包括:根据迭代fov裁剪技术,对所述双摄像头进行焦距等效;基于预设丢帧阈值,对所述异构摄像头进行帧流同步;利用焦距等效和帧流同步后的双摄像头,对目标图像进行深度估计。
[0129]
第五方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,以执行基于焦距等效和帧流同步的双摄像头深度估计测方法,所述双摄像头为置于移动设备上的异构摄像头,该方法包括:根据迭代fov裁剪技术,对所述双摄像头进行焦距等效;基于预设丢帧阈值,对所述异构摄像头进行帧流同步;利用焦距等效和帧流同步后的双摄像头,对目标图像进行深度估计。
[0130]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0131]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0132]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
技术特征:
1.一种基于焦距等效和帧流同步的双摄像头深度估计方法,其特征在于,所述双摄像头为置于移动设备上的异构摄像头,所述方法包括:根据迭代fov裁剪技术,对所述双摄像头进行焦距等效;基于预设丢帧阈值,对所述异构摄像头进行帧流同步;利用焦距等效和帧流同步后的双摄像头,对目标图像进行深度估计。2.根据权利要求1所述的基于焦距等效和帧流同步的双摄像头深度估计方法,其特征在于,所述根据迭代fov裁剪技术,对所述双摄像头进行焦距等效,包括:利用所述双摄像头,采集k对棋盘格图像;滤除所述k对棋盘格图像中重投影误差大于预设重投影误差阈值的图像对,并将剩余的图像对作为原始图像对;根据迭代fov裁剪技术以及所述原始图像对,确定裁剪因子;利用所述裁剪因子,对所述双摄像头中宽视场摄像头进行数字变焦,以使所述双摄像头的焦距等效;其中,所述k为第一预设值。3.根据权利要求2所述的基于焦距等效和帧流同步的双摄像头深度估计方法,其特征在于,所述根据迭代fov裁剪技术以及所述原始图像对,确定裁剪因子,包括:步骤a:初始化裁剪因子;步骤b:利用张正友标定法标定所述原始图像对中具有窄视场的图像,得到所述双摄像头中窄视场摄像头对应的焦距;步骤c:在每一次迭代中,以视场中心为基点,按照所述裁剪因子对所述原始图像对中具有宽视场的图像进行全方位裁剪;步骤d:利用张正友标定法标定裁剪后的图像,得到本次迭代所述双摄像头中宽视场摄像头对应的焦距;步骤e:将所述窄视场摄像头对应的焦距和本次迭代所述宽视场摄像头对应的焦距输入到预设焦距差损失函数中,得到本次迭代的焦距差损失函数值;步骤f:若连续g轮迭代的焦距差损失函数值均小于预设损失函数值,则输出当前裁剪因子;否则,更新裁减因子并返回步骤c;其中,g为第二预设值。4.根据权利要求3所述的基于焦距等效和帧流同步的双摄像头深度估计方法,其特征在于,所述焦距差损失函数的表达式如下:上式中,j(α
i
)为第i次迭代的焦距差损失函数值,α
i
为第i次迭代时的裁减因子,为第i次迭代所述宽视场摄像头对应的焦距,f
t
为所述窄视场摄像头对应的焦距。5.根据权利要求3所述的基于焦距等效和帧流同步的双摄像头深度估计方法,其特征在于,所述更新裁减因子,包括:若本次迭代所述宽视场摄像头对应的焦距与所述窄视场摄像头对应的焦距的差值大
于0,则将所述裁减因子更新为所述裁减因子与预设步长的差值;否则,将所述裁减因子更新为所述裁减因子与预设步长的加和值。6.根据权利要求1所述的基于焦距等效和帧流同步的双摄像头深度估计方法,其特征在于,所述基于预设丢帧阈值,对所述异构摄像头进行帧流同步,包括:将两个摄像头的帧流中索引值相同的两帧图像视为一对匹配帧;其中,所述索引值表示相应一帧图像在帧流中的次序;从索引值升序的方向,定时的搜索目标匹配帧;在搜索到目标匹配帧的情况下,丢弃目标匹配帧中捕捉时间戳靠前的一帧图像,并更新次序在被丢弃的一帧图像之后的各帧图像的捕捉时间戳;其中,所述目标匹配帧为首个满足预设条件的匹配帧;所述预设条件为两帧图像的捕捉时间戳之间的差值大于预设丢帧阈值。7.根据权利要求1所述的基于焦距等效和帧流同步的双摄像头深度估计方法,其特征在于,在所述移动设备为android设备的情况下,对所述异构摄像头进行帧流同步的同时,还包括:采用java反射机制,调用camerametadatanative实例中的私有close()成员函数,以释放camerametadatanative实例所持有的元数据;其中,所述元数据,包括:帧速率、图像尺寸、拍摄时间、彩位深、相机像距和相机可控制属性。8.一种基于焦距等效和帧流同步的双摄像头深度估计装置,其特征在于,所述双摄像头为置于移动设备上的异构摄像头,所述装置包括:焦距等效模块,用于根据迭代fov裁剪技术,对所述双摄像头进行焦距等效;帧流同步模块,用于基于预设丢帧阈值,对所述异构摄像头进行帧流同步;深度估计模块,用于利用焦距等效和帧流同步后的双摄像头,对目标图像进行深度估计。9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述基于焦距等效和帧流同步的双摄像头深度估计方法。10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述基于焦距等效和帧流同步的双摄像头深度估计方法。
技术总结
本发明涉及一种基于焦距等效和帧流同步的双摄像头深度估计方法和装置,包括:根据迭代FoV裁剪技术,对所述双摄像头进行焦距等效;基于预设丢帧阈值,对所述异构摄像头进行帧流同步;利用焦距等效和帧流同步后的双摄像头,对目标图像进行深度估计。本发明采用迭代视场裁剪方式,同步移动设备上两个摄像头的焦距,以实现精确的极线矫正。同时,对移动设备上两个摄像头捕捉的帧流进行同步,避免移动物体于同一时刻在两个摄像头上的帧间位移。在此基础上,利用焦距等效和帧流同步后的双摄像头对目标图像进行深度估计,可降低深度估计的误差。可降低深度估计的误差。可降低深度估计的误差。
技术研发人员:
刘云新 李元春
受保护的技术使用者:
清华大学
技术研发日:
2022.07.05
技术公布日:
2022/11/25