CN107516327B - 基于多层滤波确定相机姿态矩阵的方法及装置、设备 - Google Patents

基于多层滤波确定相机姿态矩阵的方法及装置、设备 Download PDF

Info

Publication number
CN107516327B
CN107516327B CN201710719545.1A CN201710719545A CN107516327B CN 107516327 B CN107516327 B CN 107516327B CN 201710719545 A CN201710719545 A CN 201710719545A CN 107516327 B CN107516327 B CN 107516327B
Authority
CN
China
Prior art keywords
matrix
camera
camera pose
current frame
pose matrix
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710719545.1A
Other languages
English (en)
Other versions
CN107516327A (zh
Inventor
赵凌
孙星
贾琼
余宗桥
郭晓威
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Cloud Computing Beijing Co Ltd
Tencent Technology Shanghai Co Ltd
Original Assignee
Tencent Cloud Computing Beijing Co Ltd
Tencent Technology Shanghai Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Cloud Computing Beijing Co Ltd, Tencent Technology Shanghai Co Ltd filed Critical Tencent Cloud Computing Beijing Co Ltd
Priority to CN201710719545.1A priority Critical patent/CN107516327B/zh
Publication of CN107516327A publication Critical patent/CN107516327A/zh
Application granted granted Critical
Publication of CN107516327B publication Critical patent/CN107516327B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • G06T7/74Determining position or orientation of objects or cameras using feature-based methods involving reference images or patches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20004Adaptive image processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30244Camera pose

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Studio Devices (AREA)

Abstract

本发明实施例公开了一种基于多层滤波确定相机姿态矩阵的方法及装置、设备,其中,所述方法包括:根据相机采集的视频流中的相邻帧确定当前帧的相机姿态矩阵,根据所述当前帧的相机姿态矩阵确定所述相机的当前速率;从预设的滤波器集合中确定与所述当前速率对应的自适应滤波器;利用所述自适应滤波器对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵;输出所述插值后的相机姿态矩阵。

Description

基于多层滤波确定相机姿态矩阵的方法及装置、设备
技术领域
本发明涉及增强现实(AR,Augmented Reality)技术,尤其涉及一种基于多层滤波确定相机姿态矩阵的方法及装置、设备。
背景技术
AR技术是一种将真实世界信息和虚拟世界信息“无缝”集成的新技术,它是通过计算机系统提供的信息增加用户对现实世界感知的技术,将虚拟的信息应用到真实世界,并将计算机生成的虚拟对象例如虚拟物体、场景或系统提示信息叠加到真实场景中,从而实现对现实的增强。更通俗一点的说法是,它是一种全新的人机交互技术,利用摄像头、传感器,实时计算和匹配技术,将真实的环境和虚拟的物体实时地叠加到同一个画面或空间而同时存在。用户可以通过虚拟现实系统感受到在客观物理世界中所经历的“身临其境”的逼真性,还能突破空间、时间以及其它客观限制,感受到在真实世界中无法亲身经历的体验。
AR从其技术手段和表现形式上,可以明确分为大约两类,一类是基于地理位置信息的AR(LBS based AR),另一类是基于计算机视觉的AR(Vision based AR),其中基于计算机视觉的AR从技术实现手段上可以分为两类:一类是基于标记的AR(Marker-Based AR),另一类是更少依赖标记的AR(Marker-Less AR)。
无论是哪一类型的AR,在实现过程中都需要对用到相机的姿态,从而稳定追踪相机是AR实现必不可少的过程。目前现有技术中大多数方案中无滤波器而直接相机姿态输出;有些方案有滤波器,但仍为单一滤波器,即无法自适应判断采用何种滤波器。无滤波器系统的缺点是不考虑历史帧数据,在相邻帧之间,存在相机矩阵不稳定的缺点。单一滤波器存在缺点:只具备某单一功能,如具备快速跟踪功能,则不具备稳定性功能;具备稳定性功能,则不具备快速跟踪功能。
发明内容
有鉴于此,本发明实施例为解决现有技术中存在的至少一个问题而提供一种基于多层滤波确定相机姿态矩阵的方法及装置、设备。
本发明实施例的技术方案是这样实现的:
本实施例还提供一种基于多层滤波确定相机姿态矩阵的方法,所述方法包括:
根据相机采集的视频流中的相邻帧确定当前帧的相机姿态矩阵,根据所述当前帧的相机姿态矩阵确定所述相机的当前速率;
从预设的滤波器集合中确定与所述当前速率对应的自适应滤波器;
利用所述自适应滤波器对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵;
输出所述插值后的相机姿态矩阵。
本实施例还提供一种基于多层滤波确定相机姿态矩阵的装置,所述装置包括:
第一确定单元,用于根据相机采集的视频流中的相邻帧确定当前帧的相机姿态矩阵;
第二确定单元,用于根据所述当前帧的相机姿态矩阵确定所述相机的当前速率;
第三确定单元,用于从预设的滤波器集合中确定与所述当前速率对应的自适应滤波器;
差值单元,用于利用所述自适应滤波器对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵;
输出单元,用于输出所述插值后的相机姿态矩阵。
本实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现前述的基于多层滤波确定相机姿态矩阵的方法中的步骤。
本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现前述的基于多层滤波确定相机姿态矩阵的方法中的步骤。
本发明实施例提供的基于多层滤波确定相机姿态矩阵的方法及装置、设备,其中,根据相机采集的视频流中的相邻帧确定当前帧的相机姿态矩阵,根据所述当前帧的相机姿态矩阵确定所述相机的当前速率;从预设的滤波器集合中确定与所述当前速率对应的自适应滤波器;利用所述自适应滤波器对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵;输出所述插值后的相机姿态矩阵;如此,能够基于自适应的多层滤波实现对相机的稳定快速追踪,从而更好地实现AR技术。
附图说明
图1-1为本发明实施例基于多层滤波确定相机姿态矩阵的方法的实现流程示意图;
图1-2为本发明实施例的场景示意图一;
图1-3为本发明实施例的场景示意图二;
图1-4为本发明实施例的场景示意图三;
图1-5为本发明实施例的场景示意图四;
图1-6为本发明实施例的场景示意图五;
图2-1为本发明实施例坐标变换的示意图;
图2-2为本发明实施例的场景示意图;
图3-1为本发明实施例根据相机姿态矩阵计算相机运动幅度的方法流程示意图;
图3-2为本发明实施例计算相机运动速率的方法流程示意图;
图3-3为本发明实施例插值后的相机姿态矩阵的的方法流程示意图;
图4为本发明实施例基于多层滤波确定相机姿态矩阵的装置的组成结构示意图;
图5为本发明实施例中计算设备的一种硬件实体示意图。
具体实施方式
先介绍一下AR技术,AR技术从其技术手段和表现形式上,可以明确分为大约两类,一类是基于地理位置信息的AR(LBS based AR),另一类是基于计算机视觉的AR(Visionbased AR),其中:
1)基于地理位置信息的AR的基本原理是通过GPS获取用户的地理位置,然后从某些数据源(比如维基(wiki)或谷歌(google))等处获取该位置附近物体(如周围的餐馆、银行、学校等)的信息点(POI,Point of Interest),其中每个POI包含名称、类别、经度纬度、附近的酒店饭店商铺等四方面信息,再通过移动设备的GPS和加速度传感器获取用户手持设备的方向和倾斜角度,通过这些信息建立目标物体在现实场景中的平面基准(相当于marker),之后坐标变换显示等的原理与Marker-Based AR类似。这种AR技术利用设备的GPS功能及传感器来实现,摆脱了应用对Marker的依赖,用户体验方面要比Marker-Based AR更好,而且由于不用实时识别Marker姿态和计算特征点,性能方面也好于Marker-Based AR和Marker-Less AR,因此对比Marker-Based AR和Marker-Less AR,LBS-Based AR可以更好的应用到移动设备上。
2)基于计算机视觉的AR是利用计算机视觉方法建立现实世界与屏幕之间的映射关系,使想要绘制的图形或是3D模型可以如同依附在现实物体上一般展现在屏幕上。本质上来讲,基于计算机视觉的AR就是要找到现实场景中的一个依附平面,然后再将这个3维场景下的平面映射到2维屏幕上,然后再在这个平面上绘制用户想要展现的图形,从技术实现手段上可以分为两类:一类是基于标记的AR(Marker-Based AR),另一类是更少依赖标记的AR(Marker-Less AR),其中:
Marker-Based AR这种实现方法需要一个事先制作好的Marker,例如:绘制着一定规格形状的模板卡片或者二维码)然后把Marker放到现实中的一个位置上,相当于确定了一个现实场景中的平面,然后通过摄像头对Marker进行识别和姿态评估(PoseEstimation),并确定其位置,然后将该Marker中心为原点的坐标系称为MarkerCoordinates即模板坐标系,要做的事情实际上是要得到一个变换从而使模板坐标系和屏幕坐标系建立映射关系,这样根据这个变换在屏幕上画出的图形就可以达到该图形依附在Marker上的效果,理解其原理需要一点3D射影几何的知识,从模板坐标系变换到真实的屏幕坐标系需要先旋转平移到摄像机坐标系(Camera Coordinates)然后再从摄像机坐标系映射到屏幕坐标系,其实由于硬件误差这中间还需要理想屏幕坐标系到实际屏幕坐标系的转换。
Marker-Less AR的基本原理与Marker based AR相同,不过它可以用任何具有足够特征点的物体(例如:书的封面)作为平面基准,而不需要事先制作特殊的模板,摆脱了模板对AR应用的束缚。它的原理是通过一系列算法(如:加速鲁棒特征(SURF,Speeded-UpRobust Features)、定向的BRIEF算法(ORB,ORiented Brief)、基于二进制的鲁棒性独立基本特征(BRIEF,binary robust independent elementary features)算法等)对模板物体提取特征点,并记录或者学习这些特征点。当摄像头扫描周围场景,会提取周围场景的特征点并与记录的模板物体的特征点进行比对,如果扫描到的特征点和模板特征点匹配数量超过阈值,则认为扫描到该模板,然后根据对应的特征点坐标估计Tm矩阵,之后再根据Tm进行图形绘制(方法与Marker-Based AR类似)。
本发明实施例中,采用手机摄像头作为数据采集设备,输入实时的视频流,计算出相机姿态矩阵;通过连续相邻帧的相机姿态矩阵,判断相机运动速率,得到一个对应于当前相机运动速率的浮点值,并与预先设置的一系列阈值进行比较,估计出一个速率区间;每个速率区间和相应的一个滤波器预先进行了绑定,因此,可在估计出速率区间后,自适应地采用某一个滤波器;滤波器将当前帧与上一帧计算得到的相机矩阵进行插值融合,得到一个更加稳定的相机矩阵,作为相机当前的姿态进行输出;绘制虚拟对象时,采用上述相机姿态,可绘制得到固定于视频中的Marker更加稳定的虚拟对象。
下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。
本发明实施例提供一种基于多层滤波确定相机姿态矩阵的方法,应用于计算设备,该方法所实现的功能可以通过计算设备中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该计算设备至少包括处理器和存储介质。
图1-1为本发明实施例为基于多层滤波确定相机姿态矩阵的方法的实现流程示意图,如图1-1所示,该方法包括:
步骤S101,根据相机采集的视频流中的相邻帧确定当前帧的相机姿态矩阵,根据所述当前帧的相机姿态矩阵确定所述相机的当前速率;
这里,如图1-2所示,用户15佩戴AR设备16看到的实体场景,该实体场景包括两面墙11和12,以及地面14,其中,地面14上有一个实物17,当用户15处于第一位姿(位置姿态)时相机对应第一相机姿态矩阵。如图1-3所示,当用户15处于第二位姿时看到的实体场景包括三面墙11至13和地面14,其中,地面14上有两个实物17和18,当用户15处于第二位姿时,相机对应第二相机姿态矩阵。如图1-5所示,当用户15处于第三位姿时看到的实体场景包括两面墙12至13以及地面14,其中,地面14上有两个实物18,当用户15处于第三位姿时相机对应第三相机姿态矩阵。由此可见,用户处于不同的位姿时,相机会对应不同的相机姿态矩阵。需要说明的是,用户在第一位姿时对应图1-2所示的第一空间区域,用户在第二位姿时对应图1-3所示的第二空间区域。一般来说,用户处于不同的位姿时,看到的空间区域并非完全相同,例如,图1-2和图1-3所对应的空间区域为图1-4所示的空间区域的部分或全部,三面墙11至13和地面14,其中,地面14上有两个实物17和18,图1-2所示的第一空间区域是图1-4所示的空间区域部分,图1-3所示的第二空间区域与图1-4所示的空间区域相同。由于用户处于不同的位姿时,看到的空间区域并非完全相同,这样,相机所采集的视频流也就不一样,相邻帧也就不一样,所以,计算出来的相机姿态矩阵也不一样。
这里,所述根据所述相机姿态矩阵确定所述相机的当前速率,包括:获取所述相机的历史帧集合中每一历史帧的图像姿态矩阵,从所述历史帧的图像姿态矩阵中提取之前图像帧的平移量;从所述当前帧的图像姿态矩阵中提取当前帧的平移量;将所述当前帧的平移量减去每一所述历史帧的平移量,得到对应的平移量差值;根据所述平移量差值和预设的对应权重进行加权求和;将得到的加权值作为确定所述相机的当前速率。
步骤S102,从预设的滤波器集合中确定与所述当前速率对应的自适应滤波器;
这里,所述从预设的滤波器集合中确定与所述当前速率对应的自适应滤波器,包括:根据所述相机的当前速率查询预设关联信息,得到与所述当前速率对应的自适应滤波器的标识,所述关联信息用于表征所述当前速率与所述滤波器集合中滤波器的标识之间的对应关系。
步骤S103,利用所述自适应滤波器对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵;
步骤S104,输出所述插值后的相机姿态矩阵。
在其他的实施例中,所述方法还包括:
步骤S105,利用所述插值后的相机姿态矩阵和预设的绘制参数在所述当前帧中绘制虚拟对象,并输出绘制后的当前帧。
这里,所述绘制参数是根据待绘制的虚拟对象而预先设置的参数,例如预先绘制的虚拟对象为蝴蝶,那么绘制参数是关于如何绘制蝴蝶的,例如蝴蝶的颜色、大小,以及蝴蝶出现在哪个空间方位;因此,绘制参数至少包括待绘制的虚拟对象的属性参数和预设的方位参数,其中方位参数用于指定蝴蝶出现在哪个空间方位。在实施的过程中,用户还可以指定待绘制的虚拟对象,例如虚拟对象的列表或图像可以输出给用户(例如显示给用户),然后用户通过选择,指定待绘制的虚拟对象,例如待绘制的虚拟对象包括蝴蝶、机器人、小狗、动漫形象如樱桃小丸子等,如果用户选择机器人,则计算设备根据用户的选择操作获取待绘制的虚拟对象的标识,例如机器人的标识,根据待绘制的虚拟对象的标识获取绘制参数,其中可以从本地获取待绘制的虚拟对象的绘制参数,也可以向自身所属的服务器请求绘制参数。绘制完成后,将绘制后的当前帧输出给用户,例如显示在显示屏上。如图1-6所示的A图所示,实际上的当前帧61包括远处的山、近处的草坪和草坪上的树木;而绘制后的当前帧实在当前帧61的基础上增加了虚拟对象60。
在其他的实施例中,所述利用所述自适应滤波器对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵,包括:
步骤S11,获取所述自适应滤波器的滤波器插值参数;
步骤S12,获取所述当前帧相邻的上一帧的相机姿态矩阵和所述当前帧的相机姿态矩阵;
步骤S13,根据所述上一帧的相机姿态矩阵、所述当前帧的相机姿态矩阵和所述滤波器插值参数对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵。
这里,所述根据所述上一帧的相机姿态矩阵、所述当前帧的相机姿态矩阵和所述滤波器插值参数对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵,包括:根据第一旋转矩阵、第二旋转矩阵和所述滤波器插值参数对所述第二旋转矩阵进行插值,得到插值后的相机姿态矩阵,其中所述第一旋转矩阵为上一帧的相机姿态矩阵中的旋转矩阵,所述第二旋转矩阵为当前帧的相机姿态矩阵中的中的旋转矩阵;根据第一平移向量、第二平移向量和所述滤波器插值参数对所述第二平移向量进行插值,得到插值后的平移向量;根据所述插值后的相机姿态矩阵和所述插值后的平移向量进行计算,得到插值后的相机姿态矩阵。
这里,所述根据第一旋转矩阵、第二旋转矩阵和所述滤波器插值参数对所述第二旋转矩阵进行插值,得到插值后的相机姿态矩阵,包括:
将所述第一旋转矩阵转换为单位四元数形式,得到第一单位四元数;
将所述第二旋转矩阵转换为单位四元数形式,得到第二单位四元数;
根据所述第一单位四元数、所述第二单位四元数和所述滤波器插值参数对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵。
这里,所述根据所述第一单位四元数、所述第二单位四元数和所述滤波器插值参数对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵,包括:
根据所述第一单位四元数、所述第二单位四元数和所述滤波器插值参数计算上一帧的球面插值参数和当前帧的球面插值参数;
根据所述第一单位四元数、所述第二单位四元数、所述上一帧的球面插值参数和所述当前帧的球面插值参数计算,得到插值后的当前帧的四元数;
将插值后的当前帧的四元数采用矩阵来表示,得到插值后的相机姿态矩阵。
上述本实施例中都需要用到相机姿态矩阵,下面提供一种根据相机采集的相邻帧计算相机姿态矩阵的方法,该方法包括离线部分和在先部分,其中:
离线部分包括:获取大量相机采集的离线图像,然后将这些离线图像作为离线图像集合,然后将离线图像集合中的离线图像分别输入到图像特征模型中,然后从图像特征模型得到该离线图像对应的图像特征。其中,图像特征模型用于提取图像特征,并输出提取出的图像特征;在实现的过程中,可以采用各种图像特征提取模型例如marker。为了便于比较,将离线部分生成的相机姿态矩阵成为离线的相机姿态矩阵。
在线部分包括:相机在AR技术中采集到一帧在线图像,同样地将该在线图像输入到图像特征模型中,然后从图像特征模型中得到在线图像的图像特征,然后将在线图像的图像特征与离线图像的图像特征进行匹配,得到在线图像上的像素点和离线图像上的像素点之间对应关系,然后根据该对应关系获取点对的坐标值,根据这些坐标值建立方程组,其中可以按照最小二乘法建立方程组,该方程组中已知数为坐标值,未知数为相机姿态矩阵(Tm矩阵)中的矩阵元素。其中,点对包括两个像素点,例如第一像素点和第二像素点为点对,假设第一像素点为在线图像上的像素点,那么第二像素点为在离线图像上的与第一像素点对应的像素点。
例如,离线图像集合中有100张离线图像,那么在线图像和100张离线图像进行匹配,得到一张匹配的离线图像,针对这张匹配的离线图像,即某个Marker,提取100个特征点,那么在线图像提取出的特征点与这匹配的离线图像的100个特征点进行匹配,假设匹配成功的点有80个,则得到80个点对,每个点对通过相机姿态矩阵建立一个方程,会得到80个方程,每个方程的未知量均为相机姿态矩阵,通过最小二乘求解得到相机姿态矩阵。需要说明的是,离线图像集合可以看作是离线图像库,一般来说,离线图像库是个数量比较庞大的库,以便保证在线图像都能从离线图像库中匹配出一张离线图像,匹配出的离线图像用于计算相机姿态矩阵。
下面介绍一下矩阵变换,在实际的编码中,所有这些变换都是一个矩阵,在线性代数中矩阵代表一个变换,对坐标进行矩阵左乘便是一个线性变换(对于平移这种非线性变换,可以采用齐次坐标来进行矩阵运算)。其中,公式参见图2-1所示,矩阵C的学名叫摄像机内参矩阵212,矩阵Tm叫摄像机外参矩阵213,其中内参矩阵212是需要事先进行摄像机标定得到的,而外参矩阵213是未知的,需要根据屏幕坐标(xc,yc)和事先定义好的Marker坐标系214和内参矩阵212来估计矩阵Tm,然后绘制图形的时候根据矩阵Tm来绘制(初始估计的Tm不够精确,还需要使用非线性最小二乘进行迭代寻优),比如使用OpenGL绘制的时候就要在GL_MODELVIEW的模式下加载Tm矩阵来进行图形显示。
需要说明的是,矩阵Tm即为相机姿态矩阵,其中,作为摄像机外参矩阵213的相机姿态矩阵包括两部分,第一部分是矩阵R即矩阵216,第二部分是向量217,其中矩阵216被称为旋转矩阵,向量217被称为平移向量。
本方法主要应用于AR软件系统所使用的场景中,如前所述,在AR技术中需要用到相机姿态,在实现的过程中相机姿态以矩阵的形式来体现,即称为相机姿态矩阵。比如基于NFT Marker的AR应用(App),在追踪NFT Marker时计算出相机姿态矩阵,通过滤波器得到稳定的相机姿态,使得叠加到相机视频上的虚拟对象绘制地更加稳定。
本申请人发现:追踪不稳定本质上是算法估计出的相机姿态数值抖动比较大,具体来讲,是估计出的相机旋转与平移这两种变换(相对于Marker)在连续帧之间抖动较大。理论上,对任何值都可以差值,差值是为了增加光滑性,取平均也是一种差值;用在不同场景对应有不同功能。本实施例中增加的滤波器的作用则是在视频帧输入时,不仅考虑当前帧图像还考虑上一帧图像,即根据当前帧图像和上一帧图像计算得到相机姿态矩阵,然后对当前帧图像与上一帧图像估计出的相机姿态矩阵进行插值,进而更新当前帧的相机姿态矩阵。这样计算得到的相机姿态矩阵用于绘制虚拟对象,在手机晃动时就具备了增强追踪稳定性的能力。例如图2-2所示,手机晃动时采集到的当前帧62如2-2的A图所示,A图当前帧62的所有对象都失真了,例如远处的山623、近处的草坪621和草坪上的树木622都已经失真。采用插值后的相机姿态矩阵采集到的当前帧61如2-2的B图所示,当前帧61包括远处的山613、近处的草坪611和草坪上的树木612都被还原,从而增强追踪稳定性的能力。
稳定性是保持相机原有姿态的一种性质,即不因相机略微晃动而出现频繁的数值抖动的性质,类似与物理中的惯性概念;因而,与之相对的另一个追踪属性便是实时性,即相机改变原有姿态,以适应新姿态的即时性。本实施例中,波器原理可通过设置不同的插值系数,分别实现稳定性和即时性这两种效果,但若仅使用单一滤波器,则同一时刻只能使用一组插值系数,只能取得两者之一的效果,顾此失彼;因此,本实施例引入了多滤波器,根据相机在最近一段时间内运动的速度,设置阈值自动判断需要接入稳定滤波器还是即时滤波器,实现了自适应滤波器切换机制;在相机接近平稳时采用稳定滤波器(可以有略微晃动);在相机快速运动时,自动切换到即时滤波器,使得计算得到的相机姿态适配相机的运动。
通过设置阈值加入了2个滤波器,但是需要说明的是,本领域的技术人员应当理解,本实施例可以通过设置多个阈值加入更多滤波器,从而使得相机的“稳定性”适用于更多场景。新加入的滤波器插值系数可介于上述两者滤波器之间,作为过渡性质的滤波器。添加滤波器越多,用户就越不容易觉察到追踪效果的滞后,带来更好的用户体验。
下面提供一种根据相机姿态矩阵计算相机运动幅度的方法,如图3-1所示,该方法包括:
步骤S301,将当前相机预估的相机姿态矩阵更新到相机姿态缓存数组,即刷新数组数据,仅保留相机姿态的最近若干帧数据;
这里,相机姿态缓存数组用于存储相机姿态矩阵;
步骤S302,遍历相机姿态缓存数组;
步骤S303,将相机当前帧的平移量减去每一历史帧的平移量,得到对应平移量差值;
这里,假设当前帧的平移量为e,历史帧有三帧,这三帧的平移量分别为e1、e2和e3,然后将相机当前帧的平移量减去每一历史帧的平移量,得到对应平移量差值△1、△2和△3,其中,△1为e与e1之差,△2为e与e2之差,△3为e与e3之差。
步骤S304,将历史帧的平移量到当前帧的平移量之间的平移量差值进行加权求和;
这里,在实现过程中,可以按照时间对权重进行设置,例如时间越久,权重越小;反之,权重越大。这种设置权重的方法被称为按照时间进行权重,比如共有10帧,权重分别是1/10、1/9、1/8…这样,即离当前帧越近的帧,权重越大,表示对当前帧影响越大,然后权重再归一化;加权求和后,即得到平移幅度的一个度量值。本实施例中可以采用按时间进行权重,也可以采用均值权重。以按时间进行权重为例进行说明,比如前面的历史帧有3帧,假设历史帧1是当前帧相邻的上一帧,历史帧2是当前帧相邻的上一帧的上一帧(即上两帧),历史帧3是当前帧相邻的上一帧的上一帧的上一帧(即上三帧),历史帧1的权重可以设置为1/2,历史2的权重可以设置为1/3,历史3的权重可以设置为1/6。那么加权求和值即为:1/2×△1+1/3×△2+1/6×△3
步骤S305,将加权求和值作为相机运动幅度的估计。
下面提供一种计算相机运动速率的方法,如图3-2所示,该方法包括:
步骤S311,根据相机姿态矩阵计算相机运动幅度;
这里,该步骤S311按照图3-1所示的流程计算得到相机运动幅度。
步骤S312,确定运动幅度属于哪一阈值区间;
这里,将计算的运动幅度与预设的阈值区间进行对比,得到相机运动幅度所属的阈值区间。假设将相机运动幅度分为N个阈值区间,N为大于等于2的自然数,这N个阈值区间一一对应有一个滤波器,即滤波器集合中也有N个滤波器。
步骤S313,自动选择相应阈值区间的滤波器;
这里,根据确定的阈值区间选择相应的滤波器,在实现的过程中,根据确定的阈值区间查询预设的关联信息,得到对应的滤波器(自适应滤波器)。其中,关联信息用于表征不同的滤波器与阈值区间之间的对应关系。关联信息在实现的过程中可以为映射列表。
步骤S314,利用选择的滤波器和上一帧图像进行滤波插值。
这里,利用所述自适应滤波器对所述相机姿态矩阵进行插值,得到插值后的相机姿态矩阵;输出所述插值后的相机姿态矩阵。
下面介绍一下本实施例所涉及到的公式:
滤波器的插值融合原理可以采用下面的一系列公式来表示:
1)计算滤波器插值参数theta的公式参见公式(1):
theta=1.0/(1.0+r1/r2)   (1);
公式(1)中,r1和r2为用户输入参数。
2)将插值参数theta转换为上一帧的球面插值参数s0的公式参见公式(2):
s0=sin(oneminustheta*angle)/sinangle   (2);
其中,oneminustheta=1-theta,angle=acos(dot(q0,q1)),即dot表示点积运算,q0表示上一帧的单位四元数,q1表示当前帧的单位四元数,即angle表示上一帧和当前帧单位四元数的点积的反余弦,sinangle=sin(angle)。
3)将插值参数theta转换为当前帧的球面插值参数s1的公式参见公式(3):
s1=sin(theta*angle)/sinangle   (3);
其中,angle,sinangle=sin(angle),angle=acos(dot(q0,q1)),即dot表示点积运算,q0表示上一帧的单位四元数,q1表示当前帧的单位四元数,即angle表示上一帧和当前帧单位四元数的点积的反余弦。
4)插值过程包括线性插值和球面插值,其中,线性插值过程得到插值后的当起早呢和你的平移向量,球面插值过程得到插值后的当前帧的四元数,其中,按照下面的公式(4)插值后的当前帧的四元数q,按照下面的公式(5)插值后的当前帧的平移向量t:
q=q0*s0+q1*s1   (4);
t=t0*oneminustheta+t1*theta   (5);
其中,t0表示上一帧的平移向量,t1表示当前帧的平移向量。
下面介绍本实施例中得到插值后的旋转矩阵的过程,该过程参见图3-3的方框S320中的流程所示,该流程包括:
步骤S321,获取相机的当前帧的相机姿态矩阵;
步骤S322,将当前帧的相机姿态矩阵采用单位四元数来表示,得到当前帧的单位四元数;
这里,简单介绍一个四元数,在计算机图形学的学习中,几何变换(Transformations)是重要的内容,一般使用齐次坐标(Homogeneous coordinates)描述点和向量,使用变换矩阵描述平移、旋转等变换。而在平移、旋转、缩放这几种变换中,又以旋转的情况最为复杂。实际上,计算机图形学中三维空间的旋转不仅仅有旋转矩阵一种表达形式,还有四元数(Quaternions)表达形式。简单来说,四元数是旋转矩阵的另一种表示方法,转换了一下数值表示形式,这样更容易进行插值。
步骤S323,获取相机的上一帧的相机姿态矩阵;
步骤S324,将上一帧的相机姿态矩阵采用单位四元数来表示,得到上一帧的单位四元数;
步骤S325,获取滤波器插值参数theta;
其中,滤波器插值参数theta按照下面的公式(1)进行计算:
theta=1.0/(1.0+r1/r2)   (1);
公式(1)中,r1和r2为用户输入参数。
步骤S326,根据滤波器插值参数theta、上一帧的单位四元数和当前帧的单位四元数计算得到上一帧的球面插值参数s0和当前帧的球面插值参数s1
这里,将插值参数theta转换为上一帧的球面插值参数s0的公式参见公式(2):
s0=sin(oneminustheta*angle)/sinangle   (2);
其中,oneminustheta=1-theta,angle=acos(dot(q0,q1)),即dot表示点积运算,q0表示上一帧的单位四元数,q1表示当前帧的单位四元数,即angle表示上一帧和当前帧单位四元数的点积的反余弦,sinangle=sin(angle)。
这里,将插值参数theta转换为当前帧的球面插值参数s1的公式参见公式(3):
s1=sin(theta*angle)/sinangle   (3);
其中,angle,sinangle=sin(angle),angle=acos(dot(q0,q1)),即dot表示点积运算,q0表示上一帧的单位四元数,q1表示当前帧的单位四元数,即angle表示上一帧和当前帧单位四元数的点积的反余弦。
步骤S327,根据上一帧的球面插值参数s0、上一帧的四元数、当前帧的球面插值参数s1和当前帧的四元数计算得到插值后的当前帧的四元数;
这里,按照公式(4)计算得到插值后的当前帧的四元数;
q1=q0*s0+q1*s1   (4);
步骤S328,将插值后的当前帧的四元数采用矩阵来表示,得到插值后的旋转矩阵。
本实施例中采用四元数(Quaternions)来处理旋转的插值,能够提高计算效率,从而实现对相机的稳定快速追踪,进而更好地实现AR技术准确性。一般来说,三角度系统(three-angle system)无法很好地处理旋转的插值,下面介绍四元数(Quaternions)以及如何利用四元数描述旋转。四元数是是复数的推广,可以说是“三维的复数”,其中模为1的四元数称为单位四元数(Unit quaternions)。如果把单位四元数表示为:q=(n·sinθ2,cosθ2)的形式,那么该单位四元数可以表示绕轴n进行θ角的旋转。
一般来说,四元数描述旋转需要的存储空间很小,更为关键的是可以使用被称为球面线性插值(Slerp Algorithm)的方法对四元数进行插值运算,从而解决了平滑旋转的插值问题。在OpenGL或者DirectX中,通常使用模型视图矩阵来进行几何变换,当希望实现光滑旋转、对旋转进行插值时,就可以利用四元数这一工具。处理过程为:1)将模型视图矩阵转换为四元数;2)使用四元数进行运算;3)采用四元数计算模型视图矩阵。
下面介绍本实施例中得到插值后的旋转矩阵的过程,该过程参见图3-3的方框S330中的流程所示,该流程包括:
步骤S331,获取相机的当前帧的平移向量;
步骤S332,获取相机的上一帧的平移向量;
步骤S333,获取滤波器插值参数;
其中,滤波器插值参数theta按照下面的公式(1)进行计算:
theta=1.0/(1.0+r1/r2)   (1);
公式(1)中,r1和r2为用户输入参数。
步骤S334,根据当前帧的平移向量t1、上一帧的平移向量t0和滤波器插值参数theta计算得到当前帧的平移向量t;
按照下面的公式(5)插值后的当前帧的平移向量t:
t=t0*oneminustheta+t1*theta   (5);
其中,t0表示上一帧的平移向量,t1表示当前帧的平移向量,oneminustheta表示oneminustheta=1-theta。
本实施例最终得到插值后的相机姿态矩阵的过程参见图3-3,即:根据图3-3的流程S320得到插值后的旋转矩阵,根据图3-3的流程S330得到的插值后的平移向量;之后,根据图3-3的流程S340计算得到插值后的相机姿态矩阵。
本实施例提供的技术方案达到的效果包括:1)自动估计当前相机运动速度:通过相机相邻多帧计算得到的相机姿态矩阵,估计相机在某一个时间段内的运动速率。2)多滤波器方案能够兼顾不同的应用场景:通过估计速度自动选择相应滤波器,因此可适用于相机快速移动的场景,也可适用于相机较为稳定的场景。3)自适应地选取正确的滤波器。通过估计得到的相机运动速率,判断当前相机属于的速率区间,并采用相应的滤波器,进行相机姿态融合,输出更加适应当前场景的相机姿态。
基于前述的实施例,本发明实施例提供一种基于多层滤波确定相机姿态矩阵的装置,该装置所包括的各单元以及各单元所包括的各模块,都可以通过计算设备中的处理器来实现,当然也可通过逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等。
图4为本发明实施例基于多层滤波确定相机姿态矩阵的装置的组成结构示意图,如图4所示,该装置400包括:
第一确定单元401,用于根据相机采集的视频流中的相邻帧确定当前帧的相机姿态矩阵;
第二确定单元402,用于根据所述当前帧的相机姿态矩阵确定所述相机的当前速率;
第三确定单元403,用于从预设的滤波器集合中确定与所述当前速率对应的自适应滤波器;
差值单元404,用于利用所述自适应滤波器对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵;
输出单元405,用于输出所述插值后的相机姿态矩阵。
在其他的实施例中,所述差值单元包括:
第一获取模块,用于获取所述自适应滤波器的滤波器插值参数;
第二获取模块,用于获取所述当前帧相邻的上一帧的相机姿态矩阵和所述当前帧的相机姿态矩阵;
差值模块,用于根据所述上一帧的相机姿态矩阵、所述当前帧的相机姿态矩阵和所述滤波器插值参数对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵。
在其他的实施例中,所述差值模块包括:
第一差值子模块,用于根据第一旋转矩阵、第二旋转矩阵和所述滤波器插值参数对所述第二旋转矩阵进行插值,得到插值后的相机姿态矩阵,其中所述第一旋转矩阵为上一帧的相机姿态矩阵中的旋转矩阵,所述第二旋转矩阵为当前帧的相机姿态矩阵中的中的旋转矩阵;
第二差值子模块,用于根据第一平移向量、第二平移向量和所述滤波器插值参数对所述第二平移向量进行插值,得到插值后的平移向量;
计算子模块,用于根据所述插值后的相机姿态矩阵和所述插值后的平移向量进行计算,得到插值后的相机姿态矩阵。
在其他的实施例中,所述第一差值子模块,用于:将所述第一旋转矩阵转换为单位四元数形式,得到第一单位四元数;将所述第二旋转矩阵转换为单位四元数形式,得到第二单位四元数;根据所述第一单位四元数、所述第二单位四元数和所述滤波器插值参数对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵。
在其他的实施例中,所述第一差值子模块中的根据所述第一单位四元数、所述第二单位四元数和所述滤波器插值参数对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵,包括:根据所述第一单位四元数、所述第二单位四元数和所述滤波器插值参数计算上一帧的球面插值参数和当前帧的球面插值参数;根据所述第一单位四元数、所述第二单位四元数、所述上一帧的球面插值参数和所述当前帧的球面插值参数计算,得到插值后的当前帧的四元数;将插值后的当前帧的四元数采用矩阵来表示,得到插值后的相机姿态矩阵。
在其他的实施例中,所述第二确定单元包括:
第三获取模块,用于获取所述相机的历史帧集合中每一历史帧的图像姿态矩阵,从所述历史帧的图像姿态矩阵中提取之前图像帧的平移量;
提取模块,用于从所述当前帧的图像姿态矩阵中提取当前帧的平移量;
计算模块,用于将所述当前帧的平移量减去每一所述历史帧的平移量,得到对应的平移量差值;
求和模块,用于根据所述平移量差值和预设的对应权重进行加权求和;
确定模块,用于将得到的加权值作为确定所述相机的当前速率。
在其他的实施例中,所述第三确定单元,用于:
根据所述相机的当前速率查询预设关联信息,得到与所述当前速率对应的自适应滤波器的标识,所述关联信息用于表征所述当前速率与所述滤波器集合中滤波器的标识之间的对应关系。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明装置实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。
需要说明的是,本发明实施例中,如果以软件功能模块的形式实现上述的基于多层滤波确定相机姿态矩阵的方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。
对应地,本发明实施例提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时上述的基于多层滤波确定相机姿态矩阵的方法中的步骤。
对应地,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的基于多层滤波确定相机姿态矩阵的方法中的步骤。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明装置实施例中未披露的技术细节,请参照本发明存储介质和设备实施例的描述而理解。
需要说明的是,为基于多层滤波确定相机姿态矩阵的设备可以采用如计算机、服务器等计算设备实现,图5为本发明实施例中计算设备的一种硬件实体示意图,该计算设备500的硬件实体包括:处理器501、通信接口502和存储器503,其中
处理器501通常控制计算设备500的总体操作。
通信接口502可以使计算设备通过网络与其他终端或服务器通信。
存储器503配置为存储由处理器501可执行的指令和应用,还可以缓存待处理器501以及计算设备500中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (11)

