一种无人机航拍图像拼接优化的方法、装置和存储介质
技术领域
本申请涉及计算机视觉技术领域,特别涉及一种无人机航拍图像拼接优化的方法、装置和存储介质。
背景技术
传统的测绘技术通常是将地面的特征点和界线通过测量手段,比如利用遥感、激光、超声等,来获取反映地面图形和位置的信息。传统的测绘技术虽然精度高,但其成本高,且从信息采集到生成结果的时间长。针对传统技术的缺点,目前已经出现利用无人机进行航拍,利用航拍的图像进行图像拼接,生成全景图。图像拼接主要是指将一组有部分重叠区域的图像拼接成一幅更全面的全景图像的过程,能够弥补单幅图像视野范围小的缺陷。
由于无人机在航拍过程会不停地移动或倾斜,所拍摄的图像之间存在旋转、平移、缩放等变化,因此在现有的图像拼接过程中,需要将图像进行一系列变换才能准确拼接。在拼接过程中,由于存在误差积累,不免会出现拼接错位、图像畸变等现象。
发明内容
本申请实施例提供了一种无人机航拍图像拼接优化的方法,可以避免在拼接过程中积累的误差所导致的拼接错位或者畸变等现象。具体方案为:
一种无人机航拍图像拼接优化的方法,包括:
获取当前关键帧;
将所述当前关键帧作为环尾关键帧进行回环检测以确定环首关键帧;所述环首关键帧为所述无人机飞行轨迹所形成回环的首帧,所述环尾关键帧为所述无人机飞行轨迹所形成回环的尾帧;
根据所述环首关键帧和环尾关键帧计算两者之间的相似变换关系;
根据所述相似变换关系对无人机航拍图像拼接过程中的关键帧的位姿进行优化;
根据优化后的关键帧的位姿重新进行图像拼接。
本申请实施例还提供一种无人机航拍图像拼接优化的装置,可以避免在拼接过程中积累的误差所导致的拼接错位或者畸变等现象。具体方案为:
一种无人机航拍图像拼接优化的装置,该装置包括:
获取单元,用于获取当前关键帧;
回环检测单元,用于将所述当前关键帧作为环尾关键帧进行回环检测以确定环首关键帧;所述环首关键帧为所述无人机飞行轨迹所形成回环的首帧,所述环尾关键帧为所述无人机飞行轨迹所形成回环的尾帧;
相似变换计算单元,用于根据所述环首关键帧和环尾关键帧计算两者之间的相似变换关系;
位姿优化单元,用于根据所述相似变换关系对无人机航拍图像拼接过程中的关键帧的位姿进行优化;
拼接单元,用于根据优化后的关键帧的位姿重新进行图像拼接。
本申请实施例还提供一种计算机可读存储介质,可以避免在拼接过程中积累的误差所导致的拼接错位或者畸变等现象。具体方案为:
一种计算机可读存储介质,存储有计算机指令,所述指令被处理器执行时可实现上述的无人机航拍图像拼接优化方法。
本申请实施例还提供一种电子设备,可以避免在拼接过程中积累的误差所导致的拼接错位或者畸变等现象。具体方案为:
一种电子设备,该电子设备包括上述的计算机可读存储介质,还包括可执行所述计算机可读存储介质的处理器。
由上述技术方案可见,本申请实施例提供一种无人机航拍图像拼接优化的方法、装置和存储介质。具体的说,将当前帧作为环尾关键帧,通过回环检测方式确定出环首关键帧,由此确定无人机飞行轨迹所形成的回环。由于检测出无人机飞行轨迹形成了回环,其环首关键帧和环尾关键帧应该针对的是同一个场景的拍摄。由于误差的积累,对应同一个场景的环首关键帧和环尾关键帧之间已经发生了变化,这种变化可以用环首关键帧和环尾关键帧的相似变换关系表示。那么,利用这种相似变换关系对拼接过程中的关键帧的位姿进行优化,就可以消除误差积累导致的拼接错位或者畸变等现象,重新绘制全景图,并在此基础上使得后续图像可以正确拼接。
附图说明
图1表示方法实施例一的流程图。
图2表示方法实施例二进行回环检测以确定环首关键帧的方法流程图。
图3表示方法实施例二筛选出候选环首关键帧的方法流程图。
图4表示方法实施例三计算相似变换关系的方法流程图。
图5表示方法实施例四对所有关键帧的位姿进行优化的方法流程图。
图6表示装置实施例一的内部结构示意图。
图7表示装置实施例二的内部结构示意图。
图8表示回环检测单元R2的内部结构示意图。
图9表示位姿优化单元R4的一种内部结构示意图。
图10表示位姿优化单元R4的另一种内部结构示意图。
图11表示装置实施例三的内部结构示意图。
具体实施方式
为使本申请的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本申请作进一步详细说明。
本申请实施例提供了一种无人机航拍图像拼接优化的方法,可以利用无人机飞行轨迹形成回环的情况对已拼接的图像进行优化,从而消除积累的误差,达到准确拼接的目的。本申请利用回环检测优化拼接图像的原因在于,无人机航拍时在同一个区域可能会往复运动,原来已拍摄过的场景可能会被再次拍摄。如果将当前关键帧作为环尾关键帧,将此前已拍摄同样场景的图像为环首关键帧,那么,从环首关键帧到环尾关键帧,无人机飞行轨迹可以形成一个回环。由于图像拼接过程中误差的累积,针对同一个拍摄场景的环首关键帧和环尾关键帧,其位姿已经不完全相同,发生了较大的变化,这种变化可以用它们之间的相似变换关系来表示。然后利用该相似变换关系对无人机航拍图像拼接过程中的关键帧的位姿进行优化,以消除误差积累,从而再次准确进行图像拼接。
本申请方法实施例一详细描述了无人机航拍图像拼接优化的方法。图1是方法实施例一的流程图,如图1所示,该方法包括:
步骤101:获取当前关键帧。
步骤102:将所述当前关键帧作为环尾关键帧进行回环检测以确定环首关键帧;所述环首关键帧为所述无人机飞行轨迹所形成回环的首帧,所述环尾关键帧为所述无人机飞行轨迹所形成回环的尾帧。
这里的回环检测主要是从已有的关键帧中找到与当前关键帧相似的关键帧,将其作为环首关键帧。本领域技术人员知道,在无人机航拍过程中,会产生大量的图像,但只有被甄别为关键帧的图像才会参与拼接。无人机在航拍过程是连续拍摄的,相邻图像之间的变化应该不大,但随着无人机的转移,相邻图像之间存在某种变化趋势,而对变化趋势起关键作用的图像在本申请实施例中称为关键帧。
步骤103:根据所述环首关键帧和环尾关键帧计算两者之间的相似变换关系。
由于环首关键帧和环尾关键帧都是拍摄的同一个场景,两幅图像既相似但又由于误差积累导致其位姿和尺度产生较大区别,它们互相之间的关系可由相似变换关系来描述。
步骤104:根据所述相似变换关系对无人机航拍图像拼接过程中关键帧的位姿进行优化。
实际应用中,由于航拍拼接图像针对的是一个统一的全景图,绘制全景图的各关键帧之间存在相互关系。如果将其中一个图像的位姿进行更改,其余关键帧可能也需要相应进行更改。因此,在计算出环首关键帧和环尾关键帧的相似变换关系后,在对环尾关键帧位姿进行调整时,还可以对用于拼接过程中的已有关键帧的位姿进行优化调整,从而保持全景图的统一绘制。
步骤105:根据优化后的关键帧的位姿重新进行图像拼接。
本领域技术人员知道,图像拼接通常利用关键帧参与真正的拼接工作。在优化前已经绘制出全景图,只是存在误差积累。参与拼接工作的关键帧经过优化后可以得到消除误差积累的新的位姿,根据新的位姿重新绘制全景图,则可以消除误差积累造成的错位或畸变等现象,得到更加优化的图像拼接结果。
实际应用中,如何利用回环检测以确定环首关键帧是本申请方案得以实现的重点之一,下面用方法实施例二进行详细阐述。
图2是将当前关键帧作为环尾关键帧进行回环检测以确定环首关键帧的方法流程图。如图2所示,该方法包括:
步骤201:计算当前关键帧和已有的关键帧之间的相似度,根据相似度计算结果选择出所有满足设置的相似度阈值的关键帧组成候选环首关键帧集合。
本步骤需要从已有的关键帧中筛选出候选环首关键帧,筛选的依据就是与当前关键帧的相似度计算结果,其具体的实施方法如图3所示,包括:
步骤3011:根据已有的定向快速旋转(ORB)字典计算所述当前关键帧和共视关键帧的相似度的平均值,得到共视平均相似度。
本领域技术人员知道,ORB特征点是图像中比较显著的点,比如轮廓点、较暗区域中的亮点、较亮区域的暗点等,可以通过FAST算法检测从ORB特征点处提取ORB特征数据,提取出的ORB特征数据包括特征描述符。其中,ORB字典是事先建立的用于保存ORB特征数据的结构,其方法是提取大量图像ORB特征,利用特征描述符将ORB特征进行聚类,表示成深度为d的k叉树。该k叉树的叶子节点称为单词,用于保存ORB特征描述符。所述ORB特征描述符是一个若干位的字符串。
在图像拼接中,可以生成由共视帧组成的集合,即共视图。其中,当前关键帧的共视关键帧属于已有的关键帧,表示与当前关键帧满足共视条件的关键帧,共视条件是指两个不同关键帧的ORB特征点对应相同三维点的数量大于设置的数量阈值。也就是说,当某个关键帧的ORB特征点可以与当前关键帧对应相同的三维点,而且对应的数量超过了设置的三维点对应数量阈值,那么该关键帧和当前关键帧满足共视条件,也称为该当前关键帧的共视帧。所有满足共视条件的关键帧组成一个集合,则称为该当前关键帧的共视图。当然,如果某个关键帧与当前关键帧不满足共视条件,则可以称为非共视关键帧。
本步骤中,当前关键帧的ORB特征点对应了ORB字典若干叶子节点的单词,共视关键帧的ORB特征点也对应了ORB字典若干叶子节点的单词,综合两者的对应情况就可以计算出相似度。比如:当前关键帧有x1个ORB特征点对应单词1,有x2个ORB特征点对应单词2,有x3个ORB特征点对应单词3……相应地,某个共视关键帧有y1个ORB特征点对应单词1,有y2个ORB特征点对应单词2,有y3个ORB特征点对应单词3。其中,x1<y1,x2>y2,x3<y3,那么将当前关键帧和共视关键帧对应的相同情况抽取出来即可得到两者之间的相似度x1+y2+x3。当然,实际应用中还有其他计算当前关键帧和共视关键帧的相似度的方法,在此不一一列举。
本步骤中,按照上述方法分别计算出当前关键帧和其每一个共视关键帧的相似度,再计算其平均值,或者计算其加权平均值,则可以得到共视平均相似度。
步骤3012:根据所述ORB字典计算所述当前关键帧和非共视关键帧的相似度,选择其中相似度最高值作为最高相似度。
本步骤实施方式和步骤3011相似,区别在于计算的是除共视关键帧以外的其他关键帧的相似度,并从中找出相似度最高的。这里,不管是共视关键帧还是非共视关键帧,对于当前关键帧来说都属于在拼接过程已经处理过的已有关键帧。
步骤3013:根据共视平均相似度和最高相似度计算得到相似度阈值。
实际应用中,与当前关键帧相似度高的有两类图像,第一类是在时序上靠近当前关键帧的共视关键帧,第二类是在时序上比较远但与当前关键帧拍摄的是同一场景的非共视关键帧。本步骤可以参考这两类情况来设置相似度阈值,比如可以设置为max(sim1,th*sim2)。其中,sim1表示共视平均相似度,sim2表示历史最高相似度,th表示权重系数,通过调节th权重系数可以调节筛选候选环首关键帧的门槛。
步骤3014:将大于所述相似度阈值的关键帧作为候选环首关键帧,所述候选环首关键帧不包括所述当前关键帧的共视关键帧以及邻近关键帧,所述邻近关键帧是与所述当前关键帧在时序上小于设置的时序阈值的关键帧,所述邻近关键帧属于已有的关键帧。
本步骤利用设置的相似度阈值确定候选环首关键帧。实际应用中,除了当前关键帧的共视关键帧以及邻近关键帧,在已有关键帧中可能存在多个满足相似度阈值的关键帧,都可以作为候选环首关键帧。筛选出候选环首关键帧的多少则由相似度阈值的大小来进行调节。另外,本步骤将当前关键帧的共视关键帧以及邻近关键帧排除在外,不参加候选环首关键帧的筛选。其原因在于,共视关键帧和邻近关键帧在时序上很靠近当前关键帧,可以认为是与当前关键帧正在拍摄同一场景导致的较高相似度。这种情况并非是由于曾经拍摄过,当前又回到该场景重新拍摄的情况,无人机飞行轨迹没有形成回环,因此不参加候选环首关键帧的筛选。当前关键帧的邻近关键帧是小于设置的时序阈值的关键帧,比如是与当前关键帧在时序上小于10帧,但并不满足与当前关键帧的共视条件的关键帧。
上述步骤3011~步骤3014从已有的关键帧中确定出了候选环首关键帧。
步骤202:针对每一个候选环首关键帧,甄别其是否属于连续满足相似度阈值的关键帧中的一帧,且连续的帧数达到设置的连续阈值,如果满足则继续保留作为候选环首关键帧;否则将其从候选环首关键帧集合中剔除。
实际应用中,如果某个关键帧是环首关键帧,不但该关键帧满足相似度阈值条件,而且由于无人机曾经在该场景中进行拍摄,其时序邻近的关键帧拍摄的是同样的场景,很可能也应该满足相似度阈值的条件。或者说,当有连续若干关键帧都满足相似度阈值的条件,其中的关键帧才能作为候选环首关键帧。至于连续的帧数可以自行确定,只要达到设置的连续阈值即可。相反,如果不满足上述条件,该候选环首关键帧则可认为是某个孤立帧,可能是由于相似度阈值设置的问题才被误确定为候选环首关键帧,属于真正的环首关键帧的概率不大,应该将其从候选环首关键帧集合中剔除。
此时,通过上述方法从已有关键帧确定出候选环首关键帧。后续可以将每一个候选环首关键帧作为环首关键帧,将当前关键帧作为环尾关键帧,计算环首关键帧和环尾关键帧之间的相似变换关系。
为了更加详细地描述环首关键帧和环尾关键帧之间相似变换关系计算的方案,下面用方法实施例三详细描述。如图4所示,计算相似变换关系的方法包括:
步骤401:从所述候选环首关键帧集合中选择一个候选环首关键帧。
步骤402:根据所述ORB字典将该候选环首关键帧的ORB特征点和所述当前关键帧的ORB特征点进行匹配,如果匹配对达到设置的第一匹配阈值,则继续执行步骤403;否则,执行步骤404。
步骤403:将该候选环首关键帧作为环首关键帧,并继续执行步骤405。
步骤404:将该候选环首关键帧从候选环首关键帧集合中剔除,选择下一个候选环首关键帧,并返回步骤402重新执行所述将该候选环首关键帧的ORB特征点和所述当前关键帧的ORB特征点进行匹配的步骤。
本实施例中,在计算相似变换关系之前,利用步骤402~404对候选环首关键帧集合中的候选环首关键帧进行了第一次筛选,以提高选择环首关键帧的准确性。筛选的依据在于,如果选择出的候选环首关键帧符合真正的环首关键帧条件,那么与当前关键帧应该存在大量匹配的ORB特征点,否则可以认为并非真正的环首关键帧。
本领域技术人员知道,不同关键帧中的ORB特征点是否匹配可以通过其ORB特征距离来表示。假设候选环首关键帧的某个ORB特征点在ORB字典中特征描述符为A,当前关键帧中的某个ORB特征点在ORB字典中特征描述符为B。通过比较两个特征描述符的差异程度就可以衡量两个特征之间的距离,比如汉明距离。如果特征距离小于预先设置的特征距离阈值,则可以认为两个ORB特征是匹配的,是一对匹配对。按照这种方式将候选环首关键帧和当前关键帧的ORB特征全面对比,可以获得若干匹配对。如果匹配对足够多,超过设置的第一匹配阈值,则可以认为选择出的候选环首关键帧为环首关键帧的概率比较大,将其作为环首关键帧进一步参与步骤405的计算。
步骤405:根据所述环首关键帧和环尾关键帧计算两者之间的相似变换关系。
这里的环首关键帧就是步骤402~步骤404筛选通过的候选关键帧,环尾关键帧就是当前关键帧。计算环首关键帧和环尾关键帧之间相似变换关系的方法,与图像拼接中计算某两帧图像之间相似变换关系的方法相似,可以用下述公式一表示:
其中,S表示环首关键帧和环尾关键帧之间相似变换关系,R表示旋转矩阵,t表示平移向量,s表示尺度因子。通过上述公式一就可以得到环首关键帧和环尾关键帧之间的相似变换关系。
步骤406:确定所述环首关键帧ORB特征点和环尾关键帧ORB特征点满足所述相似变换关系的匹配对。
步骤407:判断匹配对数量是否达到设置的第二匹配阈值,如果是,则继续执行步骤408;否则,返回步骤404。
本实施例中,在计算出相似变换关系之后,利用步骤406~步骤407对步骤405中的候选环首关键帧进行了第二次筛选,以提高选择环首关键帧的准确性。筛选的依据在于,如果选择出的候选环首关键帧符合真正的环首关键帧条件,那么该候选环首关键帧的ORB特征点和当前关键帧ORB特征点之间应该存在大量符合相似变换关系的匹配对,否则可以认为选择出的候选环首关键帧并非真正的环首关键帧。
本领域技术人员知道,在步骤405计算相似变换关系时,比如利用Horn方法可以计算其相似变换关系,需要从环首关键帧和环尾关键帧中随机抽取三组匹配点。为了确保计算的准确性,当步骤407判断出不满足第二匹配阈值时,还可以重新从环首关键帧和环尾关键帧中抽取三组匹配点,如果重新抽取的次数达到设置的抽取次数阈值时仍然未满足所述第二匹配阈值,则可以认为该候选环首关键帧并非真正的环首关键帧。
另外,在确定环首关键帧ORB特征点和环尾关键帧ORB特征点满足相似变换关系的匹配对时,可以将相似变换关系应用于与环首关键帧ORB特征点匹配的环尾关键帧ORB特征点所对应的三维点,得到经过相似变换的三维点,然后将经过相似变换得到的三维点投影到环首关键帧中,如果与该环尾关键帧ORB特征点匹配的环首关键帧ORB特征点在投影半径内,则认为该环首关键帧ORB特征点和该环尾关键帧ORB特征点是满足相似变换关系的匹配对。比如:计算出的环首关键帧和环尾关键帧之间的相似变化关系为S1,环首关键帧ORB特征点A1和环尾关键帧ORB特征点B1是一对匹配对,环尾关键帧ORB特征点B1对应的三维点为M1。那么,三维点M1经过相似变换计算得到M1′,将M1′投影到环首关键帧上,环首关键帧ORB特征点A1在投影半径内,此时可以认为环首关键帧ORB特征点A1和环尾关键帧ORB特征点B1是一对满足相似变换关系的匹配对。
步骤408:根据所述相似变换关系将环尾关键帧所有的ORB特征点投影到所述环首关键帧。
步骤409:将投影半径中的ORB特征点作为所述环尾关键帧中对应的ORB特征点的匹配点。
步骤410:根据所述匹配点构建匹配误差函数,所述匹配误差函数表示投影点和所述匹配点之间的误差。
步骤411:根据该匹配误差函数并利用非线性优化算法对所述相似变换关系进行优化。
本实施例上述步骤408~步骤411是对计算出的相似变换关系进行优化的措施。上述步骤405已经计算出环首关键帧和环尾关键帧之间的相似变换关系,而且利用步骤406和407确定环首关键帧和环尾关键帧中有足够的满足这种相似变换关系的ORB特征点匹配对。但是该环首关键帧和环尾关键帧中可能还存在大量未形成匹配对的ORB特征点,如果从中确定更多的匹配对,在这些更多匹配对限定下相似变换关系将会更加可靠。因此,步骤408将环尾关键帧所有的ORB特征点都投影到环首关键帧中,并根据步骤409的投影情况确定更多的匹配对。步骤408和步骤409投影的方法和上述步骤406中涉及的方法相似,即:将相似变换关系应用于环尾关键帧所有ORB特征点对应的三维点,得到经过相似变换的三维点并投影到环首关键帧中,如果某环首关键帧ORB特征点在投影半径内,则认为是该环尾关键帧ORB特征点的匹配点。这样匹配成功的匹配对通常比之前已经确认的匹配对更多。
根据这些匹配点可以构建匹配误差函数,如公式2所示:
e=‖x1-x2‖ 公式2
其中,e表示误差,x1表示环首关键帧ORB特征点的坐标,x2表示投影点的坐标。该匹配误差函数实际上可以看成非线性最小二乘法问题,利用非线性优化算法,比如LM方法,就可以对原有的相似变换关系进行优化。
步骤412:根据优化后的相似变换关系将所述环尾关键帧中所有的ORB特征点投影到所述环首关键帧上。
步骤413:将投影半径中的ORB特征点和所述环尾关键帧中对应的ORB特征点作为匹配对。
步骤414:如果匹配对达到设置的第三匹配阈值,则继续执行步骤415;否则,返回步骤404。
步骤415:所述环首关键帧继续作为环首关键帧。
本实施例步骤412~步骤415对选择出的候选环首关键帧进行第三次筛选,以进一步提高选择环首关键帧的准确性。筛选的依据在于,如果选择出的候选环首关键帧符合真正的环首关键帧条件,那么在经过相似变换关系的优化后,环首关键帧ORB特征点和环尾关键帧ORB特征点之间应该形成更多的符合优化后的相似变换关系的匹配对,否则可以认为选择的候选环首关键帧并非真正的环首关键帧。
相似的,这里投影的方法仍然和上述步骤406以及步骤408~步骤409的方法相似,即:将优化后的相似变换关系应用于环尾关键帧所有ORB特征点对应的三维点,得到经过相似变换的三维点并投影到环首关键帧中,如果某环首关键帧ORB特征点在投影半径内,则认为是该环尾关键帧ORB特征点的匹配点。
本实施例在计算环首关键帧和环尾关键帧的相似变换关系过程中,分别利用第一匹配阈值、第二匹配阈值和第三匹配阈值对选择出来作为环首关键帧的候选环首关键帧进行筛选或甄别,其目的是为了得到与环尾关键帧最相似的真正的环首关键帧。且本实施例还对计算出来的相似变换关系进行了优化,其目的是为了得到更加可靠的相似变换关系。如果不需要进一步提高对环首关键帧的选择门槛以及相似变换关系的可靠性,则可以省略本实施例上述三次筛选步骤和优化步骤。或者,上述对候选环首关键帧的筛选的次数由应用本申请方案的用户自行确定。
利用上述实施例三计算出环首关键帧和环尾关键帧之间的相似变换关系之后,后续可以利用这种相似变换关系对无人机航拍图像拼接过程中的关键帧的位姿进行优化。本申请方法实施例四描述了对无人机航拍图像拼接过程中所有关键帧的位姿进行优化的方法。当然,实际应用中,在不影响全景图绘制效果的前提下,也可以对一部分关键帧的位姿进行优化。如图5所示,该方法具体包括:
步骤501:根据环尾关键帧确定其所有的共视关键帧,将确定出的共视关键帧和所述环尾关键帧组成泛环尾关键帧集合,所述共视关键帧属于已有的关键帧,表示与环尾关键帧满足共视条件的关键帧,所述共视条件为不同关键帧的ORB特征点对应相同三维点的数量大于设置的数量阈值。
本步骤所述共视关键帧和方法实施例二涉及的共视关键帧的概念相同。本实施例将环尾关键帧扩展为泛环尾关键帧的原因在于,环尾关键帧是当前关键帧,而与当前关键帧时序上接近的共视关键帧拍摄的是同一场景,与环首关键帧的相似度也很高,可以比照作为环尾关键帧采用同样方法进行处理。另外,后续在对所有的关键帧位姿进行优化时,可以将环尾关键帧存在共视关键帧这一因素作为优化的一个约束条件。当然,如果不考虑上述因素,也可以不按照本步骤和以下步骤特殊处理当前关键帧的共视帧,将其共视帧当做一般关键帧处理即可。相应的,如果不考虑泛环尾关键帧,后续仅需要针对环尾关键帧即可,且省略本步骤。
步骤502:根据相似变换关系对所述泛环尾关键帧集合中的每一个泛环尾关键帧的位姿进行矫正。
本步骤可以采用方法实施三中优化后的相似变换关系。如果实际应用中未对相似变换关系进行优化,则直接采用未优化的相似变换关系即可。另外,如果不考虑泛环尾关键帧,本步骤仅需对环尾关键帧的位姿进行矫正即可。
本领域技术人员知道,在无人机航拍图像拼接过程中,会获取每一个关键帧的位姿,并根据位姿进行拼接和绘制。由于误差积累的原因,环尾关键帧的位姿需要进行矫正。因此,本步骤此时可以利用计算出相似变换关系对环尾关键帧的位姿进行矫正。如果需要同时考虑其共视关键帧,则需要分别对每一个泛环尾关键帧的位姿进行矫正。位姿矫正的方法可以参考如下:
假设某个泛环尾关键帧的位姿为:
其中,Tcw2表示泛环尾关键帧的位姿,Rcw2表示旋转矩阵,tcw2表示平移向量。
假设计算出来的相似变换关系为:
其中,Sw2w表示相似变换,Rw2w表示旋转矩阵,tw2w表示平移向量,s表示尺度。那么,经过矫正后的位姿可以表示为:
其中,Tcw表示矫正后的位姿,Rcw2Rw2w表示矫正后的旋转矩阵,(Rw2wtcw2+tw2w)/s表示矫正后的平移向量。
步骤503:根据所述环首关键帧对所述泛环尾关键帧集合中每一个泛环尾关键帧的ORB特征点对应的三维点进行矫正。
由于位姿进行了矫正,那么ORB特征点对应的三维点也应该相应地进行矫正。实际应用中,对三维点进行矫正的方法可以为:对于每一个泛环尾关键帧,将其ORB特征点对应的三维点投影到所述环首关键帧中,如果投影半径内存在环首关键帧的ORB特征点,则将该泛环尾关键帧的ORB特征点对应的三维点修改为该投影半径内环首关键帧的ORB特征点所对应的三维点。也就是说,由于环首关键帧和环尾关键帧对应的是同一个场景,ORB特征点应该对应同一个三维点。正是由于误差积累才导致环尾关键帧ORB特征点和环首关键帧ORB特征点对应的三维点不一致,因此在三维点矫正时将环尾关键帧ORB特征点对应的三维点调整到和环首关键帧的一致,实现矫正的目的。
相应地,如果不考虑泛环尾关键帧,本步骤仅需对环尾关键帧的ORB特征点对应的三维点进行矫正即可。
步骤504:根据已有关键帧位姿以及矫正后的泛环尾关键帧的位姿建立位姿误差函数,所述位姿误差函数表示有约束关系的关键帧的位姿约束与位姿变化之间的残差,所述约束关系包括所述环首关键帧和泛环尾关键帧之间的位姿约束,还包括所有关键帧中由共视关系表示的位姿约束。
实际应用中,由于图像拼接的关键帧都不是孤立存在的,其间存在相互的约束关系,一个关键帧位姿变化后,与之相关的其他关键帧也需要相应调整。因此,可以利用拼接过程中已有关键帧的位姿以及矫正后的泛环尾关键帧的位姿建立位姿误差函数,且将环首关键帧和泛环尾关键帧之间的位姿约束以及所有关键帧之间共视关键表示的位姿约束作为该位姿误差函数的约束条件。实际应用中,本步骤可以利用拼接过程中所有或者部分关键帧建立位姿误差函数。
假设位姿误差函数为:
其中,eij表示第i个关键帧和第j个关键帧位姿约束和位姿变化之间的残差,本步骤所述约束关系可以是环首关键帧和泛环尾关键帧之间的位姿约束,位姿约束可以根据环首关键帧和泛环尾关键帧之间的相似变换关系中得到。本步骤所述约束关系也可以是所有关键帧之间由共视关系表示的位姿约束,只要具有约束条件的两个关键帧都可以利用公式6计算出位姿约束和位姿变换之间的残差。实际应用中,需要考虑哪些约束关系可以由应用本申请方案的用户自行确定,比如可以仅考虑环首关键帧和环尾关键帧之间的位姿约束,可以仅考虑换环首关键帧和泛环尾关键帧之间的位姿约束,还可以仅考虑所有关键帧中由共视关系表示的位姿约束,也或者将几种约束关系组合起来考虑。
步骤505:调整所述已有关键帧的位姿以及矫正后的泛环尾关键帧的位姿,使得所述位姿误差函数的值最小,将调整后位姿作为优化后的位姿。
公式6包含了所有具有约束关系的两个关键帧位姿误差,调整各个关键帧的位姿,使得位姿误差函数取值最小。当位姿误差函数取值最小时,就可以得到所有关键帧优化后的位姿。和计算匹配误差函数相似,该位姿误差函数也可以利用非线性优化算法实现。
完成了所有关键帧的位姿优化工作后就可以采用优化后的位姿重新进行图像拼接,其方法和原有的方法一样,通常包括计算单应变换、计算扩展图像范围、确定图像扩展部分像素值以及对拼接重叠区域的融合等过程,其区别在于,本申请方案中需要利用所有优化后的关键帧位姿,将所有关键帧重新拼接,得到全景图。
应用本申请上述各实施例方案,通过回环检测确定了环首关键帧和环尾关键帧,并计算出环尾关键帧和环首关键帧的相似变换关系,再利用相似变换关系对关键帧的位姿进行优化,从而利用优化后的位姿重新拼接所有关键帧,实现无人机航拍图像拼接优化的目的。由于所有关键帧的位姿经过优化后可以消除误差积累,那么重新绘制的全景图就可以避免由于误差积累造成的错误或畸变现象,使得图像拼接优化后的全景图更加准确。
本申请提出一种无人机航拍图像拼接优化的装置,如图6所示,该装置实施例一的内部结构包括获取单元R1、回环检测单元R2、相似变换计算单元R3、位姿优化单元R4、拼接单元R5。其中:
获取单元R1,用于获取当前关键帧。
回环检测单元R2,用于将所述当前关键帧作为环尾关键帧进行回环检测以确定环首关键帧;所述环首关键帧为所述无人机飞行轨迹所形成回环的首帧,所述环尾关键帧为所述无人机飞行轨迹所形成回环的尾帧。
相似变换计算单元R3,用于根据所述环首关键帧和环尾关键帧计算两者之间的相似变换关系。
位姿优化单元R4,用于根据所述相似变换关系对无人机航拍图像拼接过程中的关键帧的位姿进行优化。
拼接单元R5,用于根据优化后的所有关键帧的位姿重新进行图像拼接。
也就是说,该装置可以这样实施:获取单元R1获取当前关键帧,由回环检测单元R2将当前关键帧作为环尾关键帧进行回环检测以确定环首关键帧;相似变换计算单元R3根据环首关键帧和环尾关键帧计算两者之间的相似变换关系;位姿优化单元R4根据相似变换关系对无人机航拍图像拼接过程中的关键帧的位姿进行优化;拼接单元R5根据优化后的所有关键帧的位姿重新进行图像拼接。
图7是装置实施例二的内部结构示意图,如图7所示,该装置不但包括获取单元R1、回环检测单元R2、相似变换计算单元R3、位姿优化单元R4、拼接单元R5,还进一步包括:第一筛选单元R6、第二筛选单元R7、相似关系优化单元R8、第三筛选单元R9。其中,获取单元R1、回环检测单元R2、相似变换计算单元R3、位姿优化单元R4以及拼接单元R5与装置实施例一相同,此处不再赘述。
第一筛选单元R6,用于从所述候选环首关键帧集合中选择一个候选环首关键帧,根据所述ORB字典将该候选环首关键帧的ORB特征点和所述当前关键帧的ORB特征点进行匹配,如果匹配对达到设置的第一匹配阈值,则将该候选环首关键帧作为环首关键帧,并继续执行所述根据环首关键帧和环尾关键帧计算两者之间的相似变换关系的步骤;否则将其从候选环首关键帧集合中剔除,并选择下一个候选环首关键帧重新执行所述将该候选环首关键帧的ORB特征点和所述当前关键帧的ORB特征点进行匹配的步骤。
第二筛选单元R7,用于确定所述环首关键帧ORB特征点和所述环首关键帧ORB特征点满足所述相似变换关系的匹配对,如果匹配对数量达到设置的第二匹配阈值,则继续执行所述根据相似变换关系对无人机航拍图像拼接过程中所有关键帧的位姿进行优化的步骤;否则,将其从候选环首关键帧集合中剔除,并选择下一个候选环首关键帧重新执行所述将该候选环首关键帧的ORB特征点和所述当前关键帧的ORB特征点进行匹配的步骤。
相似关系优化单元R8,用于根据所述相似变换关系将所述环尾关键帧所有的ORB特征点投影到所述环首关键帧;将投影半径中的ORB特征点作为所述环尾关键帧中对应的ORB特征点的匹配点;根据所述匹配点构建匹配误差函数,所述匹配误差函数表示投影点和所述匹配点之间的误差;根据该匹配误差函数并利用非线性优化算法对所述相似变换关系进行优化。
第三筛选单元R9,用于根据优化后的相似变换关系将所述环尾关键帧中所有的ORB特征点投影到所述环首关键帧上;将投影半径中的ORB特征点和所述环尾关键帧中对应的ORB特征点作为匹配对;如果匹配对达到设置的第三匹配阈值,则继续执行所述根据相似变换关系对无人机航拍图像拼接过程中所有关键帧的位姿进行优化的步骤;否则,将其从候选环首关键帧集合中剔除,并选择下一个候选环首关键帧重新执行所述将该候选环首关键帧的ORB特征点和所述当前关键帧的ORB特征点进行匹配的步骤。
也就是说,本装置实施例二利用第一筛选单元R6、第二筛选单元R7、第三筛选单元R9对候选环首关键帧进行了三次筛选,以提高选择环首关键帧的准确性。本装置实施例二利用相似关系优化单元R8对相似关系进一步优化,以提高相似关系的可靠性。当然,如果实际应用中不考虑进一步提高选择环首关键帧的准确性和相似关系的可靠性,也可以省略第一筛选单元R6、第二筛选单元R7、第三筛选单元R9以及相似关系优化单元R8。
实际应用中,图8可以表示回环检测单元R2的内部结构示意图。如图8所示,回环检测单元R2包括:相似度计算单元R21和判别单元R22。
其中,
相似度计算单元R21,用于计算当前关键帧和已有的关键帧之间的相似度,根据相似度计算结果选择出满足设置的相似度阈值的关键帧组成候选环首关键帧集合。具体的,根据已有的定向快速旋转ORB字典计算所述当前关键帧和共视关键帧的相似度的平均值,得到共视平均相似度;所述共视关键帧属于已有的关键帧,表示与当前关键帧满足共视条件的关键帧,所述共视条件为不同关键帧的ORB特征点对应相同三维点的数量大于设置的数量阈值;根据所述ORB字典计算所述当前关键帧和非共视关键帧的相似度,选择其中相似度最高值作为最高相似度;所述非共视关键帧属于已有的关键帧,且不同于所述共视关键帧;根据所述共视平均相似度和所述最高相似度计算得到所述相似度阈值;将满足所述相似度阈值的关键帧作为候选环首关键帧,所述候选环首关键帧不包括所述当前关键帧的共视关键帧以及邻近关键帧,所述邻近关键帧是与所述当前关键帧在时序上小于设置的时序阈值的关键帧,所述邻近关键帧属于已有的关键帧。
判别单元R22,针对相似度计算单元R21中的每一个候选环首关键帧,甄别其是否属于连续满足相似度阈值的关键帧中的一帧,且连续的帧数达到设置的连续阈值,如果满足则继续保留作为候选环首关键帧;否则将其从候选环首关键帧集合中剔除。
实际应用中,根据相似度计算单元R21和判别单元R22的执行,可以确定候选环首关键帧集合,以便于后续从中选择,具体情况可以参考方法部分。
实际应用中,图9可以表示位姿优化单元R4的一种内部结构示意图,可以针对只有一帧环尾关键帧而不考虑泛环尾关键帧的情况。如图9所示,位姿优化单元R4包括:环尾关键帧矫正单元R411、三维点矫正单元R412、位姿误差计算单元R413和位姿调整单元R414。
其中,
环尾关键帧矫正单元R411,用于根据所述相似变换关系对所述环尾关键帧位姿进行矫正。
三维点矫正单元R412,用于根据所述环首关键帧对所述环尾关键帧的ORB特征点对应的三维点进行矫正。
位姿误差计算单元R413,用于根据已有关键帧的位姿以及矫正后的环尾关键帧的位姿建立位姿误差函数,所述位姿误差函数表示有约束关系的关键帧之间的位姿约束与位姿变化之间的残差,所述约束关系包括所述环首关键帧和环尾关键帧之间的位姿约束。
位姿调整单元R414,用于调整已有关键帧的位姿以及矫正后的环尾关键帧的位姿,使得所述位姿误差函数的值最小,将调整后的位姿作为优化后的位姿。
根据上述图9所示的位姿优化单元R4的执行,针对只有一个环尾关键帧时,对关键帧的位姿进行调整,具体情况参考方法部分。
实际应用中,图10可以表示位姿优化单元R4的另一种内部结构示意图,可以针对泛环尾关键帧的情况。如图10所示,位姿优化单元R4包括:泛环尾关键帧确定单元R421、泛环尾关键帧矫正单元R422、三维点矫正单元R423、位姿误差计算单元R424和位姿调整单元R425。
其中,
泛环尾关键帧确定单元R421,用于根据所述环尾关键帧确定所有的共视关键帧,将确定出的共视关键帧和所述环尾关键帧组成泛环尾关键帧集合,所述共视关键帧属于已有的关键帧,表示与当前关键帧满足共视条件的关键帧,所述共视条件为不同关键帧的ORB特征点对应相同三维点的数量大于设置的数量阈值。
泛环尾关键帧矫正单元R422,用于根据所述相似变换关系对所述泛环尾关键帧集合中的每一个泛环尾关键帧的位姿进行矫正。
三维点矫正单元R423,用于根据所述环首关键帧对所述泛环尾关键帧集合中每一个泛环尾关键帧的ORB特征点对应的三维点进行矫正。具体的,对于每一个泛环尾关键帧,将其ORB特征点对应的三维点投影到所述环首关键帧中,如果投影半径内存在环首关键帧的ORB特征点,则将该泛环尾关键帧的ORB特征点对应的三维点修改为该投影半径内环首关键帧的ORB特征点所对应的三维点。
位姿误差计算单元R424,用于已有关键帧的位姿以及矫正后的泛环尾关键帧的位姿建立位姿误差函数,所述位姿误差函数表示在所有关键帧中有约束关系的关键帧之间的位姿约束与位姿变化之间的残差,所述约束关系包括所述环首关键帧和环尾关键帧之间的位姿约束。
位姿调整单元R425,用于调整已有关键帧的位姿以及矫正后的泛环尾关键帧的位姿,使得所述位姿误差函数的值最小,将调整后的位姿作为优化后的位姿。
根据上述图10所示的位姿优化单元R4的执行,可以针对具有泛环尾关键帧时,对所有关键帧的位姿进行调整,具体情况参考方法部分。
本申请实施例还提供一种计算机可读介质,所述计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行如上所述的无人机航拍图像拼接优化方法的步骤。实际应用中,所述的计算机可读介质可以为RAM、ROM、EPROM、磁盘、光盘等等,并不用于限制本申请保护的范围。
本申请所述的方法步骤除了可以用数据处理程序来实现,还可以由硬件来实现,例如,可以由逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌微控制器等来实现。因此这种可以实现本申请所述方法的硬件也可以构成本申请。
本申请实施例还提供一种电子设备,可以是计算机或服务器,其中可以集成本申请上述装置实施例的无人机航拍图像拼接优化的装置。如图11所示,其示出了本申请装置实施例三所涉及的电子设备。
该电子设备可以包括一个或者一个以上处理核心的处理器S1、一个或一个以上计算机可读存储介质S2。该电子设备还可以包括电源S3、输入输出单元S4。本领域技术人员可以理解,图11中并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中:
处理器S1是该电子设备的控制部分,利用各种接口和线路连接各个部分,通过运行或执行存储在计算机可读存储介质S2中的软件程序,执行各种功能和处理数据,完成图像的拼接工作。
计算机可读存储介质S2可用于存储软件程序,即存储上述无人机航拍图像拼接优化方法中涉及的程序。
处理器S1通过运行存储在计算机可读存储介质S2的软件程序,从而执行各种功能应用以及数据处理。计算机可读存储介质S2可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如图像播放功能等)等;存储数据区可存储根据电子设备需要使用的数据等(比如无人机拍摄图像)。此外,计算机可读存储介质S2可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,计算机可读存储介质S2还可以包括存储器控制器,以提供处理器S1对计算机可读存储介质S2的访问。
电子设备还包括给各个部件供电的电源S3,优选的,电源S3可以通过电源管理系统与处理器S1逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源S1还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入输出单元S4,比如可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入;比如可用于显示由用户输入的信息或提供给用户的信息以及服务器的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。
应用本申请上述各实施例,可以将当前帧作为环尾关键帧,通过回环检测方式确定出环首关键帧,由此确定无人机飞行轨迹所形成的回环。正是由于检测出无人机飞行轨迹形成了回环,其环首关键帧和环尾关键帧是针对同一个场景的拍摄。由于误差的积累,对同一个场景的环首关键帧和环尾关键帧之间已经发生了变化,这种变化可以用环首关键帧和环尾关键帧的相似变换关系表示。利用这种相似变换关键对所有关键帧的位姿进行优化,就可以消除误差积累导致的拼接错位或者畸变等现象,重新绘制全景图,并在此基础上使得后续图像可以正确拼接。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。