图像处理方法及相关终端、设备和存储介质
技术领域
本申请涉及人工智能
技术领域
,特别是涉及一种图像处理方法及相关终端、设备和存储介质。背景技术
图像配准以及跟踪是AR、VR等计算机视觉领域中的研究重点,通过图像配准、图像跟踪技术可以获取相机拍摄到的当前图像与目标图像之间的变换参数,从而后续可以通过变换参数,得到目标图像在当前图像中的位置。
目前,终端在运行图像处理算法,要么通过将获取的图像通过网络上传至云端,由云端完成具体的图像处理过程,进而再将处理结果反馈给本地端;要么是仅仅有本地端利用自身算力来运行图像处理算法,以得到相应的处理结果。这样的方法,容易受到网络传输速度不佳、云端处理速度较慢的影响,导致设备无法及时得到结果,或者是本地端计算能力不足,导致检测图像处理的准确度不高等问题,这些问题极大的阻碍了该技术的进一步发展。
因此,如何提高设备在运行图像处理算法的速度、提高图像处理的准确度,具有非常重要的意义。
发明内容
本申请提供一种图像处理方法及相关终端、设备和存储介质。
本申请第一方面提供了一种图像处理方法,方法包括:终端获取待配准图像;利用本地目标图像对所述待配准图像进行第一图像配准,以得到本地处理结果;以及将待配准图像发送给云端,以使云端利用云端目标图像对待配准图像进行第二图像配准而得到云端处理结果;基于本地处理结果和云端处理结果中的至少一个,得到待配准图像的第一处理结果。
因此,通过利用第一图像配准得到本地处理结果,或者是利用第二图像配准得到云端处理结果,可以使得终端既能够利用云端的计算能力,也能利用本地端的计算能力,使得终端进行图像配准的方式更灵活,而且基于本地处理结果和云端处理结果的至少一个得到最终处理结果,可使得即使在本地处理结果或云端处理结果无法获取得到时,还可利用两者中的另一处理结果得到最终处理结果,故提高图像配准的可靠性。
在一些应用场景中,可选择最先得到的处理结果作为最终处理结果,故还可以提高图像配准的速度,在一些应用场景中,可优先选择具有更优处理资源(例如配准能力更强更准确)的一端的处理结果作为最终处理结果,可提高图像配准的准确性。
其中,上述的利用本地目标图像对待配准图像进行第一图像配准,以得到本地处理结果,包括:从第一目标图像集中查找出至少一个第一目标图像作为本地目标图像;利用本地配准方式,对待配准图像和本地目标图像进行配准,得到待配准图像和本地目标图像之间的本地变换参数;基于本地变换参数,得到本地处理结果;和/或,云端处理结果是云端利用云端配准方式对待配准图像和云端目标图像进行配准得到的,云端目标图像来自于第二目标图像集。
因此,通过从第一目标图像集中查找出至少一个第一目标图像作为本地目标图像,可以基于该本地目标图像计算出本地变换参数,并最终得到本地处理结果。
其中,上述的一目标图像集和第二目标图像集中至少存在部分图像相同;和/或,第一目标图像集中的图像数量小于第二目标图像集中的图像数量;和/或,本地配准方式所需的计算能力或计算时间小于云端配准方式所需的计算能力或计算时间。
因此,通过设置第一目标图像集和第二目标图像集中至少存在部分图像相同,可以利用云端和本地端均对部分图像与待配准图像进行图像配准,提高图像处理方法的鲁棒性。另外,通过设置第一目标图像集中的图像数量小于第二目标图像集中的图像数量,可以使得本地端进行第一图像配准时,需要与待配准图像进行图像配准的图像数量较少,以此能够加快第一图像配准的配准速度,而且考虑云端处理能力较强,为云端配置更多的目标图像,能够实现云端进行更准确的配准。另外,通过设置本地配准方式所需的计算能力小于云端配准方式所需的计算能力,可以降低对终端本地计算能力的要求,能够加快本地配准的速度;通过设置本地配准方式所需的计算时间小于云端配准方式所需的计算时间,也能够加快本地配准的速度。
其中,上述的从第一目标图像集中查找出至少一个第一目标图像作为本地目标图像,包括:基于待配准图像和第一目标图像中特征点的特征表示,确定待配准图像与第一目标图像之间的特征相似度;选择特征相似度满足预设相似度要求的至少一个第一目标图像作为本地目标图像;和/或,利用本地配准方式,对待配准图像和本地目标图像进行配准,得到待配准图像和本地目标图像之间的本地变换参数,包括:基于待配准图像和本地目标图像中特征点的特征表示,确定待配准图像与本地目标图像之间的至少一组本地匹配点对;基于至少一组本地匹配点对,得到本地变换参数。
因此,通过进行相似度计算,可以快速确定与待配准图像相似度最高的第一目标图像,有助于加快本地端的本地配准方式。
其中,上述的基于本地处理结果和云端处理结果中的至少一个,得到待配准图像的第一处理结果,包括:响应于满足预设条件的情况,将云端处理结果作为待配准图像的第一处理结果;响应于不满足预设条件的情况,将本地处理结果作为待配准图像的第一处理结果。
因此,通过判断云端处理结果是否满足预设条件,可以在满足预设条件时,充分利用云端的计算能力;在不满足预设条件时,通过将本地处理结果作为待配准图像的第一处理结果,使得图像配准可以继续执行。
其中,上述的预设条件为在预设时间内接收到云端处理结果。
因此,通过将预设条件设置为预设时间内接收到云端处理结果,可以在不满足预设条件时,不利用云端处理结果,避免终端的响应时间过长。
其中,上述的获取待配准图像,包括:获取拍摄装置拍摄得到的图像帧,其中,图像帧包括第一图像帧和第二图像帧;将第一图像帧作为待配准图像;方法还包括:将第二图像帧依序作为待跟踪图像,并基于参考图像帧的参考处理结果、待跟踪图像与参考图像帧中的图像信息,以得到待跟踪图像的第二处理结果,其中,参考图像帧为在待跟踪图像之前的图像帧,参考处理结果是基于第一处理结果确定。
因此,通过将第一图像帧作为待配准图像,可以实现持续地对拍摄装置拍摄得到的图像帧进行图像配准。另外,通过第二图像帧依序作为待跟踪图像,后续实现对第二图像帧的图像跟踪。
其中,上述的利用本地目标图像对待配准图像进行第一图像配准,以得到本地处理结果的步骤由第一线程执行;基于参考图像帧的参考处理结果、待跟踪图像与参考图像帧中的图像信息,以得到待跟踪图像的第二处理结果的步骤、将待配准图像发送给云端的步骤、基于本地处理结果和云端处理结果中的至少一个,得到待配准图像的第一处理结果的步骤,以上至少一个步骤由第二线程执行;其中,第一线程和第二线程是异步处理的。
因此,通过将第一线程和第二线程是设置为异步处理,可以在进行图像配准的同时,还可以进行图像跟踪,无需等待图像配准的结果(第一处理结果),使得终端能够及时得到跟踪结果(第二处理结果),提高了终端的响应速度,降低了延迟。
其中,上述的第一处理结果为待配准图像与最终目标图像之间的第一变换参数,最终目标图像为本地目标图像或云端目标图像,第二处理结果为待跟踪图像与参考图像帧之间的第二变换参数;或者,第一处理结果为待配准图像的位姿,第二处理结果为待跟踪图像的位姿;或者,第一处理结果为第一变换参数,第二处理结果为待跟踪图像的位姿,且方法还包括利用第二线程执行以下步骤:利用第一变换参数,得到待配准图像的位姿。
因此,通过将第二处理结果设置为不同的类型(第二变换参数或者是待跟踪图像的位姿),后续可以根据需要进行选择。
其中,在上述的利用本地目标图像对待配准图像进行第一图像配准,以得到本地处理结果之前,方法还包括利用第二线程执行以下步骤:将第一线程进行初始化;和/或,方法还包括利用第二线程执行以下至少一个步骤:在第二线程得到待跟踪图像的第二处理结果之后,基于待跟踪图像的第二处理结果,对待跟踪图像进行渲染并显示;在第一线程得到待配准图像的第一处理结果且未显示待配准图像的情况下,基于待配准图像的第一处理结果,对待配准图像进行渲染并显示。
因此,通过利用第二线程对待跟踪图像进行渲染并显示,或者是利用第二线程对待配准图像进行渲染并显示,可以实现对图像帧的加工,实现与真实环境之间的交互。
本申请第二方面提供了一种图像处理终端,包括:图像获取模块、本地配准模块、云端配准模块和确定模块,其中,图像获取模块,用于获取待配准图像;本地配准模块,用于利用本地目标图像对待配准图像进行第一图像配准,以得到本地处理结果;以及云端配准模块,用于将待配准图像发送给云端,以使云端利用云端目标图像对待配准图像进行第二图像配准而得到云端处理结果;确定模块,用于基于本地处理结果和云端处理结果中的至少一个,得到待配准图像的第一处理结果。
本申请第三方面提供了一种电子设备,包括相互耦接的存储器和处理器,处理器用于执行存储器中存储的程序指令,以实现上述第一方面中的图像处理方法。
本申请第四方面提供了一种计算机可读存储介质,其上存储有程序指令,程序指令被处理器执行时实现上述第一方面中的图像处理方法。
上述方案,通过利用第一图像配准得到本地处理结果,或者是利用第二图像配准得到云端处理结果,可以使得终端既能够利用云端的计算能力,也能利用本地端的计算能力,使得终端进行图像配准的方式更灵活,而且基于本地处理结果和云端处理结果的至少一个得到最终处理结果,可使得即使在本地处理结果或云端处理结果无法获取得到时,还可利用两者中的另一处理结果得到最终处理结果,故提高图像配准的可靠性。
在一些应用场景中,可选择最先得到的处理结果作为最终处理结果,故还可以提高图像配准的速度,在一些应用场景中,可优先选择具有更优处理资源(例如配准能力更强更准确)的一端的处理结果作为最终处理结果,可提高图像配准的准确性在运行图像配准算法时,可以较快得到处理结果,或者得到较为准确的配准结果。
附图说明
图1是本申请图像配准方法第一实施例的第一流程示意图;
图2是本申请图像处理方法第一实施例的第二流程示意图;
图3是本申请图像处理方法第一实施例的第三流程示意图;
图4是本申请图像处理方法第一实施例的第四流程示意图;
图5是本申请图像处理方法第二实施例的流程示意图;
图6是本申请图像处理终端实施例的框架示意图;
图7是本申请电子设备一实施例的框架示意图;
图8是本申请计算机可读存储介质一实施例的框架示意图。
具体实施方式
下面结合说明书附图,对本申请实施例的方案进行详细说明。
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本申请。
本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。此外,本文中的“多”表示两个或者多于两个。
请参阅图1,图1是本申请图像处理方法第一实施例的第一流程示意图。具体而言,可以包括如下步骤:
步骤S11:获取待配准图像。
实施本申请的图像处理方法可以是移动终端,具体可以包括手机、平板电脑、智能眼镜等。待配准图像可以是由拍摄装置拍摄得到的图像,例如是手机、平板的相机拍摄得到的,或是监控摄像头拍摄得到的等等,待配准图像的具体获取方式不受限制。
在一个具体实施场景中,本申请的图像处理方法可以在网页浏览器中执行,也即可以在网页端中执行。
步骤S12:利用本地目标图像对待配准图像进行第一图像配准,以得到本地处理结果。
在一个实施场景中,本地目标图像属于第一目标图像集,第一目标图像集有第一预设数量张的本地目标图像。在进行第一图像配准时,会将第一目标图像集中的所有的本地目标图像都与待配准图像进行第一图像配准。
利用本地目标图像对待配准图像进行第一图像配准,可以使利用通用的图像配准方法。图像配准算法例如是基于灰度和模板的算法,或者是基于特征的匹配方法。例如,关于基于特征的匹配方法,可以获得一定数量的关于待配准图像与本地目标图像的匹配点对,然后利用随机一致性采样算法(RANSAC)来计算待配准图像与本地目标图像的变换参数,以此实现得到本地处理结果。另外,在一个具体实施场景中,本地处理结果可以直接确定为待配准图像与目标图像的变换参数;在另一个具体实施场景中,本地处理结果还可以是终端的位姿,即通过利用待配准图像与本地目标图像的变换参数(例如是单应性矩阵H),求得在基于本地目标图像建立的世界坐标系中终端的位姿(下称终端的位姿)。
在一个实施场景中,可以利用本地配准方式,对待配准图像和本地目标图像进行配准,以此得到本地处理结果。本地配准方式例如是上述的第一图像配准。
步骤S13:将待配准图像发送给云端,以使云端利用云端目标图像对待配准图像进行第二图像配准而得到云端处理结果。
在一个实施场景中,云端目标图像属于第二目标图像集。第二目标图像集有第二预设数量张的云端目标图像。在进行第二图像配准时,会将第二目标图像集中的所有的云端目标图像都与待配准图像进行第二图像配准。
可以理解的是,因为云端和本地端都可以进行图像配准,因此步骤S12和步骤S13的执行顺序不受限制,既可以先执行步骤S12或者是先执行步骤S13,也可以二者同时执行。
在一个实施场景中,因为云端的计算能力相比于本地端更大,云端利用云端目标图像对待配准图像进行第二图像配准,可以是采用需要的计算能力相较于本地端更大的图像配准算法。
在一个实施场景中,云端处理结果是云端利用云端配准方式对待配准图像和云端目标图像进行配准得到的。通过利用云端配准方式,可以借助云端更大的计算能力,得到相较于本地处理结果更为准确的云端处理结果。
步骤S14:基于本地处理结果和云端处理结果中的至少一个,得到待配准图像的第一处理结果。
在得到本地处理结果和云端处理结果以后,可以根据需要,选择本地处理结果和云端处理结果中的至少一个,来得到待配准图像的第一处理结果。例如,为了满足终端的响应速度要求,可以优先选择本地处理结果;为了满足终端的图像配准准确度要求,可以优先选择云端处理结果。
在一个实施场景中,第一处理结果为待配准图像与最终目标图像之间的第一变换参数。最终目标图像为本地目标图像或云端目标图像。
因此,通过利用第一图像配准得到本地处理结果,或者是利用第二图像配准得到云端处理结果,可以使得终端既能够利用云端的计算能力,也能利用本地端的计算能力,使得终端进行图像配准的方式更灵活,而且基于本地处理结果和云端处理结果的至少一个得到最终处理结果,可使得即使在本地处理结果或云端处理结果无法获取得到时,还可利用两者中的另一处理结果得到最终处理结果,故提高图像配准的可靠性。
在一些应用场景中,可选择最先得到的处理结果作为最终处理结果,故还可以提高图像配准的速度,在一些应用场景中,可优先选择具有更优处理资源(例如配准能力更强更准确)的一端的处理结果作为最终处理结果,可提高图像配准的准确性。
在一个实施场景中,第一目标图像集和第二目标图像集中至少存在部分图像相同。例如,第二目标图像集中的图像可以包括第一目标图像集中的全部图像。通过设置第一目标图像集和第二目标图像集中至少存在部分图像相同,可以利用云端和本地端均对部分图像与待配准图像进行图像配准,提高图像处理方法的鲁棒性。
在一个实施场景中,第一目标图像集中的图像数量小于第二目标图像集中的图像数量。通过设置第一目标图像集中的图像数量小于第二目标图像集中的图像数量,可以使得本地端进行第一图像配准时,需要与待配准图像进行图像配准的图像数量较少,以此能够加快第一图像配准的配准速度,而且考虑云端处理能力较强,为云端配置更多的目标图像,能够实现云端进行更准确的配准。
在一个实施场景中,本地配准方式所需的计算能力或计算时间小于云端配准方式所需的计算能力或计算时间。因此,通过设置本地配准方式所需的计算能力小于云端配准方式所需的计算能力,可以降低对终端本地计算能力的要求,能够加快本地配准的速度;通过设置本地配准方式所需的计算时间小于云端配准方式所需的计算时间,也能够加快本地配准的速度。
请参阅图2,图2是本申请图像处理方法第一实施例的第二流程示意图。本实施例是对上述步骤S11提及的“获取待配准图像”步骤的进一步扩展,具体可以包括以下步骤:
步骤S111:获取拍摄装置拍摄得到的图像帧,其中,图像帧包括第一图像帧和第二图像帧。
拍摄装置例如是终端的相机模块或是其他图像采集设备(如监控相机等)。拍摄装置拍摄得到的图像帧可以分为第一图像帧和第二图像帧。第一图像帧可以用于图像配准,第二图像帧可以用于图像配准之后的图像跟踪。第一图像帧和第二图像帧可以是相同的,也可以不同;相同时,第二图像帧即为第一图像帧。
步骤S112:将第一图像帧作为待配准图像。
终端可以获取第一图像帧作为待配准图像,用于进行图像配准。
在一个实施方式中,可以将第一图像帧依序作为待配准图像,可以是按照第一图像帧的获得顺序,依序将先后获得第一图像帧作为待配准图像。
因此,通过将第一图像帧作为待配准图像,可以实现持续地对拍摄装置拍摄得到的图像帧进行图像配准。
请参阅图3,图3是本申请图像处理方法第一实施例的第三流程示意图。本实施例是对上述实施例步骤S12提及的“利用本地目标图像对待配准图像进行第一图像配准,以得到本地处理结果”具体扩展,包括以下步骤:
步骤S121:从第一目标图像集中查找出至少一个第一目标图像作为本地目标图像。
在进行第一图像配准时,可以首先从第一目标图像集中查找出至少一个第一目标图像作为本地目标图像,用于后续的获得本地处理结果。查找的方法例如是第一目标图像的特征信息与待配准图像的特征信息的匹配程度,或者是第一目标图像的特征信息与待配准图像的相似程度等等。
在一个实施场景中,本步骤具体可以包括步骤S1211和步骤S1212。
步骤S1211:基于待配准图像和第一目标图像中特征点的特征表示,确定待配准图像与第一目标图像之间的特征相似度。
在一个实施场景中,可以利用一些特征提取算法对待配准图像和第一目标图像进行特征提取,以获得图像的中的特征点,特征点的数量不做具体限制。在本申请中,对图像帧提取的特征点,可以包括对基于该图像帧建立的图像金字塔中的一系列的图像帧进行特征提取得到的特征点。在本实施例中,基于图像帧进行特征提取的特征点,可以认为是与最终目标图像处于同一个平面。
特征提取算法例如是FAST(features from accelerated segment test)算法,SIFT(Scale-invariant feature transform)算法,ORB(Oriented FAST and RotatedBRIEF)算法等等。在一个具体实施场景中,特征提取算法为ORB(Oriented FAST andRotated BRIEF)算法。另外,在得到特征点以后,还会得到与每个特征点对应的特征表示,特征表示例如是特征向量。因此,每一个特征点,均有一个与其对应的特征表示。
在一个具体实施场景中,可以将对全部第一目标图像进行特征提取得到的特征表示作为第一目标图像的局部特征集合,输入到“词袋”(Bag of words)模型中,用于构建快速检索第一目标图像的数据库。
此后,可以计算待配准图像和每一张第一目标图像中特征点的特征表示的相似程度,例如是计算待配准图像和每一张第一目标图像中特征点的特征表示的距离。在一个具体实施场景中,可以将对待配准图像进行特征提取得到的特征表示,输入到上述“词袋”模型中,用于快速确定待配准图像与第一目标图像之间的特征相似度。
步骤S1212:选择特征相似度满足预设相似度要求的至少一个第一目标图像作为本地目标图像。
预设相似度要求可以是全部第一目标图像中,与待配准图像最相似的第一目标图像。
在一个具体实施场景中,预设相似度要求还包括待配准图像的特征点的特征表示和第一目标图像的特征点的特征表示之间的距离满足预设阈值要求。例如,可以先选择与待配准图像最相似的第一目标图像,然后计算二者的特征点的特征表示之间的距离是否满足预设阈值要求,若满足,则将第一目标图像作为本地目标图像。若不满足,则选择与待配准图像的相似度排第二的第一目标图像,然后计算二者的特征点的特征表示之间的距离是否满足预设阈值要求,后续以此类推。
通过进行相似度计算,可以快速确定与待配准图像相似度最高的第一目标图像,有助于加快本地端的本地配准方式。
步骤S122:利用本地配准方式,对待配准图像和本地目标图像进行配准,得到待配准图像和本地目标图像之间的本地变换参数。
在确定本地目标图像以后,就可以利用本地配准方式,对待配准图像和本地目标图像进行配准,以充分利用终端的计算能力,以此得到待配准图像和本地目标图像之间的本地变换参数。
在一个实施场景中,本步骤包括以下步骤S1221和步骤S1222。
步骤S1221:基于待配准图像和本地目标图像中特征点的特征表示,确定待配准图像与本地目标图像之间的至少一组本地匹配点对。
首先,可以对待配准图像和本地目标图像进行特征提取,以得到待配准图像和本地目标图像中特征点的特征表示。本地目标图像的特征点定义为第一特征点,待配准图像的特征点定义为第二特征点。在一个实施场景中,在上述的步骤S1211中,因为已经对对待配准图像和本地目标图像进行特征提取了,此时可以直接获取,减少处理步骤。
然后,可以计算待配准图像与本地目标图像之间的特征点的匹配程度,以获得至少一组本地匹配点对。特征点的匹配程度,具体可以是两个特征点之间的特征表示的匹配程度。在一个实施场景中,可以计算待配准图像中每一个特征点与本地目标图中每一个特征点的匹配程度。在一个实施场景中,两个特征点之间的匹配程度是基于第两个特征点的特征表示的距离得到的。例如,两个特征点的特征表示之间的距离的大小,即为匹配程度,距离越近则越匹配;距离最近的,则可以认为是最匹配的。在一个具体实施场景中,特征表示为特征向量,特征表示之间的距离即是特征向量之间的距离。在具体确定本地匹配点对时,可以按照匹配程度的从高到低来选择,选出至少一组本地匹配点对。一组本地匹配点对中,第一特征点为第一匹配点,第二特征点为第二匹配点。
步骤S1222:基于至少一组本地匹配点对,得到本地变换参数。
在一个实施场景中,可以基于至少一组本地匹配点对,利用随机一致性采样算法(RANSAC)来计算待配准图像与本地目标图像的变换参数。
在另一个实施场景,在得到至少一组本地匹配点对以后,可以计算每一组本地匹配点对的方向信息。本地匹配点对的方向信息可以根据本地匹配点对中的第一匹配点和第二匹配点的方向来得到。
在一个具体实施场景中,本地匹配点对的方向信息可以是第一匹配点和第二匹配点的方向的差值。例如,当特征点是通过ORB算法提取得到的,则第一匹配点的方向是角点方向角,第二匹配点的方向也是角点方向角,则本地匹配点对的方向信息可以为第一匹配点的角点方向角与第二匹配点的角点方向角的差值。以此,可以通过计算一组本地匹配点对的方向信息,可以求得待配准图像相对于本地目标图像的旋转角度。在得到一组本地匹配点对的方向信息以后,后续就可以利用该组本地匹配点对的方向信息代表的待配准图像相对于本地目标图像的旋转角度,来进行图像配准,最终得到本地目标图像与待配准图像之间的本地变换参数。
在一个具体实施场景中,可以在本地目标图像中提取以第一匹配点为中心的第一图像区域,并在待配准图像中提取以第二匹配点为中心的第二图像区域。然后,确定第一图像区域的第一偏转角度和第二图像区域的第二偏转角度。最后,基于第一偏转角度和第二偏转角度,得到变换参数,具体可以是基于本地匹配点对的方向信息,以及本地匹配点对中的第一匹配点与第二匹配点的像素坐标信息,来得到变换参数。
在一个具体实施场景中,第一偏转角度为第一图像区域的形心与第一图像区域的中心的连线与预设方向(例如是世界坐标系的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为第一匹配点对所对应的尺度,即点对应的尺度;θ为角度差。
步骤S123:基于本地变换参数,得到本地处理结果。
若本地处理结果确定为本地变换参数,则可以将上述步骤S122得到的本地变换参数作为本地处理结果。
若本地处理结果确定为待配准图像的位姿,即终端在拍摄待配准图像时的位姿,则可以基于本地变换参数,进行换算,以此得到待配准图像的位姿(本地处理结果)。例如,可以利用PnP(Perspective-n-Point)算法对本地变换参数进行处理,以此得到待配准图像的位姿。
因此,通过从第一目标图像集中查找出至少一个第一目标图像作为本地目标图像,可以基于该本地目标图像计算出本地变换参数,并最终得到本地处理结果。
请参阅图4,图4是本申请图像处理方法第一实施例的第四流程示意图。本实施例是对上述实施例步骤S14的具体扩展,包括以下步骤:
步骤S141:判断云端处理结果是否满足预设条件。
预设条件例如是云端的处理结果的准确度要求,云端的处理结果处理时间要求等等,此处不做限制。
在一个具体实施场景中,预设条件为在预设时间内接收到云端处理结果。例如,在将待配准图像发送给云端以后,若没有在预设时间内接收到云端处理结果,则可以认为云端处理结果不满足预设条件。通过将预设条件设置为预设时间内接收到云端处理结果,可以在不满足预设条件时,不利用云端处理结果,避免终端的响应时间过长。
步骤S142:响应于满足预设条件的情况,将云端处理结果作为待配准图像的第一处理结果。
满足预设条件的情况,意味着云端处理结果可以使用,此时终端可以响应于满足预设条件的情况,将云端处理结果作为待配准图像的第一处理结果以利用云端处理结果,进而能够利用云端的计算能力。
步骤S143:响应于不满足预设条件的情况,将本地处理结果作为待配准图像的第一处理结果。
在不满足预设条件的情况下,意味着云端处理结果不能用于图像配准,此时终端可以响应于不满足预设条件的情况,将本地处理结果作为待配准图像的第一处理结果,使得图像配准可以继续执行。
因此,通过判断云端处理结果是否满足预设条件,可以在满足预设条件时,充分利用云端的计算能力;在不满足预设条件时,通过将本地处理结果作为待配准图像的第一处理结果,使得图像配准可以继续执行。
在一个实施例中,在得到待配准图像的第一处理结果以后,本申请的图像处理方法还可以包括以下步骤S21。
步骤S21:将第二图像帧依序作为待跟踪图像,并基于参考图像帧的参考处理结果、待跟踪图像与参考图像帧中的图像信息,以得到待跟踪图像的第二处理结果,其中,参考图像帧为在待跟踪图像之前的图像帧。
将第二图像帧依序作为待跟踪图像,可以是基于第二图像帧的获得顺序,依序作为待跟踪图像,来得到待跟踪图像的第二处理结果。在一个具体实施场景中,第二处理结果可以直接确定为待跟踪图像与最终目标图像的变换参数;在另一个具体实施场景中,第二处理结果还可以是终端的位姿。得到待跟踪图像与最终目标图像的变换参数的具体方法可以是同样的图像配准算法,得到终端的位姿的方法可以是通用的图像跟踪算法,此处不再详细描述。因此,通过第二图像帧依序作为待跟踪图像,后续实现对第二图像帧的图像跟踪。
在一个实施场景中,第一图像帧与第二图像帧为不同的图像帧。例如,在将第1图像帧作为第一图像帧以后,会将后续第2图像帧作为第二图像帧,进行图像跟踪。在将第10图像帧作为第一图像帧以后,会将后续第11图像帧作为第二图像帧,进行图像跟踪。在另一个实施场景中,可以将至少部分第一图像帧为第二图像帧。例如,可以将第10图像帧作为第一图像帧,同时还可以将第10图像帧作为第二图像帧。通过将第一图像帧与第二图像帧为不同的图像帧,或者是将至少部分第一图像帧为第二图像帧,可以分别针对第一图像帧进行图像配准或者针对第二图像帧进行图像跟踪。
待跟踪图像与参考图像帧中的图像信息,可以理解为通过对待跟踪图像和参考图像帧进行处理以后,得到的一切信息。例如,可以基于特征提取算法,分别对待跟踪图像和参考图像帧进行特征提取,以得到的关于待跟踪图像和参考图像帧中的特征点的特征信息,这些特征信息可以认为是待跟踪图像与参考图像帧中的图像信息。利用待跟踪图像与参考图像帧中的图像信息,可以得到待跟踪图像与参考图像帧之间的对应变换参数或者是对应位姿变化量。对应变换参数或者是对应位姿变化量可以通过同样的图像配准方法或是图像跟踪方法得到,此处不再详细描述。
在一个实施场景中,参考图像帧为在待跟踪图像之前的图像帧。在一个具体实施场景中,参考图像帧为待跟踪图像的前第i帧,i为大于或等于1的整数。若在作为待跟踪图像的第二图像帧之前,还有部分第二图像帧时,参考图像帧既可以是第一图像帧,还可以是第二图像帧。
在一个实施场景中,参考处理结果是基于第一处理结果得到的。
在一个具体实施场景中,当参考图像帧是第一图像帧时,则参考图像帧为待配准图像,此时可以直接将第一处理结果作为参考处理结果。当第一处理结果是待配准图像与目标图像的变换参数,参考处理结果可以是待配准图像与目标图像的变换参数,参考处理结果还可以是基于该变换参数得到的终端的位姿。当第一处理结果是终端的位姿时,则参考处理结果可以直接确定为终端的位姿。
在另一个实施场景中,当参考图像帧是第二图像帧时,参考处理结果可以基于第一处理结果确定,具体确定方法可以是获取参考图像帧相对于其前n图像帧(n大于等于1)的相对处理结果以及前n帧的处理结果,以此得到参考处理结果,其中,前n帧的处理结果是基于第一处理结果得到的。例如,当第1图像帧为第一图像帧,第2图像帧为第二图像帧,且第2图像帧作为参考图像帧时,此时参考处理结果可以是获取第2图像帧相对于第1图像帧的相对处理结果(两帧图像对应的单应性矩阵或者是两帧图像对应的终端的位姿变化量),获取第1图像帧的处理结果(第一处理结果),以此得到第2图像帧的处理结果(参考处理结果)。此后,当第3图像帧是第二图像帧且为参考图像帧时,此时还可以获取第3图像帧相对于第2图像帧的相对处理结果,以及获取第2图像帧的处理结果,以此得到第3图像帧的处理结果(参考处理结果),因为第2图像帧的处理结果是基于第一处理结果得到的,因此也可以认为第3图像帧的处理结果(参考处理结果)是基于第一处理结果确定的。在另一个具体实施场景中,也可以是获取第3图像帧相对于第1图像帧的相对处理结果,以及获取第1图像帧的第一处理结果,以此获得第3图像帧的处理结果(参考处理结果)。具体确定方法,可以根据需要进行调整,此处不做限制。在一个具体实施场景中,在得到第一处理结果以后,可以将第一处理结果对应的第一图像帧,以及之后的每一帧图像都作为参考图像帧,以此,实现后续的对图像帧的连续跟踪。
在一个实施场景中,第一处理结果为待配准图像与最终目标图像(本地目标图像或云端目标图像)之间的第一变换参数,第二处理结果为待跟踪图像与最终目标图像之间的第二变换参数。此时,基于第一处理结果(第一变换参数)得到的参考处理结果可以是参考图像帧与最终目标图像之间的参考变换参数,然后可以利用参考变换参数和待跟踪图像与参考图像帧之间的对应变换参数得到第二变换参数。
在一个实施场景中,第一处理结果为待配准图像的位姿,第二处理结果为待跟踪图像的位姿。此时,基于第一处理结果(待配准图像的位姿)得到的参考处理结果可以是参考图像帧的位姿(终端拍摄参考图像帧时的位姿),然后利用参考图像帧的位姿,待跟踪图像与参考图像帧之间的对应位姿变化量得到待跟踪图像的位姿。
在一个实施场景中,第一处理结果为第一变换参数,第二处理结果为待跟踪图像的位姿,此时,本申请的图像处理方法还包括利:利用第一变换参数,得到待配准图像的位姿。以此获得待配准图像的位姿,并最终得到待跟踪图像的位姿。
因此,通过将第二处理结果设置为不同的类型(第二变换参数或者是待跟踪图像的位姿),后续可以根据需要进行选择。
在一个公开实施例中,上述的利用本地目标图像对待配准图像进行第一图像配准,以得到本地处理结果的步骤由第一线程执行。
上述的基于参考图像帧的参考处理结果、待跟踪图像与参考图像帧中的图像信息,以得到待跟踪图像的第二处理结果的步骤、将待配准图像发送给云端的步骤、基于本地处理结果和云端处理结果中的至少一个,得到待配准图像的第一处理结果的步骤,以上至少一个步骤是由第二线程执行的。另外,第一线程和第二线程是异步处理的。第一线程和第二线程是异步处理的,即第一线程和第二线程可以不同步执行。在得到第一处理结果以后,可以持续得到第二处理结果,以此实现持续获得待跟踪图像的第二处理结果,实现图像配准和图像跟踪的异步处理。
一般而言,执行图像配准的步骤(“利用本地目标图像对待配准图像进行第一图像配准,以得到本地处理结果”或者是“将待配准图像发送给云端的步骤”),需要较长的时间(算法运行时间)才能得到结果,而进行图像跟踪相比于图像配准,所需时间较短,因此,通过将第一线程和第二线程是设置为异步处理,可以在进行图像配准的同时,还可以进行图像跟踪,无需等待图像配准的结果(第一处理结果),使得终端能够及时得到跟踪结果(第二处理结果),提高了终端的响应速度,降低了延迟。
当本申请的图像处理方法是在浏览器中执行,即在网页端中执行时,第一线程例如是工人(worker)线程。通过在网页端创建并利用worker线程,可以使得网页端能够执行多线程任务,提高了网页端运行本申请图像处理方法的运行速度。
在一个实施场景中,第一线程或者是第二线程的部分或全部执行步骤是由WebAssembly(WASN)编程语言实现。通过在网页端利用WASN编程语言来执行第一线程或者第二线程的部分或全部执行步骤,可以充分利用终端自身的算力,提高了设备的使用效率,并且可以提高整个图像处理方法的运行速度,降低延迟。
请参阅图5,图5是本申请图像处理方法第二实施例的流程示意图。在本实施例中,在执行上述的“在利用本地目标图像对待配准图像进行第一图像配准,以得到本地处理结果”之前,图像处理方法还包括利用第二线程执行以下步骤:
步骤S31:将第一线程进行初始化。
将第一线程进行初始化,可以是常规的线程初始化过程,此处不再赘述。通过初始化第一线程,后续可以利用第一线程执行本地图像配准(步骤S12)等步骤。
步骤S32:在第二线程得到待跟踪图像的第二处理结果之后,基于待跟踪图像的第二处理结果,对待跟踪图像进行渲染并显示。
基于待跟踪图像的第二处理结果,对待跟踪图像进行渲染并显示,具体是可以根据待跟踪图像的位姿,即根据终端拍摄待跟踪图像时的位姿,对待跟踪图像进行渲染并显示。可以理解的,若第二处理结果是待跟踪图像与最终目标图像之间的变换参数,则可以根据该变化参数得到终端的位姿;若第二处理结果是待跟踪图像的位姿,则直接根据待跟踪图像的位姿对待跟踪图像进行渲染并显示。
步骤S33:在第一线程得到待配准图像的第一处理结果且待配准图像未进行显示的情况下,基于待配准图像的第一处理结果,对待配准图像进行渲染并显示。
第一线程得到待配准图像的第一处理结果且待配准图像未进行显示的情况,意味着此时可以基于该第一处理结果来对待配准图像进行渲染并显示。可以理解的,若第一处理结果是待跟踪图像与目标图像之间的变换参数,则可以根据该变化参数得到终端的位姿;若第一处理结果是待配准图像的位姿,则直接根据待配准图像的位姿对待配准图像进行渲染并显示。
因此,通过利用第二线程对待跟踪图像进行渲染并显示,或者是利用第二线程对待配准图像进行渲染并显示,可以实现对图像帧的加工,实现与真实环境之间的交互。
请参阅图6,图6是本申请图像处理终端实施例的框架示意图。图像处理终端60包括图像获取模块61、本地配准模块62以及云端配准模块63和确定模块64。图像获取模块61用于获取待配准图像;本地配准模块62用于利用本地目标图像对待配准图像进行第一图像配准,以得到本地处理结果;以及云端配准模块63用于将待配准图像发送给云端,以使云端利用云端目标图像对待配准图像进行第二图像配准而得到云端处理结果;确定模块64用于基于本地处理结果和云端处理结果中的至少一个,得到待配准图像的第一处理结果。
其中,上述的本地配准模块62用于利用本地目标图像对待配准图像进行第一图像配准,以得到本地处理结果,包括:从第一目标图像集中查找出至少一个第一目标图像作为本地目标图像;利用本地配准方式,对待配准图像和本地目标图像进行配准,得到待配准图像和本地目标图像之间的本地变换参数;基于本地变换参数,得到本地处理结果;上述的云端处理结果是云端利用云端配准方式对待配准图像和云端目标图像进行配准得到的,云端目标图像来自于第二目标图像集。
其中,上述的第一目标图像集和第二目标图像集中至少存在部分图像相同;和/或,第一目标图像集中的图像数量小于第二目标图像集中的图像数量;和/或,本地配准方式所需的计算能力或计算时间小于云端配准方式所需的计算能力或计算时间。
其中,上述的本地配准模块62用于从第一目标图像集中查找出至少一个第一目标图像作为本地目标图像,包括:基于待配准图像和第一目标图像中特征点的特征表示,确定待配准图像与第一目标图像之间的特征相似度;选择特征相似度满足预设相似度要求的至少一个第一目标图像作为本地目标图像;上述的本地配准模块62用于利用本地配准方式,对待配准图像和本地目标图像进行配准,得到待配准图像和本地目标图像之间的本地变换参数,包括:基于待配准图像和本地目标图像中特征点的特征表示,确定待配准图像与本地目标图像之间的至少一组本地匹配点对;基于至少一组本地匹配点对,得到本地变换参数。
其中,上述的确定模块64用于基于本地处理结果和云端处理结果中的至少一个,得到待配准图像的第一处理结果,包括:响应于满足预设条件的情况,将云端处理结果作为待配准图像的第一处理结果;响应于不满足预设条件的情况,则将本地处理结果作为待配准图像的第一处理结果。
其中,上述的预设条件为在预设时间内接收到云端处理结果。
其中,上述的图像获取模块61用于获取待配准图像,包括:获取拍摄装置拍摄得到的图像帧,其中,图像帧包括第一图像帧和第二图像帧;将第一图像帧作为待配准图像。
其中,图像处理终端60还包括图像跟踪模块,图像跟踪模块用于将第二图像帧依序作为待跟踪图像,并基于参考图像帧的参考处理结果、待跟踪图像与参考图像帧中的图像信息,以得到待跟踪图像的第二处理结果,其中,参考图像帧为在待跟踪图像之前的图像帧,参考处理结果是基于第一处理结果确定。
其中,上述的利用本地目标图像对待配准图像进行第一图像配准,以得到本地处理结果的步骤由第一线程执行;基于参考图像帧的参考处理结果、待跟踪图像与参考图像帧中的图像信息,以得到待跟踪图像的第二处理结果的步骤、将待配准图像发送给云端的步骤、基于本地处理结果和云端处理结果中的至少一个,得到待配准图像的第一处理结果的步骤,以上至少一个步骤由第二线程执行;其中,第一线程和第二线程是异步处理的。
其中,上述的第一处理结果为待配准图像与最终目标图像之间的第一变换参数,最终目标图像为本地目标图像或云端目标图像,第二处理结果为待跟踪图像与参考图像帧之间的第二变换参数;或者,第一处理结果为待配准图像的位姿,第二处理结果为待跟踪图像的位姿;或者,第一处理结果为第一变换参数,第二处理结果为待跟踪图像的位姿,且方法还包括利用第二线程执行以下步骤:利用第一变换参数,得到待配准图像的位姿。
其中,在上述的本地配准模块62用于利用本地目标图像对待配准图像进行第一图像配准,以得到本地处理结果之前,本申请的图像处理方法还包括利用第二线程执行以下步骤:将第一线程进行初始化;和/或,方法还包括利用第二线程执行以下至少一个步骤:在第二线程得到待跟踪图像的第二处理结果之后,基于待跟踪图像的第二处理结果,对待跟踪图像进行渲染并显示;在第一线程得到待配准图像的第一处理结果且未显示待配准图像的情况下,基于待配准图像的第一处理结果,对待配准图像进行渲染并显示。
请参阅图7,图7是本申请电子设备一实施例的框架示意图。电子设备70包括相互耦接的存储器701和处理器702,处理器701用于执行存储器701中存储的程序指令,以实现上述任一图像处理方法实施例的步骤。在一个具体的实施场景中,电子设备70可以包括但不限于:微型计算机、服务器,此外,电子设备70还可以包括笔记本电脑、平板电脑等移动设备,在此不做限定。
具体而言,处理器702用于控制其自身以及存储器701以实现上述任一图像处理方法实施例的步骤。处理器702还可以称为CPU(Central Processing Unit,中央处理单元)。处理器702可能是一种集成电路芯片,具有信号的处理能力。处理器702还可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器702可以由集成电路芯片共同实现。
请参阅图8,图8是本申请计算机可读存储介质一实施例的框架示意图。计算机可读存储介质80存储有能够被处理器运行的程序指令801,程序指令801用于实现上述任一图像处理方法实施例的步骤。
上述方案,通过利用第一图像配准得到本地处理结果,或者是利用第二图像配准得到云端处理结果,可以使得终端既能够利用云端的计算能力,也能利用本地端的计算能力,使得终端在运行图像配准算法时,可以较快得到处理结果,或者得到较为准确的配准结果。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种遥感卫星影像的辐射校正方法及装置