1.一种基于多层滤波确定相机姿态矩阵的方法,其特征在于,所述方法包括:
根据相机采集的视频流中的相邻帧图像确定当前帧图像的相机姿态矩阵,根据所述当前帧的相机姿态矩阵确定所述相机的当前速率;
从预设的滤波器集合中确定与所述当前速率对应的自适应滤波器;
利用所述自适应滤波器对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵;
输出所述插值后的相机姿态矩阵;
所述根据所述当前帧的相机姿态矩阵确定所述相机的当前速率,包括:获取所述相机的历史帧集合中每一历史帧的图像姿态矩阵,从所述历史帧的图像姿态矩阵中提取之前图像帧的平移量;从所述当前帧的图像姿态矩阵中提取当前帧的平移量;将所述当前帧的平移量减去每一所述历史帧的平移量,得到对应的平移量差值;根据所述平移量差值和预设的对应权重进行加权求和;将得到的加权值作为确定所述相机的当前速率;
所述利用所述自适应滤波器对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵,包括:获取所述自适应滤波器的滤波器插值参数;获取所述当前帧相邻的上一帧的相机姿态矩阵和所述当前帧的相机姿态矩阵;根据所述上一帧的相机姿态矩阵、所述当前帧的相机姿态矩阵和所述滤波器插值参数对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
利用所述插值后的相机姿态矩阵和预设的绘制参数在所述当前帧中绘制虚拟对象,并输出绘制后的当前帧。
3.根据权利要求1所述的方法,其特征在于,所述根据所述上一帧的相机姿态矩阵、所述当前帧的相机姿态矩阵和所述滤波器插值参数对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵,包括:
根据第一旋转矩阵、第二旋转矩阵和所述滤波器插值参数对所述第二旋转矩阵进行插值,得到插值后的相机姿态矩阵,其中所述第一旋转矩阵为上一帧的相机姿态矩阵中的旋转矩阵,所述第二旋转矩阵为当前帧的相机姿态矩阵中的中的旋转矩阵;
根据第一平移向量、第二平移向量和所述滤波器插值参数对所述第二平移向量进行插值,得到插值后的平移向量;
根据所述插值后的相机姿态矩阵和所述插值后的平移向量进行计算,得到插值后的相机姿态矩阵。
4.根据权利要求3所述的方法,其特征在于,所述根据第一旋转矩阵、第二旋转矩阵和所述滤波器插值参数对所述第二旋转矩阵进行插值,得到插值后的相机姿态矩阵,包括:
将所述第一旋转矩阵转换为单位四元数形式,得到第一单位四元数;
将所述第二旋转矩阵转换为单位四元数形式,得到第二单位四元数;
根据所述第一单位四元数、所述第二单位四元数和所述滤波器插值参数对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第一单位四元数、所述第二单位四元数和所述滤波器插值参数对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵,包括:
根据所述第一单位四元数、所述第二单位四元数和所述滤波器插值参数计算上一帧的球面插值参数和当前帧的球面插值参数;
根据所述第一单位四元数、所述第二单位四元数、所述上一帧的球面插值参数和所述当前帧的球面插值参数计算,得到插值后的当前帧的四元数;
将插值后的当前帧的四元数采用矩阵来表示,得到插值后的相机姿态矩阵。
6.根据权利要求1或2所述的方法,其特征在于,所述从预设的滤波器集合中确定与所述当前速率对应的自适应滤波器,包括:
根据所述相机的当前速率查询预设关联信息,得到与所述当前速率对应的自适应滤波器的标识,所述关联信息用于表征所述当前速率与所述滤波器集合中滤波器的标识之间的对应关系。
7.一种基于多层滤波确定相机姿态矩阵的装置,其特征在于,所述装置包括:
第一确定单元,用于根据相机采集的视频流中的相邻帧确定当前帧的相机姿态矩阵;
第二确定单元,用于根据所述当前帧的相机姿态矩阵确定所述相机的当前速率;
第三确定单元,用于从预设的滤波器集合中确定与所述当前速率对应的自适应滤波器;
差值单元,用于利用所述自适应滤波器对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵;
输出单元,用于输出所述插值后的相机姿态矩阵;
所述第二确定单元,包括:第三获取模块,用于获取所述相机的历史帧集合中每一历史帧的图像姿态矩阵,从所述历史帧的图像姿态矩阵中提取之前图像帧的平移量;提取模块,用于从所述当前帧的图像姿态矩阵中提取当前帧的平移量;计算模块,用于将所述当前帧的平移量减去每一所述历史帧的平移量,得到对应的平移量差值;求和模块,用于根据所述平移量差值和预设的对应权重进行加权求和;确定模块,用于将得到的加权值作为确定所述相机的当前速率;
所述差值单元包括:第一获取模块,用于获取所述自适应滤波器的滤波器插值参数;第二获取模块,用于获取所述当前帧相邻的上一帧的相机姿态矩阵和所述当前帧的相机姿态矩阵;差值模块,用于根据所述上一帧的相机姿态矩阵、所述当前帧的相机姿态矩阵和所述滤波器插值参数对所述当前帧的相机姿态矩阵进行插值,得到插值后的相机姿态矩阵。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括绘制单元,其中,所述绘制单元,用于利用所述插值后的相机姿态矩阵和预设的绘制参数在所述当前帧中绘制虚拟对象,并输出绘制后的当前帧。
9.根据权利要求7所述的装置,其特征在于,所述差值模块包括:
第一差值子模块,用于根据第一旋转矩阵、第二旋转矩阵和所述滤波器插值参数对所述第二旋转矩阵进行插值,得到插值后的相机姿态矩阵,其中所述第一旋转矩阵为上一帧的相机姿态矩阵中的旋转矩阵,所述第二旋转矩阵为当前帧的相机姿态矩阵中的中的旋转矩阵;
第二差值子模块,用于根据第一平移向量、第二平移向量和所述滤波器插值参数对所述第二平移向量进行插值,得到插值后的平移向量;
计算子模块,用于根据所述插值后的相机姿态矩阵和所述插值后的平移向量进行计算,得到插值后的相机姿态矩阵。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至6任一项所述的基于多层滤波确定相机姿态矩阵的方法中的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6任一项所述的基于多层滤波确定相机姿态矩阵的方法中的步骤。
CN201710719545.1A 2017-08-21 2017-08-21 基于多层滤波确定相机姿态矩阵的方法及装置、设备 Active CN107516327B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710719545.1A CN107516327B (zh) 2017-08-21 2017-08-21 基于多层滤波确定相机姿态矩阵的方法及装置、设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710719545.1A CN107516327B (zh) 2017-08-21 2017-08-21 基于多层滤波确定相机姿态矩阵的方法及装置、设备

