视觉定位方法及相关装置、设备和存储介质
技术领域
本申请涉及人工智能
技术领域
,特别是涉及一种视觉定位方法及相关装置、设备和存储介质。背景技术
增强现实(Augmented Reality,AR)、虚拟现实(Virtual Reality,VR)等计算机视觉技术是当前的热点技术,通过相机作为输入设备,并利用图像算法处理,可以数字化周围环境,从而获取与真实环境进行交互的使用体验。视觉定位是AR技术、VR技术的一个重要应用。通过获取设备拍摄的图像,可以获得设备的位姿信息。
然而,现有的视觉定位技术,都是利用设备拍摄的图像帧直接定位计算得到位姿信息,往往由于对图像帧进行定位计算的误差,会导致计算得到的位姿不准确。
因此,如何提高视觉定位的准确性,具有非常重要的意义。
发明内容
本申请提供一种视觉定位方法及相关装置、设备和存储介质。
本申请第一方面提供了一种视觉定位方法,包括:获取由拍摄装置拍摄得到的当前图像帧;获取第一参考姿态,其中,第一参考姿态是拍摄装置对应于当前图像帧的拍摄时刻且相对于参考平面的姿态;利用参考平面与世界坐标系中的预设平面之间的偏移量,对第一参考姿态进行调整,得到第二参考姿态;基于第二参考姿态、当前图像帧与其他图像帧的图像信息,确定当前图像帧在世界坐标系中的最终位姿,其中,其他图像帧的拍摄时间位于当前图像帧之前。
因此,通过获取参考平面与世界坐标系中的预设平面之间的偏移量,可以基于该偏移量对第一参考姿态信息进行调整,得到第二参考姿态信息,该第二参考姿态信息作为当前图像帧相对于世界坐标系的预设平面的姿态的参考信息,故可以利用该第二参考姿态信息来优化当前图像帧在世界坐标系中的最终位姿,提高了最终位姿的准确度,即实现了准确定位。
其中,在利用参考平面与世界坐标系中的预设平面之间的偏移量,对第一参考姿态进行调整,得到第二参考姿态之前,方法还包括:获取第一历史图像帧在世界坐标系中的第一位姿,以及获取第三参考姿态,其中,第三参考姿态是拍摄装置对应于第一历史图像帧的拍摄时刻且相对于参考平面的姿态;利用第一位姿中的姿态和第三参考姿态,得到偏移量,其中,第一位姿中的姿态是相对于预设平面的姿态。
因此,通过获得对应同一时间的相对于预设平面和参考平面的姿态,利用预设平面和参考平面的姿态,可以得到参考平面与世界坐标系中的预设平面之间的偏移量。
其中,上述的第一参考姿态由与拍摄装置相对固定的传感装置检测得到的,上述的第一参考姿态的检测时刻与当前图像帧的拍摄时刻之间的差值不超过第一预设时间差;上述的第三参考姿态由与拍摄装置相对固定的的传感装置检测得到的,第三参考姿态的检测时刻与第一历史图像帧的拍摄时刻之间的差值不超过第二预设时间差。
因此,通过选择满足第一预设时间差或者第二预设时间差的第一参考姿态或者第三参考姿态,此时可以认为第一参考姿态是当前图像帧的拍摄时刻的拍摄装置的姿态信息,第三参考姿态是第一历史图像帧的拍摄时刻的拍摄装置的姿态信息,由此得到与当前图像帧的拍摄时刻对应的参考姿态。
其中,上述的第一位姿是基于定位辅助图像确定的,其中,预设平面为定位辅助图像所在的平面;上述的利用第一位姿中的姿态和第三参考姿态,得到偏移量,包括:将第一位姿中的姿态和第三参考姿态之间的比值,作为偏移量。
因此,通过求取比值的方式,可以获得偏移量。
其中,上述的获取第一历史图像帧在世界坐标系中的第一位姿,包括:基于第一历史图像帧与定位辅助图像之间的第一匹配点对,确定第一历史图像帧与定位辅助图像之间的第一变换参数,利用第一变换参数得到第一位姿;或者,基于第一历史图像帧与第二历史图像帧之间的第二匹配点对,确定第一历史图像帧与第二历史图像帧之间的第二变换参数,利用第二变换参数和第二历史图像帧与定位辅助图像之间的第三变换参数,得到第一位姿,其中,第二历史图像帧位于第一历史图像帧之前。
因此,可以基于第一历史图像帧与定位辅助图像之间的第一匹配点对,或者是第一历史图像帧与第二历史图像帧之间的第二匹配点对以及第二历史图像帧与定位辅助图像之间的第三变换参数,得到第一位姿。
其中,上述的基于第二参考姿态、当前图像帧与其他图像帧的图像信息,确定当前图像帧在世界坐标系中的最终位姿,包括:基于第二参考姿态、当前图像帧与其他图像帧之间的光度误差,确定最终位姿。
因此,通过计算当前图像帧与其他图像帧之间的光度误差,并利用第二参考姿态来减小误差,可以提高最终位姿的准确度。
其中,上述的基于第二参考姿态、当前图像帧与其他图像帧之间的光度误差,确定最终位姿,包括:获取至少一个第一候选位姿,并基于第二参考姿态和当前图像帧和其他图像帧之间的第一像素值差异,选择一第一候选位姿作为最终位姿。
因此,通过利用第二参考姿态来对第一候选位姿进行约束和优化,可以在求第一候选位姿进行时,得到准确的第一候选位姿。
其中,上述的第一候选位姿是基于当前图像帧在世界坐标系中的初始位姿确定的,初始位姿是基于当前图像帧和其他图像帧之间的光度误差确定的;在上述基于第二参考姿态、当前图像帧与其他图像帧之间的光度误差,确定最终位姿之前,方法还包括:利用其他图像帧在世界坐标系中的第二位姿,确定与其他图像帧中的第一特征点对应的空间点;上述的基于第二参考姿态和当前图像帧和其他图像帧之间的第一像素值差异,选择一第一候选位姿作为最终位姿,包括:基于每个第一候选位姿和空间点从当前图像帧中确定与第一候选位姿对应的第二特征点,获取第一特征点和第二特征点之间的第一像素值差异,并基于第一像素值差异以及第二参考姿态与第一候选位姿之间的姿态差异,选择一第一候选位姿作为最终位姿。
因此,通过利用确定空间中的三维点在其他图像帧中以及在当前图像帧中的对应的点,就可以通过计算像素值的差异以及通过利用陀螺仪的数据(第二参考姿态)来对第一候选位姿进行约束和优化的方法,可以得到较为准确的第一候选位姿。
其中,在上述的基于第二参考姿态、当前图像帧与其他图像帧之间的光度误差,确定最终位姿之前,方法还包括以下步骤:获取至少一个第二候选位姿,并基于当前图像帧和其他图像帧之间的第二像素值差异,选择一第二候选位姿作为初始位姿;和/或,基于第一像素值差异以及第二参考姿态与第一候选位姿之间的姿态差异,选择一第一候选位姿作为最终变化位姿,包括:选择第一像素值差异和姿态差异满足第一预设要求的第二特征点所对应的第一候选位姿,作为最终变化位姿。
因此,通过确定空间中的三维点在其他图像帧中以及在当前图像帧中的对应的点,就可以通过计算第二像素值的差异方法,来求得较为准确的初始位姿。此外,通过筛选满足预设要求的第一候选位姿,可以获得相对准确的位姿信息。
其中,上述的第二候选位姿是基于第二位姿确定的;和/或,上述的基于当前图像帧和其他图像帧之间的第二像素值差异,选择一第二候选位姿作为初始位姿,包括:选择第二像素值差异满足第二预设要求的第二特征点所对应的第二候选位姿,作为初始位姿。
因此,通过筛选满足预设要求的第二候选位姿,可以获得相对准确的初始位姿。
本申请第二方面提供了一种视觉定位装置,包括:获取模块、第一位姿确定模块、调整模块和第二位姿确定模块;其中,获取模块,用于获取由设备的拍摄装置拍摄得到的当前图像帧;第一位姿确定模块,用于获取第一参考姿态,其中,第一参考姿态是设备对应于当前图像帧的拍摄时刻且相对于参考平面的姿态;调整模块,用于利用参考平面与世界坐标系中的预设平面之间的偏移量,对第一参考姿态进行调整,得到第二参考姿态;第二位姿确定模块,用于基于第二参考姿态、当前图像帧与其他图像帧的图像信息,确定当前图像帧在世界坐标系中的最终位姿,其中,其他图像帧的拍摄时间位于当前图像帧之前。
本申请第三方面提供了一种电子设备,包括相互耦接的存储器和处理器,处理器用于执行存储器中存储的程序指令,以实现上述第一方面中的视觉定位方法。
本申请第四方面提供了一种计算机可读存储介质,其上存储有程序指令,程序指令被处理器执行时实现上述第一方面中的视觉定位方法。
上述方案,通过获取参考平面与世界坐标系中的预设平面之间的偏移量,可以基于该偏移量对第一参考姿态信息进行调整,得到第二参考姿态信息,该第二参考姿态信息作为当前图像帧相对于世界坐标系的预设平面的姿态的参考信息,故可以利用该第二参考姿态信息来优化当前图像帧在世界坐标系中的最终位姿,提高了最终位姿的准确度,即实现了准确定位。
附图说明
图1是本申请视觉定位方法第一实施例的流程示意图;
图2是本申请视觉定位方法第二实施例的流程示意图;
图3是本申请视觉定位方法第三实施例的流程示意图;
图4是本申请视觉定位装置一实施例的框架示意图;
图5是本申请电子设备一实施例的框架示意图;
图6为本申请计算机可读存储介质一实施例的框架示意图。
具体实施方式
下面结合说明书附图,对本申请实施例的方案进行详细说明。
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本申请。
本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。此外,本文中的“多”表示两个或者多于两个。
请参阅图1,图1是本申请视觉定位方法第一实施例的流程示意图。
具体而言,可以包括如下步骤:
步骤S11:获取由拍摄装置拍摄得到的当前图像帧。
可以理解的,拍摄装置可以是任何能够拍摄图像的装置,拍摄装置例如是手机,平板电脑,笔记本电脑等等。当前图像帧是拍摄装置在当前时刻通过拍摄装置拍摄得到的。
在一些实施例中,为了实现对拍摄装置的定位,可以利用拍摄装置对目标平面进行拍摄,进而利用本实施例方法基于拍摄得到的图像帧得到拍摄图像帧时的拍摄装置相对于目标平面的位姿,即拍摄图像帧时的拍摄装置在基于目标平面建立的世界坐标系中的位姿。该基于目标平面建立的世界坐标系可以理解为将目标平面作为世界坐标系的预设平面,如XOY平面或YOZ平面等,由此构建得到世界坐标系。在一些应用场景中,可将目标平面的某个点作为世界坐标系的原点,例如但不限为图像帧中对应的目标平面部分的中点,又或者将目标平面中的定位辅助图像的中点。在一些实施例中,该目标平面可以为任意平面,例如可以为水平面或竖直面以外的其他平面,由此可以得到拍摄装置相对于其他平面的位姿。
步骤S12:获取第一参考姿态。
第一参考姿态是拍摄装置对应于当前图像帧的拍摄时刻且相对于参考平面的姿态。第一参考姿态例如是拍摄装置的旋转信息,即拍摄装置相对于参考平面的旋转信息。
在一些实施场景中,第一参考姿态由与拍摄装置相对固定的传感装置检测得到的,因此通过传感装置得到的姿态信息可以认为是拍摄装置的姿态信息。传感器可以是集成于拍摄装置内部的传感器,因此传感装置与拍摄装置相对固定的,例如是手机、平板电脑内部的传感器。传感器还可以是外接于拍摄装置、并且与拍摄装置设置在同一平台上,例如是拍摄装置与传感器均设置于一电子设备,如无人机、移动机器人等。传感装置例如是陀螺仪。
在一些实施场景中,第一参考姿态的检测时刻与当前图像帧的拍摄时刻之间的差值不超过第一预设时间差,由此可以认为第一参考姿态为拍摄装置对应于当前图像帧的拍摄时刻的姿态。其中,第一预设差值例如是20毫秒,15毫秒等等,具体时间可以根据需要设置。在一个具体实施场景中,当存在多个检测时刻与当前图像帧的拍摄时刻之间的差值均不超过第一预设时间差的情况下,可以选择与当前图像帧的拍摄时刻最接近的检测时刻来获取第一参考姿态。因为检测时刻与当前图像帧的拍摄时刻之间的差值不超过第一预设时间差,此时可以认为第一参考姿态是当前图像帧的拍摄时刻的设备的姿态信息。传感装置例如是拍摄装置的陀螺仪。参考平面例如是基于陀螺仪的数据确定的某一平面,例如为水平面或竖直面。
步骤S13:利用参考平面与世界坐标系中的预设平面之间的偏移量,对第一参考姿态进行调整,得到第二参考姿态。
世界坐标系中的预设平面,例如是世界坐标系的XOY平面,或是XOZ平面,YOZ平面等等。在一个实施场景中,预设平面是世界坐标系的XOY平面。在一个具体实施场景中,如果是基于对目标平面上的定位辅助图像进行拍摄得到的图像帧来获取拍摄装置的位姿信息,则目标平面也即定位辅助图像所在的平面可以是预设平面。
在得到第一参考姿态以后,意味着已经获得拍摄装置相对于参考平面的姿态。此时,可以获取参考平面与其他平面之间的偏移量,并利用偏移量来对第一参考姿态进行调整,以此来得到拍摄装置相对于其他平面的第二参考姿态,即获得拍摄装置相对于其他平面的姿态即旋转信息。
在本实施例中,其他平面是世界坐标系中的预设平面,因此第二参考姿态可以认为是拍摄装置相对于世界坐标系的预设平面的旋转信息。
在一个实施场景中,因为第一参考姿态是由陀螺仪检测得到的,参考平面是基于陀螺仪确定的某一平面,此时,通过利用参考平面与世界坐标系中的预设平面之间的偏移量来对第一参考姿态进行调整后,得到的第二参考姿态,也可以认为是将参考平面变换到预设平面需要的旋转量。
步骤S14:基于第二参考姿态、当前图像帧与其他图像帧的图像信息,确定当前图像帧在世界坐标系中的最终位姿。
在一个实施场景中,其他图像帧的拍摄时间位于当前图像帧之前。其他图像帧与当前图像帧可以相差n帧,n大于或等于0。在一个具体实施场景中,n=0,此时其他图像帧即为当前图像帧的上一帧。在一个具体实施场景中,当n大于0时,其他图像可以是当前帧图像的前某一帧。
当前图像帧或者其他图像帧的图像信息,例如是图像上的关于特征点的信息,这些特征点的信息可以用于计算拍摄装置的位姿信息。特征点可以通过特征提取算法对图像帧进行特征提取得到。在本申请中,位姿信息可以包括拍摄装置的姿态信息和位置信息,后续不再说明。在一个具体实施场景中,拍摄装置的姿态信息是朝向也可以理解为旋转信息,位置信息是拍摄装置在世界坐标系的三维坐标或由原点到拍摄装置所在位置的三维矢量。
在本公开实施例中,最终位姿是当前图像帧在世界坐标系中的位姿。
在一个实施场景中,可以首先利用当前图像帧与其他图像帧的图像信息,利用图像处理算法,得到两帧图像之间的第一相对位姿变化信息。然后,基于第一相对位姿变化信息,和利用其他图像帧计算得到的其他图像帧对于世界坐标系的位姿信息,来得到一个初始的最终位姿。或者直接将距离当前帧最近的图像帧的位姿作为初始的最终位姿,例如可以以上一帧图像帧的位姿作为当前帧图像的初始的最终位姿。初始的最终位姿包括相对于世界坐标系的预设平面的旋转量信息,再利用该旋转量信息与第二参考姿态信息,以及当前图像帧与其他图像帧的图像信息,进行计算和优化,确定当前图像帧在世界坐标系中的最终位姿。
以此,通过获取参考平面与世界坐标系中的预设平面之间的偏移量,可以基于该偏移量对第一参考姿态信息进行调整,得到第二参考姿态信息,该第二参考姿态信息作为当前图像帧相对于世界坐标系的预设平面的姿态的参考信息,故可以利用该第二参考姿态信息来优化当前图像帧在世界坐标系中的最终位姿,提高了最终位姿的准确度,即实现了准确定位。
在一个实施场景中,基于第二参考姿态、当前图像帧与其他图像帧的图像信息,确定当前图像帧在世界坐标系中的最终位姿,具体可以是:基于第二参考姿态、当前图像帧与其他图像帧之间的光度误差,确定最终位姿。
在一个具体实施场景中,可以是首先得到当前图像帧与其他图像帧之间的相对位姿变化并计算当前图像帧与其他图像帧之间的光度误差,接着利用相对位姿变化得到当前图像帧的最终位姿,然后利用第二参考姿态作为约束因素,来优化并尽可能减小光度误差,最终得到前图像帧在世界坐标系中的最终位姿。
在一个具体实施场景中,可以是首先得到当前图像帧在世界坐标系中的位姿信息作为初始的最终位姿,然后利用其他图像帧在世界坐标系中的的位姿信息,得到当前图像帧与其他图像帧之间的光度误差,然后利用第二参考姿态作为约束因素,来优化并尽可能减小光度误差,最终得到当前图像帧在世界坐标系中的最终位姿。
因此,通过计算当前图像帧与其他图像帧之间的光度误差,并利用第二参考姿态来减小误差,可以提高最终位姿的准确度。
请参阅图2,图2是本申请视觉定位方法第二实施例的流程示意图。本实施是对上述第一实施例的进一步扩展,具体的,在执行上述步骤S12提及的“获取第一参考姿态”之前,还可以执行以下步骤,以获得参考平面与世界坐标系中的预设平面之间的偏移量。
步骤S21:获取第一历史图像帧在世界坐标系中的第一位姿,以及获取第三参考姿态。
在一个实施场景中,第一位姿是基于定位辅助图像确定的,其中,预设平面为定位辅助图像所在的平面,此时,定位辅助图像的中心在世界坐标系的原点,定位辅助图像的横轴平行于世界坐标系的X轴,定位辅助图像的纵轴平行于世界坐标系的Y轴,世界坐标系的Z轴垂直于定位辅助图像平面。
在一个具体实施场景中,可以通过图像配准技术,利用定位辅助图像进行图像检测,以此获得第一位姿。
在一个实施场景中,第三参考姿态可以是拍摄装置对应于第一历史图像帧的拍摄时刻且相对于参考平面的姿态。第三参考姿态是由与拍摄装置相对固定的传感装置(例如是陀螺仪)检测得到的。
在一个具体实施场景中,第三参考姿态的检测时刻与第一历史图像帧的拍摄时刻之间的差值不超过第二预设时间差。以此,可以认为第三参考姿态与第一位姿的姿态信息相同。
在一个实施场景中,可以基于第一历史图像帧与定位辅助图像之间的第一匹配点对,确定第一历史图像帧与定位辅助图像之间的第一变换参数,利用第一变换参数得到第一位姿。
第一变换参数例如是第一历史图像帧相对于定位辅助图像的单应性矩阵。利用图像处理算法,例如是pnp(Perspective-n-Point)算法,可以基于单应性矩阵得到第一位姿。
在本实施例中,基于图像帧进行特征提取的特征点,可以认为是与定位辅助图像处于同一个平面。在本申请中,对图像帧提取的特征点,可以包括对基于该图像帧建立的图像金字塔中的一系列的图像帧进行特征提取得到的特征点。通过对第一历史图像帧和定位辅助图像分别进行特征提取,可以得到与第一历史图像帧对应的第一特征点,以及与定位辅助图像对应的第二特征点。特征点的数量不做具体限制。特征提取算法例如是FAST(features from accelerated segment test)算法,SIFT(Scale-invariant featuretransform)算法,ORB(Oriented FAST and Rotated BRIEF)算法等等。在一个具体实施场景中,特征提取算法为ORB(Oriented FAST and Rotated BRIEF)算法。另外,在得到特征点以后,还会得到与每个特征点对应的特征表示,特征表示例如是特征向量。因此,每一个特征点,均有一个与其对应的特征表示。
通过计算每一个第一特征点与每一个第二特征点的匹配程度,可以得到一系列的匹配点对,然后可以选择匹配程度高的匹配点对作为第一匹配点对。计算第一特征点和第二特征点的匹配程度,可以是计算两个特征点的特征表示之间的距离,距离越近视为越匹配。然后,可以基于得到的一系列第一匹配点对,利用图像配准算法,确定第一历史图像帧与定位辅助图像之间的第一变换参数,并利用第一变换参数得到第一位姿。图像配准算法例如是基于灰度和模板的算法,或者是基于特征的匹配方法。例如,关于基于特征的匹配方法,可以获得一定数量的关于待配准图像与目标图像的匹配点对,然后利用随机一致性采样算法(RANSAC)来计算第一历史图像帧和定位辅助图像的变换参数,以此实现图像的配准。
以此,可以基于第一历史图像帧与定位辅助图像之间的第一匹配点对,得到第一位姿。
在一个实施场景中,还可以基于第一历史图像帧与第二历史图像帧之间的第二匹配点对,确定第一历史图像帧与第二历史图像帧之间的第二变换参数,利用第二变换参数和第二历史图像帧与定位辅助图像之间的第三变换参数,得到第一位姿。
在本实施场景中,第二历史图像帧位于第一历史图像帧之前。
获得第二匹配点对的具体过程,可以参照上述获得第一匹配点对的具体描述,此处不再赘述。
第三变换参数例如是第二历史图像帧相对于定位辅助图像的单应性矩阵。然后利用图像处理算法,例如是pnp算法,可以基于单应性矩阵得到拍摄第二历史图像帧时的位姿信息。关于如何获得第二历史图像帧与定位辅助图像之间的第三变换参数,可以参照上述获得第一变换参数的具体描述,此处不再赘述。
因此,通过利用第一历史图像帧与第二历史图像帧之间的第二变换参数,以及第二历史图像帧与定位辅助图像之间的第三变换参数,得到第一位姿。在一个实施场景中,得到第二变换参数的过程,可以是利用从第一历史图像帧与第二历史图像帧中包含的目标图像提取得到的特征点,所组成的匹配点对,进行计算后得到的。
在一个实施场景中,上述的获得第一历史图像帧相对于定位辅助图像的第一变换参数,或者是获得第二历史图像帧相对于定位辅助图像的第三变换参数的具体过程,可以包括以下步骤1和步骤2。
步骤1:选择其中一组第一匹配点对作为目标匹配点对。
在本实施场景中,对定位辅助图像进行特征提取得到的特征点定义为第三特征点,基于第一历史图像帧或者第二历史图像帧进行特征提取得到的特征点定义为第四特征点。在一个实施场景中,可以计算第三特征点与第四特征点的匹配程度,来得到目标匹配点对。
然后,再选择一组第一匹配点对作为目标匹配点对。在选择时,可以从最匹配的点对开始选起。在目标匹配点对中,第三特征点为第一匹配点,第四特征点为第二匹配点。
步骤2:基于目标匹配点对的方向信息,得到与目标匹配点对相对应的单应性矩阵。
目标匹配点对的方向信息代表第一历史帧图像相对于定位辅助图像的旋转角度,或者是第二历史帧图像相对于定位辅助图像的旋转角度。具体的,首先可以在定位辅助图像中提取以第一匹配点为中心的第一图像区域,并在第一历史图像帧或者第二历史图像帧中提取以第四匹配点为中心的第二图像区域。然后,确定第一图像区域的第一偏转角度和第二图像区域的第二偏转角度。最后,基于第一偏转角度和第二偏转角度,得到第一变换参数或者是第三变换参数,具体可以是基于目标匹配点对的方向信息,以及目标匹配点对中的第一匹配点与第二匹配点的像素坐标信息,来得到对应的变换参数。
在一个具体实施场景中,第一偏转角度为第一图像区域的形心与第一图像区域的中心的连线与预设方向(例如是世界坐标系的X轴)之间的有向夹角。第二偏转角度为第二图像区域的形心与第二图像区域的中心的连线与预设方向之间的有向夹角。
在另一个具体实施场景中,第一偏转角度θ可以直接通过下式得到:
θ=arctan(∑yI(x,y),∑xI(x,y)) (1)
上述公式(1)中,(x,y)表示第一图像区域中某一像素点相对第一图像区域中心的偏移量,I(x,y)表示该像素点的像素值,∑表示求和符合,其求和范围为第一图像区域中的像素点。同理,第二偏转角度也可以按照相同的方法计算得到。
在一个具体实施方式中,可以通过以下步骤a和步骤b得到第一历史帧图像或者第二历史帧图像与定位辅助图像之间的变换参数。
步骤a:获取第一偏转角度与第二偏转角度之间的角度差。
角度差例如是第一偏转角度与第二偏转角度的差值。
在一个实施场景中,计算角度差的公式(2)如下:
其中,θ为角度差,为第一偏转角度,T表示定位辅助图像,为第二偏转角度,F表示第一历史帧图像或者第二历史帧图像。
步骤b:基于角度差和第一匹配点对所对应的尺度,得到第一候选变换参数。
第一候选变换参数例如是第一历史帧图像或者第二历史帧图像与定位辅助图像之间对应的单应性矩阵。单应性矩阵的计算公式(3)如下:
H=HlHsHRHr (3)
其中,H为定位辅助图像与第一历史帧图像或者第二历史帧图像之间对应的单应性矩阵,即第一候选变换参数;Hr表示第一历史帧图像或者第二历史帧图像相对于定位辅助图像的平移量;Hs代表的第一匹配点对所对应的尺度,尺度即为在对定位辅助图像进行缩放时的比例信息;HR代表的是第一历史帧图像或者第二历史帧图像相对于定位辅助图像的旋转量,Hl代表平移之后复位的平移量。
为了利用上述的求得角度差,可以对上述的公式(3)进行变换,得到公式(4)。
其中,为第一匹配点在定位辅助图像上的像素坐标;为第二匹配点在第一历史帧图像或者第二历史帧图像上的像素坐标;s为第一匹配点对所对应的尺度,即点对应的尺度;θ为角度差。
因此,通过计算目标匹配点对的方向信息,以此来获得第一历史帧图像或者第二历史帧图像相对于定位辅助图像的旋转角度,以此可以利用该旋转角度信息得到第一历史帧图像或者第二历史帧图像与定位辅助图像之间的变换参数,实现了利用较少的匹配点对计算对应的变换参数。
步骤S22:利用第一位姿中的姿态和第三参考姿态,得到偏移量,其中,第一位姿中的姿态是相对于预设平面的姿态。
第一位姿中的姿态是相对于预设平面的姿态,即为相对于预设平面的旋转量信息。由此,可以基于第一位姿中的姿态,以及第三参考姿态,得到偏移量。
在一个实施场景中,可以将第一位姿中的姿态和第三参考姿态之间的比值,作为偏移量。以此,可以通过求取比值的方式,获得偏移量。
在一个实施场景中,第一位姿中的姿态为R1,第三参考姿态为R2,δ表示偏移量,则偏移量的计算公式(5)如下:
δ=R1(R2)-1 (5)
因此,通过获得对应同一时间的相对于预设平面和参考平面的姿态,利用预设平面和参考平面的姿态,可以得到参考平面与世界坐标系中的预设平面之间的偏移量。
在一个实施场景中,以上实施例提及的通过特征提取算法进行特征提取得到的特征点,都可以认为是与目标图像位于同一平面。
请参阅图3,图3是本申请视觉定位方法第三实施例的流程示意图。在本实施中,最终位姿是当前图像帧在世界坐标系中的位姿信息,即拍摄装置在拍摄当前图像帧时在世界坐标系中的位姿信息。
步骤S31:获取由拍摄装置的拍摄装置拍摄得到的当前图像帧。
关于本步骤的详细描述,请参阅上述步骤S11。
步骤S32:获取第一参考姿态,其中,第一参考姿态是拍摄装置对应于当前图像帧的拍摄时刻且相对于参考平面的姿态。
关于本步骤的详细描述,请参阅上述步骤S12。
步骤S33:利用参考平面与世界坐标系中的预设平面之间的偏移量,对第一参考姿态进行调整,得到第二参考姿态。
关于本步骤的详细描述,请参阅上述步骤S13。
步骤S34:获取至少一个第一候选位姿,并基于第二参考位姿和当前图像帧和其他图像帧之间的第一像素值差异,选择一第一候选位姿作为最终位姿。
在本公开实施例中,第一候选位姿是当前图像帧在世界坐标系中的位姿信息。第一候选位姿可以是基于图像处理算法得到的若干个第一候选位姿,也可以直接选择距离当前图像帧最近的具有位姿信息的图像帧的位姿作为一个候选第一候选位姿,然后,可以利用迭代优化的方法,生成多个第一候选位姿。
在此基础上,可以基于每一个第一候选位姿,并基于第二参考姿态和当前图像帧和其他图像帧之间的第一像素值差异,得到对应于每一个第一候选位姿的第一像素值差异,然后选择一个第一候选位姿作为最终位姿。当前图像帧和其他图像帧之间的第一像素值差异,可以是当前图像帧上的像素点在其他图像帧上对应的像素点的像素值差异。例如。空间中有三维点A,A在当前图像帧上的为a1,A在其他图像帧上的为a2,a1像素点则为其在其他图像帧上的点a2对应的像素点。与此同时,利用第二参考姿态与第一候选位姿中的姿态之间的来进一步优化第一候选位姿。
在其中一个具体实施场景中,可以利用以下公式(6)来选择一第一候选位姿作为最终位姿。
其中,C为最终的误差信息;为第一候选位姿,为旋转量信息(也可以称为旋转量或朝向),为平移量信息;为第二参考姿态;是第二参考姿与第一候选位姿中的姿态之间的姿态差异;空间三维点Xp是基于第一候选位姿确定与其他图像帧中的第五特征点对应的空间点,为空间三维点Xp投影在当前图像帧上的第六特征点,为当前图像帧上第六特征点的像素值,K为拍摄装置的内存矩阵;I(xp)为其他图像帧上第五特征点的像素值,为第一像素值差异;∑p表示对当前图像帧与其他图像帧上存在对应的点(第五特征点和第六特征点)计算第一像素值差异,并求和;α,β为两个约束项的调整参数。可通过实际使用进行比例设定。表示利用迭代优化的方法,生成多个第一候选位姿,并从中选择出最终的误差信息C最小的时候,对应的第一候选位姿。
在一个实施场景中,的计算公式(7)如下:
其中,是传感装置检测得到的,表示相对于预设平面的旋转量信息,δ是上述公式(5)求得偏移量。
在公式(6)中,是传感装置检测,例如是通过陀螺仪检测得到的数据,然后利用偏移量求得的相对于预设平面的旋转量信息,而为通过计算得到的第一候选位姿中的旋转量信息,也是相对于预设平面的旋转量信息,二者理论上应当是相同的。因此,可以用来优化的第一候选位姿的约束信息。
由此,通过利用第二参考姿态来对第一候选位姿进行约束,可以在对第一候选位姿进行迭代优化时,求得更加准确的第一候选位姿。
在一个公开实施例中,可以在求得最终的误差信息以后,选择最终的误差信息满足第一预设要求的第二特征点所对应的第一候选位姿,作为最终位姿。第一预设要求可以根据需要设置,此处不做限定。在一个实施场景中,若是通过上述的公式(6)计算第一像素值差异和姿态差异,则是选择满足预设要求的C对应的第一候选位姿信息作为最终位姿。由此,通过筛选满足预设要求的第一候选位姿,可以获得相对准确的位姿信息。
在一个公开实施例中,在执行上述步骤S33之前,还可以先执行“利用其他图像帧在世界坐标系中的第二位姿,确定与其他图像帧中的第五特征点对应的空间点”步骤,以获得与其他图像帧中的第五特征点对应的空间点。在本公开实施例中,第五特征点即为权利要求书中提及的第一特征点。
其他图像帧在世界坐标系中的第二位姿,可以是基于图像配准算法计算得到的,也可以是利用视觉跟踪算法得到的,此处不做限制。在得到第二位姿以后,可以计算空间中第五特征点对应的空间点的深度值,然后就可以计算该空间点的三维坐标,以此可以确定该空间点的位置。由此,可以确定一定数量的其他图像帧中的第五特征点对应的空间点。
在得到第五特征点的情况下,步骤S34提及的“基于第二参考位姿和当前图像帧和其他图像帧之间的第一像素值差异,选择一第一候选位姿作为最终位姿”具体可以是:基于每个第一候选位姿和空间点,从当前图像帧中确定与第一候选位姿对应的第六特征点,基于第一像素值差异以及第二参考姿态与第一候选位姿之间的姿态差异,选择一第一候选位姿作为最终位姿。在本公开实施例中,第六特征点即为权利要求书中的第二特征点。
在得到其他图像帧中的第五特征点对应的空间点的三维坐标,其他图像帧在世界坐标系中的第二位姿,以及当前帧图像在世界坐标系中的第一候选位姿以后,可以利用投影的方式,在当前图像帧中确定与空间点对应的第六特征点。该第六特征点即为其他图像帧上的第五特征点在当前图像中上对应的点。
然后,可以基于第五特征点和第六特征点得到第一像素值差异,具体是基于第五特征点的像素值和第六特征点的像素值得到第一像素值差异。最后,就可以基于第一像素值差异以及第二参考姿态与第一候选位姿之间的姿态差异,选择一第一候选位姿作为最终位姿。具体的计算方法可以参考上述的公式(6)。
因此,通过利用确定空间中的三维点在其他图像帧中以及在当前图像帧中的对应的点,就可以通过计算像素值的差异方法,来求得较为准确的第一候选位姿。
在一个公开实施例中,第一候选位姿是基于当前图像帧在世界坐标系中的初始位姿确定的。也即,可以基于初始位姿,基于迭代优化的方法,得到一系列的第一候选位姿,再从这一些列的第一候选位姿中选择一个最终位姿。
在一个具体实施场景中,初始位姿是基于当前图像帧和其他图像帧之间的光度误差确定的。也即,可以利用光度误差方程,结合迭代优化的方法,求得初始位姿。
在一个具体实施场景中,在执行上述的“基于第二参考姿态、当前图像帧与其他图像帧之间的光度误差,确定最终位姿”步骤之前,可以通过执行以下步骤1得到初始位姿。
步骤1:获取至少一个第二候选位姿,并基于当前图像帧和其他图像帧之间的第二像素值差异,选择一第二候选位姿作为初始位姿。
第二候选位姿例如是其他图像帧相对于世界坐标系的位姿信息。第二候选位姿可以是基于图像处理算法计算得到若干个第二候选位姿,也可以直接选择距离其他图像帧最近的具有位姿信息的图像帧的位姿作为一个候选第二候选位姿。然后,可以利用迭代优化的方法,生成多个第二候选位姿。在一个实施场景中,第二候选位姿可以是基于上述的第二位姿确定的,具体可以是以第二位姿为基础,利用迭代优化的方法,生成多个第二候选位姿。
在此基础上,可以基于每一个第二候选位姿,并基于当前图像帧和其他图像帧之间的第二像素值差异,然后选择一个第二候选位姿作为初始位姿。当前图像帧和其他图像帧之间的第二像素值差异,可以是当前图像帧上的像素点在其他图像帧上对应的像素点的像素值差异。例如。空间中有三维点B,B在当前图像帧上的为B1,B在其他图像帧上的为B2,B1像素点则为其在其他图像帧上点B2对应的像素点。
在一个具体实施场景中,可以通过以下公式(8)来选择一个第二候选位姿作为当前图像帧与其他图像帧之间的初始变化位姿。
其中,C为第二像素值差异;为第二候选位姿,为旋转量信息,为平移量信息;空间三维点Xp是基于第二候选位姿确定与其他图像帧中的第五特征点对应的空间点,为空间三维点Xp投影在当前图像帧上的第六特征点, 为当前图像帧上第六特征点的像素值,K为拍摄装置的内存矩阵;I(xp)为其他图像帧上第五特征点的像素值,∑p表示对当前图像帧与其他图像帧上存在对应的点(第五特征点和第六特征点)计算第二像素值差异,并求和;表示利用迭代优化的方法,生成多个第二候选位姿,并从中选择出第二像素值差异C最小时对应的第二候选位姿,作为初始位姿。
在一个实施场景中,在得到第二像素值差异,还可以选择第二像素值差异满足第二预设要求的第二特征点所对应的第二候选位姿,作为初始变化位姿。第二预设要求可以根据需要设置,此处不做限定。若是通过上述的公式(8)计算第二像素值差异,则是选择满足预设要求的C对应的第二候选位姿信息作为初始位姿。由此,通过筛选满足预设要求的第二候选位姿,可以获得相对准确的位姿信息。
因此,通过计算第二像素值的差异,以此求得符合要求的初始位姿;然后再基于初始位姿,结合陀螺仪的检测数据(第二参考姿态)和光度误差来求最终的误差信息,继而能够得到符合要求的最终位姿。通过利用陀螺仪数据的校正,可以得到准确度更高的最终位姿。
请参阅图4,图4是本申请视觉定位装置一实施例的框架示意图。视觉定位装置40包括获取模块41、第一位姿确定模块42、调整模块43和第二位姿确定模块44。获取模块41用于获取由拍摄装置拍摄得到的当前图像帧;第一位姿确定模块42用于获取第一参考姿态,其中,第一参考姿态是拍摄装置对应于当前图像帧的拍摄时刻且相对于参考平面的姿态;调整模块43用于利用参考平面与世界坐标系中的预设平面之间的偏移量,对第一参考姿态进行调整,得到第二参考姿态;第二位姿确定模块44用于基于第二参考姿态、当前图像帧与其他图像帧的图像信息,确定当前图像帧在世界坐标系中的最终位姿,其中,其他图像帧的拍摄时间位于当前图像帧之前。
其中,视觉定位装置40还包括偏移量获取模块,在上述的调整模块43用于利用参考平面与世界坐标系中的预设平面之间的偏移量,对第一参考姿态进行调整,得到第二参考姿态之前,偏移量获取模块用于获取第一历史图像帧在世界坐标系中的第一位姿,以及获取第三参考姿态,其中,第三参考姿态是拍摄装置对应于第一历史图像帧的拍摄时刻且相对于参考平面的姿态;利用第一位姿中的姿态和第三参考姿态,得到偏移量,其中,第一位姿中的姿态是相对于预设平面的姿态。
其中,上述的第一参考姿态由与拍摄装置相对固定的传感装置检测得到的,第一参考姿态的检测时刻与当前图像帧的拍摄时刻之间的差值不超过第一预设时间差;和/或,上述的第三参考姿态由与拍摄装置相对固定的传感装置检测得到的,第三参考姿态的检测时刻与第一历史图像帧的拍摄时刻之间的差值不超过第二预设时间差。
其中,上述的第一位姿是基于定位辅助图像确定的,其中,预设平面为定位辅助图像所在的平面;和/或,上述的偏移量获取模块用于利用第一位姿中的姿态和第三参考姿态,得到偏移量,包括:将第一位姿中的姿态和第三参考姿态之间的比值,作为偏移量。
其中,上述的偏移量获取模块用于获取第一历史图像帧在世界坐标系中的第一位姿,包括:基于第一历史图像帧与定位辅助图像之间的第一匹配点对,确定第一历史图像帧与定位辅助图像之间的第一变换参数,利用第一变换参数得到第一位姿;或者,基于第一历史图像帧与第二历史图像帧之间的第二匹配点对,确定第一历史图像帧与第二历史图像帧之间的第二变换参数,利用第二变换参数和第二历史图像帧与定位辅助图像之间的第三变换参数,得到第一位姿,其中,第二历史图像帧位于第一历史图像帧之前。
其中,上述的第二位姿确定模块44用于基于第二参考姿态、当前图像帧与其他图像帧的图像信息,确定当前图像帧在世界坐标系中的最终位姿,包括:基于第二参考姿态、当前图像帧与其他图像帧之间的光度误差,确定最终位姿。
其中,上述的第二位姿确定模块44用于基于第二参考姿态、当前图像帧与其他图像帧之间的光度误差,确定最终位姿,包括:获取至少一个第一候选位姿,并基于第二参考姿态和当前图像帧和其他图像帧之间的第一像素值差异,选择一第一候选位姿作为最终位姿。
其中,上述的第一候选位姿是基于当前图像帧在世界坐标系中的初始位姿信息确定的,初始位姿信息是基于当前图像帧和其他图像帧之间的光度误差确定的;和/或,在第二位姿确定模块44用于基于第二参考姿态、当前图像帧与其他图像帧之间的光度误差,确定最终位姿之前,第二位姿确定模块44还用于利用其他图像帧在世界坐标系中的第二位姿,确定与其他图像帧中的第一特征点对应的空间点。另外,第二位姿确定模块44用于基于第二参考姿态和当前图像帧和其他图像帧之间的第一像素值差异,选择一第一候选位姿作为最终位姿,包括:基于每个第一候选位姿和空间点从当前图像帧中确定与第一候选位姿对应的第二特征点,获得第一特征点和第二特征点之间的第一像素值差异,并基于第一像素值差异以及第二参考姿态与第一候选位姿之间的姿态差异,选择一第一候选位姿作为最终位姿。
其中,在第二位姿确定模块44用于基于第二参考姿态、当前图像帧与其他图像帧之间的光度误差,确定最终位姿之前,第二位姿确定模块44还用于获取至少一个第二候选位姿,并基于当前图像帧和其他图像帧之间的第二像素值差异,选择一第二候选位姿作为初始位姿;第二位姿确定模块44用于基于第一像素值差异以及第二参考姿态与第一候选位姿之间的姿态差异,选择一第一候选位姿作为最终变化位姿,包括:选择第一像素值差异和姿态差异满足第一预设要求的第二特征点所对应的第一候选位姿,作为最终变化位姿。
其中,上述的第二候选位姿是基于第二位姿确定的。上述的第二位姿确定模块44用于基于当前图像帧和其他图像帧之间的第二像素值差异,选择一第二候选位姿作为初始位姿,包括:选择第二像素值差异满足第二预设要求的第二特征点所对应的第二候选位姿,作为初始位姿。
请参阅图5,图5是本申请电子设备一实施例的框架示意图。电子设备50包括相互耦接的存储器51和处理器52,处理器52用于执行存储器51中存储的程序指令,以实现上述任一视觉定位方法实施例的步骤。在一个具体的实施场景中,电子设备50可以包括但不限于:微型计算机、服务器,此外,电子设备50还可以包括笔记本电脑、平板电脑等移动设备,在此不做限定。
具体而言,处理器52用于控制其自身以及存储器71以实现上述任一视觉定位方法实施例的步骤。处理器52还可以称为CPU(Central Processing Unit,中央处理单元)。处理器52可能是一种集成电路芯片,具有信号的处理能力。处理器52还可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器52可以由集成电路芯片共同实现。
上述方案,能够有利于提高图像配准的准确性。
请参阅图6,图6为本申请计算机可读存储介质一实施例的框架示意图。计算机可读存储介质60存储有能够被处理器运行的程序指令601,程序指令601用于实现上述任一视觉定位方法实施例的步骤。
上述方案,因此,通过获取参考平面与世界坐标系中的预设平面之间的偏移量,可以基于该偏移量对第一参考姿态信息进行调整,得到第二参考姿态信息,该第二参考姿态信息作为当前图像帧相对于世界坐标系的预设平面的姿态的参考信息,故可以利用该第二参考姿态信息来优化当前图像帧在世界坐标系中的最终位姿,提高了最终位姿的准确度,即实现了准确定位。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种反光工件的6DoF位姿估计方法