Publications (2)

Publication Number Publication Date
CN107516327A CN107516327A (zh) 2017-12-26
CN107516327B true CN107516327B (zh) 2023-05-16

Family

ID=60723425

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710719545.1A Active CN107516327B (zh) 2017-08-21 2017-08-21 基于多层滤波确定相机姿态矩阵的方法及装置、设备

Country Status (1)

Country Link
CN (1) CN107516327B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112446924A (zh) * 2019-09-02 2021-03-05 北京车和家信息技术有限公司 车辆的相机标定系统、车辆及相机标定方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102538781A (zh) * 2011-12-14 2012-07-04 浙江大学 基于机器视觉和惯导融合的移动机器人运动姿态估计方法
WO2015096806A1 (zh) * 2013-12-29 2015-07-02 刘进 智能机姿态测定、全景影像生成及目标识别方法
CN105931275A (zh) * 2016-05-23 2016-09-07 北京暴风魔镜科技有限公司 基于移动端单目和imu融合的稳定运动跟踪方法和装置
CN105976353A (zh) * 2016-04-14 2016-09-28 南京理工大学 基于模型和点云全局匹配的空间非合作目标位姿估计方法
CN106296598A (zh) * 2016-07-29 2017-01-04 厦门美图之家科技有限公司 三维姿态处理方法、系统及拍摄终端
CN106934827A (zh) * 2015-12-31 2017-07-07 杭州华为数字技术有限公司 三维场景的重建方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2786307A1 (en) * 2011-11-29 2014-10-08 Layar B.V. Dynamically configuring an image processing function
US9529426B2 (en) * 2012-02-08 2016-12-27 Microsoft Technology Licensing, Llc Head pose tracking using a depth camera

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102538781A (zh) * 2011-12-14 2012-07-04 浙江大学 基于机器视觉和惯导融合的移动机器人运动姿态估计方法
WO2015096806A1 (zh) * 2013-12-29 2015-07-02 刘进 智能机姿态测定、全景影像生成及目标识别方法
CN106934827A (zh) * 2015-12-31 2017-07-07 杭州华为数字技术有限公司 三维场景的重建方法和装置
CN105976353A (zh) * 2016-04-14 2016-09-28 南京理工大学 基于模型和点云全局匹配的空间非合作目标位姿估计方法
CN105931275A (zh) * 2016-05-23 2016-09-07 北京暴风魔镜科技有限公司 基于移动端单目和imu融合的稳定运动跟踪方法和装置
CN106296598A (zh) * 2016-07-29 2017-01-04 厦门美图之家科技有限公司 三维姿态处理方法、系统及拍摄终端

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
朱永丰 ; 朱述龙 ; 张静静 ; 朱永康 ; .基于ORB特征的单目视觉定位算法研究.计算机科学.2016,(S1),全文. *
辛明 ; 张苗辉 ; .基于SURF的红外成像末制导目标跟踪算法.光电子.激光.2012,(08),全文. *

Also Published As

Publication number Publication date
CN107516327A (zh) 2017-12-26

Similar Documents

Publication Publication Date Title
US11632533B2 (en) System and method for generating combined embedded multi-view interactive digital media representations
US10586395B2 (en) Remote object detection and local tracking using visual odometry
CN109961507B (zh) 一种人脸图像生成方法、装置、设备及存储介质
CN105164728B (zh) 用于混合实境的设备和方法
CN108629843B (zh) 一种实现增强现实的方法及设备
EP4307233A1 (en) Data processing method and apparatus, and electronic device and computer-readable storage medium
CN106296598B (zh) 三维姿态处理方法、系统及拍摄终端
CN112288665B (zh) 图像融合的方法、装置、存储介质及电子设备
CN109906600B (zh) 模拟景深
KR20170086077A (ko) 증강 현실 장면에서의 드로잉을 위한 깊이 정보의 사용
CN101901497A (zh) 运动捕捉角色的逆运动学
CN109711246B (zh) 一种动态物体识别方法、计算机装置及可读存储介质
KR102374404B1 (ko) 콘텐트를 제공하기 위한 디바이스 및 방법
US10818078B2 (en) Reconstruction and detection of occluded portions of 3D human body model using depth data from single viewpoint
CN110648274B (zh) 鱼眼图像的生成方法及装置
CN107808388B (zh) 包含运动目标的图像处理方法、装置及电子设备
CN111246189B (zh) 虚拟屏幕投影实现方法、装置及电子设备
CN108028904B (zh) 移动设备上光场增强现实/虚拟现实的方法和系统
CN116057577A (zh) 用于增强现实的地图
CN115482556A (zh) 关键点检测模型训练及虚拟角色驱动的方法和对应的装置
CN109978945B (zh) 一种增强现实的信息处理方法和装置
CN107516327B (zh) 基于多层滤波确定相机姿态矩阵的方法及装置、设备
KR20210046759A (ko) 이미지 디스플레이 방법, 장치 및 시스템
CN114092668A (zh) 虚实融合方法、装置、设备及存储介质
WO2019213392A1 (en) System and method for generating combined embedded multi-view interactive digital media representations

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant