智能机姿态矩阵计算方法及其应用于摄影测量的方法转让专利

申请号 : CN201410157539.8

文献号 : CN104748728B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘进陶重芝

申请人 : 刘进

摘要 :

本发明公开了一种智能机姿态矩阵计算方法及其应用于摄影测量的方法,其中智能机姿态矩阵计算方法主要包括步骤:通过智能机测量智能机的重力加速度x、y、z三个方向的分量ax、ay和az;通过智能机获取方位角计算姿态矩阵本发明通过智能机的姿态矩阵Rg可得到智能机上摄像头的姿态,可应用于摄影测量,全景测量、计算机视觉,LBS服务,虚拟现实仿真,增强现实可穿戴设备的姿态测量等领域。

权利要求 :

1.一种智能机姿态矩阵计算方法,其特征在于,包括以下步骤:通过检测智能机上重力加速度传感器的三个值{vax’,vay’,vaz’}计算ax、ay和az:或对{vax’,vay’,vaz’}进行滤波后得到{vax,vay,vaz},计算ax、ay和az:其中Ra是重力加速度传感器相对于智能机的姿态转换矩阵;

通过智能机磁力计获取方位角 的三角函数;或者方向传感器获取方位角计算姿态矩阵

其中

当az<0时,s=-1,az≥0时,s=1;

公式(1)得到的姿态矩阵Rg描述了智能机的姿态,姿态矩阵Rg的第1行是智能机x轴在局部坐标系下的单位矢量;第2行是智能机y轴在局部坐标系下的单位矢量;第3行是智能机z轴在局部坐标系下的单位矢量;其中局部坐标系是z轴沿重力指向地球外,x轴朝北y轴朝西,或x轴朝东y轴朝北的坐标系;

若智能机中安装有旋转矢量传感器,则:

(1)通过以下(a)(b)(c)中任何一种得到Rg0矩阵:(a)如果智能机上的旋转矢量传感器有3个数据values[0],values[1],values[2],则令q1=values[0],q2=values[1],q3=values[2], 再将q0,q1,q2,q3按以下公式转换成Rg0矩阵

(b)如果智能机上的旋转矢量传感器有4个数据,values[0],values[1],values[2],values[3],令q0=values[3],q1=values[0],q2=values[1],q3=values[2],将q0,q1,q2,q3按以下公式转换成Rg0矩阵(c)若智能机上指定传感器类型为旋转矢量类TYPE_ROTATION_VECTOR,则实时获取旋转矢量传感器的观测值Rvec,利用智能机系统上的旋转矢量转矩阵函数将Rvec转换成绘图转换矩阵R44,R44左上角3x3矩阵就是Rg0;

(2)根据智能机旋转矢量传感器坐标系定义的不同,在以下几种情况下得到Rg:若旋转矢量传感器定义的单位阵是X轴指向东,Y轴指向北,则若旋转矢量传感器定义的单位阵是X轴指向北,Y轴指向西,则Rg=Rg0;

若旋转矢量传感器定义的单位阵是X轴指向南,Y轴指向东,则

2.根据权利要求1所述的方法,其特征在于,若智能机中安装有方向传感器:则通过该智能机获取方位角 带入公式(1)计算姿态矩阵Rg。

3.根据权利要求1所述的方法,其特征在于,若智能机中安装有磁力计传感器,则通过该磁力计传感器检测到三个值{vmx’,vmy’,vmz’},计算 或对{vmx’,vmy’,vmz’}进行滤波后得到{vmx,vmy,vmz},计算 其中Rm是磁力传感器相对于智能机的姿态转换矩阵;并计算 其中计算方位角 的三角函数为:将其带入公式(1)计算Rg。

4.根据权利要求1所述的方法,其特征在于,若智能机上安装有陀螺仪,则姿态矩阵Rg采用陀螺仪进行迭代计算;

在计算完第一个Rg之后,若存在陀螺仪,采用以下方法迭代得到Rg矩阵:第1步 设定q0,q1,q2,q3的初值选用公式(1)计算Rg的初值,然后将Rg矩阵转换成4元素q0,q1,q2,q3;

将4元数q0,q1,q2,q3作为以下迭代计算的初值;

第2步 设定exInt,eyInt,ezInt原始值为0exInt=0,eyInt=0,ezInt=0;

第3步 根据接收到的磁力计矢量{mx,my,mz},得到正确磁场矢量{wx,wy,wz}先将矢量{mx,my,mz}替换成将其单位化以后的矢量并按下述方法得到矢量{bx,0,bz}hx=2×mx×(0.5-q2×q2-q3×q3)+2×my×(q1×q2-q0×q3)+2×mz×(q1×q3+q0×q2);

hy=2×mx×(q1×q2+q0×q3)+2×my×(0.5-q1×q1-q3×q3)+2×mz×(q2×q3-q0×q1);

hz=2×mx×(q1×q3-q0×q2)+2×my×(q2×q3+q0×q1)+2×mz×(0.5-q1×q1-q2×q2);

bz=hz

再转换到正确磁场矢量{wx,wy,wz}wx=2×bx×(0.5-q2×q2-q3×q3)+2×bz×(q1×q3-q0×q2);

wy=2×bx×(q1×q2-q0×q3)+2×bz×(q0×q1+q2×q3);

wz=2×bx×(q0×q2+q1×q3)+2×bz×(0.5-q1×q1-q2×q2);

第4步 根据接收到的重力加速度传感器数据ax,ay,az,和{wx,wy,wz}得到误差矢量{ex,ey,ez}并计算exInt,eyInt,ezInt先将矢量{ax,ay,az}替换成将其单位化以后的矢量vx=2×q1×q3-q0×q2);

vy=2×(q0×q1+q2×q3);

vz=q0×q0-q1×q1-q2×q2+q3×q3;

ex=(ay×vz-az×vy)+(my×wz-mz×wy);

ey=(az×vx-ax×vz)+(mz×wx-mx×wz);

ez=(ax×vy-ay×vx)+(mx×wy-my×wx);

计算误差累计值

exInt替换为exInt+ex×Ki;

eyInt替换为eyInt+ey×Ki;

ezInt替换为ezInt+ez×Ki;

其中Ki为一可调节的正系数,Ki在0.00001至0.5中任意选取;

第5步 根据误差矢量{ex,ey,ez}及其累计值纠正陀螺仪数据{gx0,gy0,gz0}假设智能机读出当前的一组陀螺仪数据为{gx0,gy0,gz0}gx=gx0+Kp×ex+exInt;

gy=gy0+Kp×ey+eyInt;

gz=gz0+Kp×ez+ezInt;

其中Kp为一可调节的正系数,Kp在0.000001至20.0中任意选取;

第6步 根据陀螺仪数据{gx,gy,gz}修正四元数随着不断接收到陀螺仪数据{gx,gy,gz},对4元数按如下方式修正,halfT为修正周期,halfT=0.00001~10.0,q0替换为q0+(-q1×gx-q2×gy–q3×gz)×halfT;

q1替换为q1+(q0×gx-q3×gy+q2×gz)×halfT;

q2替换为q2+(q3×gx+q0×gy-q1×gz)×halfT;

q3替换为q3+(-q2×gx+q1×gy+q0×gz)×halfT;

第7步 输出Rg矩阵和四元数

将四元数{q0,q1,q2,q3}单位化成 输出

4元数转Rg矩阵公式如下

第8步 回到第3步继续接收陀螺仪运动数据更新姿态4元数q0~q3,在循环的过程中每次到第7步都能输出当前的Rg矩阵。

5.根据权利要求1-4中任一项所述的方法,其特征在于,对姿态矩阵Rg进行校正,校正姿态矩阵其中R=ΔR×Rg;

ΔR为智能机的摄像头姿态矩阵R和智能机姿态矩阵Rg之间的一个固定的方向的转换,当摄像头方向和智能机屏幕方向刚好相反时 摄像头方向和智能机屏幕方向完全一致时 否则采用摄影测量后方交汇法标定ΔR,具体方法如下:建立控制场坐标系,即原点位于智能机的GPS接收点或北斗定位点的局部坐标系;

用智能机摄像头拍摄控制场坐标系中的点集;按权利要求1-4中任一项所述的方法测定智能机拍摄点集时的Rg;

根据控制场点集中各已知点的控制场坐标系的三维坐标与拍摄图像中点集像坐标的对应关系,采用摄影测量后方交会方法测量出智能机摄像头相对于控制场坐标系的姿态矩阵RA和摄像头光心相对于控制场坐标系的坐标ΔT,ΔT同时也是摄像头光心相对于智能机GPS或北斗定位点的局部坐标系偏移;计算ΔR=RARg-1。

6.一种摄像头多目视觉定位方法,其特征在于,包括以下步骤:步骤1:

在N个地理位置点拍摄同一个物体X,其中N≥2,测第i个观察点的以下几个量,其中i∈(1,2,…,N):(1)在视频帧图像中显示的位置(ui,vi);

(2)拍摄点的地理位置 分别是第i个拍摄点的经度,纬度,高度;

(3)按权利要求5方法测得第i个拍摄点的姿态矩阵Ri;

(4)第i个拍摄点的内部参数焦距长fi,像主点坐标(cxi,cyi);

步骤2:

计算相对于地心的N个姿态矩阵,i=1~N,R0i=RiRvi其中

步骤3:

利用公式

T

得到N个拍摄点摄像头光心的地心坐标系坐标T0i={Txi,Tyi,Tzi} i=1~N;其中{ΔTxi,ΔTxi,ΔTzi}T=RviTΔTi;ΔTi是根据权利要求5的方法计算的摄像头光心偏移矢量; 是将经度,纬度,高度转换成地心坐标系的X坐标的函数; 是将经度,纬度,高度转换成地心坐标系的Y坐标的函数; 是将经度,纬度,高度转换成地心坐标系的Z坐标的函数;

步骤4

根据拍摄点N的姿态矩阵R0N,位置[TxN TyN TzN],在视频帧图像中显示的位置坐标(uN,vN),摄像头焦距像素长fN,像主点坐标(cxN,cyN)都满足以下方程其中r0iab表示姿态矩阵R0i的第a行第b列的元素值;i=1~N一共列2N个方程,解(Xx,Xy,Xz)三个未知数;或采用摄影测量前方交汇方法计算出物体X得到地心坐标系坐标(Xx,Xy,Xz);

最后由大地测量学公式得到地心坐标(Xx,Xy,Xz)对应的经纬度。

7.一种单目单点地面定位方法,其特征在于,包括步骤:步骤1

根据权利要求5的方法计算摄像头的姿态矩阵步骤2

摄像头拍摄视频上选取地平面上一点,测得其在视频帧图像中显示的位置(u,v),预先得到摄像头的内部参数焦距长f,像主点坐标(cx,cy);该点在局部坐标系的坐标(X,Y)的计算公式如下:其中h是摄像头离地面的高度;

步骤3

通过大地测量方法将局部坐标系坐标(X,Y,-h)转换成经纬度,T地心=Ts+RvT([X,Y,-h]T+ΔT)其中Ts是智能机地心坐标,

ΔT是用权利要求6方法记录智能机摄像头光心相对于GPS定位点的位移矢量;

θs是智能机纬度,φs是智能机经度;

最后根据地心坐标T地心,由大地测量学公式得到T地心对应的经纬度。

8.一种单目双点测量垂直于地面的物体的位置和高度的方法,其特征在于,包括以下步骤:步骤1

用智能机摄像头拍摄1张垂直于地面物体的图像,并测量和计算下以下几个量:(1)根据权利要求5的方法计算摄像头的姿态矩阵R=ΔR×Rg(2)测量物体在地面上的垂足在视频帧图像中显示的位置(u┴,v┴)(3)测量垂直于地面物体的顶部在视频帧图像中显示的位置(uh,vh)(4)得到摄像头的内部参数焦距长fx,像主点坐标(cx,cy)(5)得到摄像头离地面高度h;

步骤2

计算以下几个量

步骤3

解下面矩阵方程,得到[X Y H]

其中(X,Y)是局部坐标系下物体的坐标,H是垂直于地面物体的高度;

步骤4

通过大地测量方法将物体最高顶点局部坐标系坐标(X,Y,H)转换成经纬度;T地心=Ts+T TRv([X,Y,H]+ΔT)

其中Ts是智能机地心坐标,ΔT为根据权利要求6的方法计算的智能机摄像头光心相对于GPS定位点的位移矢量;

θs是智能机纬度,φs是智能机经度;

最后根据地心坐标T地心,由大地测量学公式得到T地心对应的经纬度。

9.一种智能机全景影像生成方法,其特征在于,包括以下步骤:步骤1、智能机在某一固定点用不同姿态拍摄n张图像,采用权利要求5的方法得到姿态矩阵分别为Ri,i为0~n-1之间的整数,n为大于等于1的整数;

步骤2、开辟一张宽w高h大小的全景影像;

步骤3、扫描全景影像上每一个像素,针对全景图的每一个像素(x,y)进行如下(1)(2)处理(1)横坐标x转换成 纵坐标y转换成θ;

其中w,h是全景图像的宽,高;

(2)依据小孔成像公式

其中 fi为相机i焦距像素长度,(cix,ciy)是相机i的像主点,利用Ri将转换成映射到每个相机i的像坐标(ui,vi),若(ui,vi)在图像范围内,则将相机i像坐标(ui,vi)处颜色取出,加权渲染到全景图(x,y)处;权重与(ui,vi)到该图像边缘最短距离有关,距离越短权重越小;若无一个相机的(ui,vi)在其图像范围内,渲染透明色或背景色到(x,y)处;

扫描完全景图像上所有点填充相应的颜色,即完成全景图像的渲染;

若Ri矩阵不准确,则将Ri作为初值,采用计算机视觉学科中LM平差算法模型进行优化,以保证重叠区域对应像素的灰度值差异最小;

或者在步骤2中先将全景图像颜色值全部清0,在步骤3中针对n张图像将全景图像上的相应区每个像素扫描n轮,分n轮依次将加权颜色值累加在全景图的像素上;

步骤4 全景图像的三维浏览和检索定位

(A)智能机姿态控制浏览三维全景图像

在虚拟场景中以球心为观察点,球体内壁以全景图作为纹理渲染一个球;设定智能机摄像头观察方向{r31,r32r33},自身向上方向{-r21,-r22,-r23};rij是姿态R矩阵中第i行第j列元素;

(B)全景图建库、检索和定位

为有效利用存储空间,除采用步骤3(1)中的公式外还可用墨卡托转换公式,转换成全景图像,保持建库和检索的转换方式一致;

建库

提取全景图像的特征点集合,建立与全景图像关联的特征点数据库,库中每个特征点指向其所在的全景图像;

检索

同一地点c≥1张图像合成待检索全景图像并提取渲染区特征点,对每个特征点,查询库中与其最相似特征点所指向的全景图像,按特征点相似程度对库中指向的全景图像进行加权投票,按投票总和大小排序;

将待检索全景图中已渲染区和投票得到的库中全景图对应区域的像素集进行相关匹配计算,相关系数越大越相似;输出投票排序靠前且相关系数大于预设值的结果;如果c=

1,也可根据单张拍摄姿态R,将库中全景图像映射到单张拍摄图像域与单张拍摄图像进行相关匹配;

定位

在已知GPS情况下,检索GPS附近区域的全景图像组成的子集特征库;

服务器数据库将全景图像与其地理位置坐标绑定在一起存储,检索结果是编号为i*的图像,即可在数据库中查找出i*所对应的地理位置。

说明书 :

智能机姿态矩阵计算方法及其应用于摄影测量的方法

技术领域

[0001] 本发明涉及信息技术领域,具体涉及智能机姿态矩阵计算方法以及摄像头单目、多目视觉定位方法。

背景技术

[0002] 智能机及其摄像头姿态测量具有重要意义,计算机视觉和摄影测量,以及其他工程测量都迫切需要一种廉价,轻便的姿态测量设备测定其姿态。
[0003] 由于智能机姿态不一样,同样位置看到的现实场景不一样,智能机姿态的精度影响导航精度,摄影测量精度,三维仿真精度和增强现实信息叠加精度,因此智能机姿态的精确测定具有重要意义。
[0004] 传统的智能机姿态测定,主要利用姿态传感器的单轴航向角数据信息,系统对智能机姿态摆放有特定要求,如要求智能机平行于地面,或垂直于地面摆放,而增强现实应用中用户手持智能机的姿态千变万化,并不一定严格平行或者垂直于地面,这将导致导航方位不准。此外智能机姿态测定的误差将带来信息叠加的误差,影响增强现实用户的体验,因此迫切需要一种考虑智能机X-Y-Z三轴旋转的姿态测定算法。
[0005] 传统的精确姿态检测技术主要用于飞机,汽车等大型设备,追求很高精度,用于军事、工业等领域,不仅非常笨重,而且十分贵重。而本发明主要考虑用廉价的智能机终端实现大众化的姿态测定。

发明内容

[0006] 本发明要解决的技术问题在于针对现有技术中传统精确姿态检测技术不适用于智能机终端,且现有的用于智能机终端的姿态测定方法测量误差大,用户体验不佳的缺陷,提供一种可适用于普通智能机终端,且测量精度高的姿态矩阵计算方法及摄像头单目多目视觉定位方法。
[0007] 本发明解决其技术问题所采用的技术方案是:
[0008] 提供一种智能机姿态矩阵计算方法,包括以下步骤:
[0009] 通过检测智能机上重力加速度传感器的三个值{vax’,vay’,vaz’}计算ax、ay和az:
[0010]
[0011] 或对{vax’,vay’,vaz’}进行滤波后得到{vax,vay,vaz},计算ax、ay和az:
[0012] 其中Ra是重力加速度传感器相对于智能机的姿态转换矩阵;
[0013] 通过智能机磁力计获取方位角 的三角函数;或者方向传感器获取方位角[0014] 计算姿态矩阵
[0015] 其中
[0016]
[0017] 当az<0时,s=-1,az≥0时,s=1;
[0018] 公式(1)得到的姿态矩阵Rg完整地描述了智能机的姿态,姿态矩阵Rg的第1行是智能机x轴在局部坐标系下的单位矢量;第2行是智能机y轴在局部坐标系下的单位矢量;第3行是智能机z轴在局部坐标系下的单位矢量;其中局部坐标系是z轴沿重力指向地球外,x轴朝北y轴朝西,或x轴朝东y轴朝北的坐标系。
[0019] 本发明还提供一种摄像头多目视觉定位方法,包括以下步骤:
[0020] 步骤1:
[0021] 在N个地理位置点拍摄同一个物体X,其中N≥2,测第i个观察点的以下几个量,其中i∈(1,2,…,N):
[0022] (1)在视频帧图像中显示的位置(ui,vi);
[0023] (2)拍摄点的地理位置 分别是第i个拍摄点的经度,纬度,高度;
[0024] (3)按上述方法测得第i个拍摄点的姿态矩阵Ri;
[0025] (4)第i个拍摄点的内部参数焦距长fi,像主点坐标(cxi,cyi);
[0026] 步骤2:
[0027] 计算相对于地心的N个姿态矩阵,i=1~N,R0i=RiRvi
[0028] 其中
[0029] 步骤3:
[0030] 利用公式得到
N个拍摄点摄像头光心的地心坐标系坐标T0i={Txi,Fyi,Fzi}Ti=1~N;其中{ΔTxi,ΔTxi,ΔTzi}T=RviTΔTi;ΔTi是根据权利要求6的方法计算的摄像头光心偏移矢量;
是将经度,纬度,高度转换成地心坐标系的X坐标的函数; 是将经度,纬度,高度转换成地心坐标系的Y坐标的函数; 是将经度,纬度,高度转换成地心坐标系的Z坐标的函数;
[0031] 步骤4
[0032] 根据拍摄点N的姿态矩阵R0N,位置[TxN TyN TzN],在视频帧图像中显示的位置坐标(uN,vN),摄像头焦距像素长fN,像主点坐标(cxN,cyN)都满足以下方程
[0033]
[0034]
[0035] 其中r0iab表示姿态矩阵R0i的第a行第b列的元素值;i=1~N一共列2N个方程,解(Xx,Xy,Xz)三个未知数;或采用摄影测量前方交汇方法计算出物体X得到地心坐标系坐标(Xx,Xy,Xz)。
[0036] 本发明还提供一种单目单点地面定位方法,包括步骤:
[0037] 步骤1
[0038] 根据上述方法计算摄像头的姿态矩阵
[0039] 步骤2
[0040] 摄像头拍摄视频上选取地平面上一点,测得其在视频帧图像中显示的位置(u,v),预先得到该点在摄像头的内部参数焦距长f,测得像主点坐标(cx,cy),该点在局部坐标系的坐标(X,Y)的计算公式如下:
[0041]
[0042] 其中h是摄像头离地面的高度;
[0043] 步骤3
[0044] 通过大地测量方法将局部坐标系坐标(X,Y,-h)转换成经纬度,
[0045] T地心=Ts+RvT([X,Y,-h]T+ΔT)
[0046] 其中Ts是智能机地心坐标,
[0047] ΔT是用上述方法记录智能机摄像头光心相对于GPS定位点的位移矢量。
[0048] θs是智能机纬度, 是智能机经度;
[0049] 最后根据地心坐标T地心,由大地测量学公式得到T地心对应的经纬度。
[0050] 本发明还提供了单目双点测量垂直于地面的物体的位置和高度的方法,包括以下步骤:
[0051] 步骤1
[0052] 用智能机摄像头拍摄1张垂直于地面物体的图像,并测量和计算下以下几个量:
[0053] (1)根据上述方法计算摄像头的姿态矩阵R=ΔR×Rg
[0054] (2)测量物体在地面上的垂足在视频帧图像中显示的位置(u⊥,v⊥)
[0055] (3)测量垂直于地面物体的顶部在视频帧图像中显示的位置(uh,vh)
[0056] (4)得到摄像头的内部参数焦距长fx,像主点坐标(cx,cy);
[0057] (5)得到摄像头离地面高度h;
[0058] 步骤2
[0059] 计算以下几个量
[0060]
[0061]
[0062]
[0063]
[0064]
[0065]
[0066] 步骤3
[0067] 解下面矩阵方程,得到[X Y H]
[0068]
[0069] 其中(X,Y)是局部坐标系下物体的坐标,H是垂直于地面物体的高度;
[0070] 步骤4
[0071] 通过大地测量方法将物体最高顶点局部坐标系坐标(X,Y,H)转换成经纬度;T地心=Ts+RvT([X,Y,H]T+ΔT)
[0072] 其中Ts是智能机地心坐标,ΔT为根据权利要求6的方法计算的智能机摄像[0073] 头光心相对于GPS定位点的位移矢量;
[0074]
[0075] θs是智能机纬度, 是智能机经度;
[0076] 最后根据地心坐标T地心,由大地测量学公式得到T地心对应的经纬度。
[0077] 本发明还提供了一种智能机全景影像生成方法,包括以下步骤:
[0078] 步骤1、智能机在某一固定点用不同姿态拍摄了n张图像,采用权利要求6的方法得到姿态矩阵分别为Ri,i为0~n-1之间的整数,n为大于等于1的整数;
[0079] 步骤2、开辟一张宽w高h大小的全景影像;
[0080] 步骤3、扫描全景影像上每一个像素,针对全景图的每一个像素(x,y)进行如下(1)(2)处理
[0081] (1)横坐标x转换成 纵坐标y转换成θ;
[0082] 其中w,h是全景图像的宽,高;
[0083] (2)依据小孔成像公式 其中 fi为相机i焦距像素长度,(cix,ciy)是相机i的像主点,利用Ri将 转换成映射到每个相机i的像坐标(ui,vi)若(ui,vi)在图像范围内,则将相机i像坐标(ui,vi)处颜色取出,加权渲染到全景图(x,y)处;权重与(ui,vi)到该图像边缘最短距离有关,距离越短权重越小;若无一个相机的(ui,vi)在其图像范围内,渲染透明色或背景色到(x,y)处;
[0084] 扫描完全景图像上所有点填充相应的颜色,即完成全景图像的渲染;
[0085] 若Ri矩阵不准确,则将Ri作为初值,采用计算机视觉学科中LM平差算法模型进行优化,以保证重叠区域对应像素的灰度值差异最小;
[0086] 或者在步骤2中先将全景图像颜色值全部清0,在步骤3中针对n张图像将全景图像上的相应区每个像素扫描n轮,分n轮依次将颜色值累加在全景图的像素上;
[0087] 步骤4全景图像的三维浏览和检索定位
[0088] (A)智能机姿态控制浏览三维全景图像
[0089] 在虚拟场景中以球心为观察点,球体内壁以全景图作为纹理渲染一个球;设定智能机摄像头观察方向{r31,r32r33},自身向上方向{-r21,-r22,-r23};rij是姿态R矩阵中第i行第j列元素;
[0090] (B)全景图建库、检索和定位
[0091] 为有效利用存储空间,除采用步骤3(1)中的公式外还可用墨卡托转换公式,[0092]
[0093] 转换成全景图像,保持建库和检索的转换方式一致;
[0094] 建库
[0095] 提取全景图像的特征点集合,建立与全景图像关联的特征点数据库,库中每个特征点指向其所在的全景图像;
[0096] 检索
[0097] 同一地点c≥1张图像合成待检索全景图像并提取渲染区特征点,对每个特征点,查询库中与其最相似特征点所指向的全景图像,按特征点相似程度对库中指向的全景图像进行加权投票,按投票总和大小排序;
[0098] 将待检索全景图中已渲染区和投票得到的库中全景图对应区域的像素集进行相关匹配计算,相关系数越大越相似;输出投票排序靠前且相关系数大于预设值的结果;如果c=1,也可根据单张拍摄姿态R,将库中全景图像映射到单张拍摄图像域与单张拍摄图像进行相关匹配;
[0099] 定位
[0100] 在已知GPS情况下,检索GPS附近区域的全景图像组成的子集特征库;
[0101] 服务器数据库将全景图像与其地理位置坐标绑定在一起存储,检索结果是编号为i*的图像,即可在数据库中查找出i*所对应的地理位置。
[0102] 本发明产生的有益效果是:本发明提供智能机及其摄像头姿态测量方法方案,用户在三维空间中以任意姿态摆放智能机都能得到其姿态矩阵Rg,并进一步得到智能机上摄像头的姿态,可应用于摄影测量,计算机视觉,LBS服务,虚拟现实仿真,增强现实,实景游戏可穿戴设备的姿态传感等领域。
[0103] 进一步地,本发明不仅考虑方向传感器的value[0]得到的方位角,在有其他传感器,如重力加速度磁力计和陀螺仪情况下,还考虑了其他几种姿态传感器捕获到的数据,使得检测到的姿态更加精确,在没有这些传感器条件下也能得到粗略姿态。智能机的姿态对于全方位信息叠加有着重要作用。本发明可以在智能机,诸如Andriod,苹果系统上方便地实现。

附图说明

[0104] 下面将结合附图及实施例对本发明作进一步说明,附图中:
[0105] 图1是本发明实施例Rg矩阵的矢量图。

具体实施方式

[0106] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0107] 本发明中智能机的含义包括内置摄像头、视频的手机系统,内置网络IP的摄像头系统,内置网络IP的摄像头系统,IPhone,平板电脑,以及各种同时植入摄像机和网络IP的系统等。
[0108] 本发明中的需定姿的成像系统包括智能机上配备的一切具有成像功能的装置,模块,设备,如摄像头,面阵或线阵相机,红外相机,相机-激光3D探测设备,3D相机,激光探测设备,kinect设备等。
[0109] 智能机在局部坐标系的姿态矩阵 将智能机固定到某一装置上,智能机输出的姿态矩阵Rg就反映了该装置的姿态。
[0110] Rg矩阵是一个3x3单位正交矩阵,由三行组成,每行一个三维矢量,三个矢量分别为rgx,rgy,rgz,如图1所示,这三个矢量是智能机自身三轴在局部坐标系下的三个单位矢量。第一行rgx是智能机自身x轴在局部坐标系下的单位矢量;第二行rgy是智能机自身y轴在局部坐标系下的单位矢量;第三行rgz是智能机自身z轴在局部坐标系下的单位矢量。
[0111] 智能机姿态矩阵Rg是相对于局部坐标系的,局部坐标系Z轴与重力方向一致,若智能机磁力计指示方向是北,则北代表局部坐标系X轴,西代表局部坐标系Y轴;若智能机磁力计指示方向是东,则东代表局部坐标系X轴,北代表局部坐标系Y轴;若智能机磁力计指示方向是南,则南代表局部坐标系X轴,东代表局部坐标系Y轴;若智能机磁力计指示方向是西,则西代表局部坐标系X轴,南代表局部坐标系Y轴。
[0112] 本发明实施例提供了两种智能机姿态测定方法,方法(1)需要加速度计和磁力计以及陀螺仪配合。方法(2)利用旋转矢量传感器实现智能机姿态测定;这样真正解决了3轴全方位的姿态测定,在摄影测量,GIS服务,增强现实仿真,游戏等领域都有重要应用。
[0113] 智能机姿态矩阵Rg可采用以下二种方法之一得到:
[0114] 方法(1)采用重力加速度传感器与磁力计
[0115] 如果智能机有重力加速度传感器,且有磁力计或方向传感器,用以下公式(1)计算Rg
[0116]
[0117] 其中
[0118]
[0119] ax、ay、az可通过以下方法计算:
[0120] 通过检测智能机上重力加速度传感器的三个值{vax’,vay’,vaz’}计算ax、ay和az;
[0121]
[0122] 或对{vax’,vay’,vaz’}进行滤波后得到{vax,vay,vaz},计算ax、ay和az;
[0123]
[0124] 其中Ra是重力加速度传感器相对于智能机的姿态转换矩阵;
[0125] 若采用滤波数据,滤波过程中检测到新值vax’,vay’,vaz’可采用:
[0126] αvax’+(1-α)vax替换原来的vax
[0127] αvay’+(1-α)vay替换原来的vay
[0128] αvaz’+(1-α)vaz替换原来的vaz
[0129] α是介于[0,1]之间的一个值。
[0130] Ra是重力传感器相对于智能机的姿态转换矩阵,对于大部分智能手机而言,[0131]
[0132]
[0133] 当az<0时,s=-1,az≥0时,s=1;
[0134] 若采用方向传感器:智能机中的方向传感器方位角输出值,即 带入公式(1)计算Rg;方向传感器输出的第1个值是方位角,第2个是俯仰角,第3个是翻滚角。
[0135] 若采用磁力计传感器:检测到磁力传感器矢量值{vmx’,vmy’,vmz’},计算[0136]
[0137] 或对{vmx’,vmy’,vmz’}进行滤波后得到{vmx,vmy,vmz},计算
[0138]
[0139] 其中Rm是磁力传感器相对于智能机的姿态转换矩阵;
[0140] 如过程中检测到新值vmx’,vmy’,vmz’可采用以下方法对磁力计信号滤波:
[0141] αmvmx’+(1-αm)vmx替换原来的vmx;
[0142] αmvmy’+(1-αm)vmy替换原来的vmy;
[0143] αmvmz’+(1-αm)vmz替换原来的vmz;
[0144] αm是介于[0,1]之间的一个值。
[0145] 并计算
[0146]
[0147] 利用磁力计计算方位角 的三角函数为:
[0148]
[0149]
[0150] 带入公式(1)计算Rg,反复利用上述公式(1)计算姿态矩阵Rg。
[0151] 上述智能机姿态矩阵Rg还可以采用陀螺仪进行迭代计算。在公式(1)计算完第一个Rg之后,若存在陀螺仪,可采用以下方法迭代得到Rg矩阵:
[0152] 第1步设定q0,q1,q2,q3的初值
[0153] 选用公式(1)计算Rg的初值,然后将Rg矩阵转换成4元素q0,q1,q2,q3;
[0154] 将4元数q0,q1,q2,q3作为以下迭代计算的初值;
[0155] 第2步设定exInt,eyInt,ezInt原始值为0
[0156] exInt=0,eyInt=0,ezInt=0;
[0157] 第3步根据接收到的磁力计矢量{mx,my,mz},得到正确磁场矢量{wx,wy,wz}先将矢量{mx,my,mz}替换成将其单位化以后的矢量
[0158] 并按下述方法得到矢量{bx,0,bz}
[0159] hx=2×mx×(0.5-q2×q2-q3×q3)+2×my×(q1×q2-q0×q3)+2×mz×(q1×q3+q0×q2);
[0160] hy=2×mx×(q1×q2+q0×q3)+2×my×(0.5-q1×q1-q3×q3)+2×mz×(q2×q3-q0×q1);
[0161] hz=2×mx×(q1×q3-q0×q2)+2×my×(q2×q3+q0×q1)+2×mz×(0.5-q1×q1-q2×q2);
[0162]
[0163] bz=hz
[0164] 再转换到正确磁场矢量{wx,wy,wz}
[0165] wx=2×bx×(0.5-q2×q2-q3×q3)+2×bz×(q1×q3-q0×q2);
[0166] wy=2×bx×(q1×q2-q0×q3)+2×bz×(q0×q1+q2×q3);
[0167] wz=2×bx×(q0×q2+q1×q3)+2×bz×(0.5-q1×q1-q2×q2);
[0168] 第4步根据接收到的重力加速度传感器数据ax,ay,az,和{wx,wy,wz}得到误差矢量{ex,ey,ez}并计算exInt,eyInt,ezInt
[0169] 先将矢量{ax,ay,az}替换成将其单位化以后的矢量
[0170] vx=2×q1×q3-q0×q2);
[0171] vy=2×(q0×q1+q2×q3);
[0172] vz=q0×q0-q1×q1-q2×q2+q3×q3;
[0173] ex=(ay×vz-az×vy)+(my×wz-mz×wy);
[0174] ey=(az×vx-ax×vz)+(mz×wx-mx×wz);
[0175] ez=(ax×vy-ay×vx)+(mx×wy-my×wx);
[0176] 计算误差累计值
[0177] exInt替换为exInt+ex×Ki;
[0178] eyInt替换为eyInt+ey×Ki;
[0179] ezInt替换为ezInt+ez×Ki;
[0180] 其中Ki为一可调节的正系数,Ki在0.00001至0.5中任意选取;
[0181] 第5步根据误差矢量{ex,ey,ez}及其累计值纠正陀螺仪数据{gx0,gy0,gz0}假设智能机读出当前的一组陀螺仪数据为{gx0,gy0,gz0}
[0182] gx=gx0+Kp×ex+exInt;
[0183] gy=gy0+Kp×ey+eyInt;
[0184] gz=gz0+Kp×ez+ezInt;
[0185] 其中Kp为一可调节的正系数,Kp在0.000001至20.0中任意选取;
[0186] 第6步根据陀螺仪数据{gx,gy,gz}修正四元数
[0187] 随着不断接收到陀螺仪数据{gx,gy,gz},对4元数按如下方式修正,halfT为修正周期,halfT=0.00001~10.0,
[0188] q0替换为q0+(-q1×gx-q2×gy–q3×gz)×halfT;
[0189] q1替换为q1+(q0×gx-q3×gy+q2×gz)×halfT;
[0190] q2替换为q2+(q3×gx+q0×gy-q1×gz)×halfT;
[0191] q3替换为q3+(-q2×gx+q1×gy+q0×gz)×halfT;
[0192] 第7步输出Rg矩阵和四元数
[0193] 将四元数{q0,q1,q2,q3}单位化成 输出
[0194] 4元数转Rg矩阵公式如下
[0195]
[0196] 第8步回到第3步继续接收陀螺仪运动数据更新姿态4元数q0~q3,在循环的过程中每次到第7步都能输出当前的Rg矩阵。
[0197] 方法(2)用旋转矢量传感器
[0198] 在智能机有旋转矢量传感器的情况下,
[0199] 1.首先采用(a)(b)(c)中任何一种得到Rg0矩阵
[0200] (a)如果检测到智能机上的旋转矢量传感器只有3个数据values[0],values[1],values[2]
[0201] 采用以下公式得到
[0202] q1=values[0],q2=values[1],q3=values[2],
[0203]
[0204] 再将q0,q1,q2,q3按以下公式转换成Rg0矩阵
[0205]
[0206] (b)如果检测智能机上的旋转矢量传感器有4个数据,values[0],values[1],values[2],values[3],令q0=values[3],q1=values[0],q2=values[1],q3=values[2]。或者p0=values[3],p1=values[0],p2=values[1],p3=values[2]
[0207] 计算
[0208] q0=p0/Lp
[0209] q1=p1/Lp
[0210] q2=p2/Lp
[0211] q3=p3/Lp
[0212] 其中
[0213] 再将q0,q1,q2,q3按以下公式转换成Rg0矩阵
[0214]
[0215] (c)智能机上指定传感器类型为旋转矢量类型TYPE_ROTATION_VECTOR,实时得到旋转矢量传感器的观测值Rvec利用智能机系统上的旋转矢量转矩阵函数;将Rvec转换成绘图转换矩阵R44,R44左上角3x3矩阵就是Rg0;
[0216] 2.然后根据智能机旋转矢量传感器坐标系定义的不同,采取以下几种情况得到Rg:
[0217] 若旋转矢量传感器定义的单位阵是X轴指向东,Y轴指向北,则
[0218]
[0219] 若旋转矢量传感器定义的单位阵是X轴指向北,Y轴指向西,则
[0220] Rg=Rg0
[0221] 若旋转矢量传感器定义的单位阵是X轴指向南,Y轴指向东,则
[0222]
[0223] 为了进一步测量智能机上安装摄像头的姿态矩阵R,采取以下步骤:
[0224] 将智能机的姿态矩阵R定义为
[0225] 其中R=ΔR×Rg;ΔR为智能机的摄像头姿态矩阵R和智能机姿态矩阵Rg之间的一个固定的方向的转换,为摄像头光心偏移矢量。当摄像头方向和智能机屏幕方向刚好相反时摄像头方向和智能机屏幕方向完全一致时 否则采用成熟摄影测量后方交汇法精确标定ΔR。方法如下:
[0226] 1.建立控制场坐标系,即原点位于智能机的GPS接收点或北斗定位点的局部坐标系;
[0227] 2.用智能机摄像头拍摄控制场坐标系中的点集;按上述方法测定智能机拍摄点集时的Rg;
[0228] 3.根据控制场点集中各已知点的控制场坐标系的3维坐标与拍摄图像中点集像坐标的对应关系,采用摄影测量后方交会方法测量出智能机摄像头相对于控制场坐标系的姿态矩阵RA和摄像头光心相对于控制场坐标系的坐标ΔT;
[0229] 4.按下式得到ΔR=RARg-1。
[0230] ΔT同时也是摄像头光心相对于智能机GPS或北斗定位点的局部坐标系偏移。
[0231] 上述姿态矩阵R可用于摄像头多目视觉定位。假设地心坐标系是以地球球心为原点,地球球心到北极为z轴,球心到赤道0度经线点为x轴的右手坐标系。假设 是把经度,纬度,高度转换成地心坐标系的X坐标的函数; 是把经度,纬度,高度转换成地心坐标系的Y坐标的函数; 是把经度,纬度,高度转换成地心坐标系的Z坐标的函数,利用大地测量学中经典的转换公式计算物体X的地心坐标系坐标(Xx,Xy,Xz)[0232]
[0233] 其中
[0234] hi是点离地面高度
[0235] Ni是随纬度变化的卯酉圈曲率半径。
[0236]
[0237] a,b是地球椭球的长短轴,是大地测量学中的已知常量;
[0238] e是偏心率,是定值。
[0239] 通过姿态矩阵R进行摄像头多目视觉定位的方法包括以下步骤:
[0240] 步骤1
[0241] 在N(N≥2)个地理位置点拍摄同一个物体X,测第i(i=1~N)个观察点的以下几个量:
[0242] (1)第i个观察点在视频帧图像中显示的位置坐标(ui,vi);
[0243] (2)拍摄点的地理位置是 ,分别是第i个拍摄点的经度,纬度,高度;
[0244] (3)按上述方法测得第i个拍摄点的姿态矩阵Ri;
[0245] (4)第i个拍摄点的内部参数焦距长fi,像主点坐标(cxi,cyi),像主点坐标在计算机视觉和摄影测量中均有定义,在此不赘述。
[0246] 步骤2
[0247] 进一步得到相对于地心的N个姿态矩阵i=1~N
[0248] R0i=RiRvi
[0249] 其中
[0250] 步骤3
[0251] 利用公式
[0252]
[0253] 得到N个拍摄点摄像头光心的地心坐标系坐标T0i={Txi,Fyi,Fzi}T i=1~N其中T T{ΔTxi,ΔTxi,ΔTzi}=RviΔTi
[0254] ΔTi是根据上述方法测得的摄像头光心偏移矢量。
[0255] 步骤4
[0256] 根据
[0257] 拍摄点1的姿态矩阵R01位置[Tx1Ty1Tz1]物体像坐标u1,v1摄像头焦距像素长f1,像主点坐标(cx1,cy1)
[0258] ……
[0259] 拍摄点N的姿态矩阵R0N位置[TxN TyN TzN]物体像坐标(uN,vN)摄像头焦距像素长fN,像主点坐标(cxN,cyN),都满足以下方程:
[0260]
[0261]
[0262] 其中r0iab表示姿态矩阵R0i的第a行第b列的元素值。
[0263] i=1~N一共列2N个方程,解(Xx,Xy,Xz)三个未知数,
[0264] 或采用摄影测量前方交汇方法计算出物体X=(Xx,Xy,Xz)
[0265] 得到地心坐标系坐标(Xx,Xy,Xz);最后由大地测量学公式得到地心坐标(Xx,Xy,Xz)对应的经纬度。
[0266] 若把地球近似一个球可用以下方法计算
[0267] 经度=atan2(Xy,Xx);
[0268] 纬度=asin
[0269] 若将地球近似成椭球,可用大地测量学已有椭球公式进行计算。上述姿态矩阵R还可用于摄像头单目单点或者单目双电视觉定位。可定义局部坐标系是原点在智能机光心,Z轴沿重力方向或垂直于椭球地面指向地球外,X轴指向北,Y轴指向西的坐标系。
[0270] 单目单点地面定位主要包括以下步骤:
[0271] 步骤1
[0272] 根据上述方法计算摄像头的姿态矩阵
[0273] 步骤2
[0274] 摄像头拍摄视频上选取地平面上一点,测得其在视频帧图像中显示的位置坐标(u,v),测得该点在摄像头的内部参数焦距长f,测得像主点坐标(cx,cy),像主点坐标是指摄像头视线中心轴与像平面相交的像点坐标。在计算机视觉和摄影测量里都有定义。主点主要指(1)主视线与透视面的交点;(2)透镜轴上这样两点中的任一点,这两点的关系是从物体任一点指向一主点的光线将从透镜平行射出,而不通过另一主点;(3)航空照相机的透镜光轴与胶片面的交点。透镜轴上的这个主点折算成图像像坐标就是这个主点坐标。
[0275] 本发明实施例中,像主点是摄像头视线中心轴与像平面相交的像点坐标,是相机中心光轴于透镜相交的点转换成的像坐标,地平面上此点在局部坐标系的坐标(X,Y)计算公式如下:
[0276]
[0277] 其中h是摄像头离地面的高度。
[0278] 步骤3
[0279] 通过大地测量成熟方法将局部坐标系坐标(X,Y,-h)转换成经纬度。
[0280] T地心=Ts+RvT([X,Y,-h]T+ΔT)
[0281] 其中Ts是智能机地心坐标,
[0282] ΔT是用上述方法记录智能机摄像头光心相对于GPS定位点的位移矢量。
[0283]
[0284] θs是智能机纬度, 是智能机经度;
[0285] 最后根据地心坐标T地心=[A,B,C],由大地测量学公式得到T地心对应的经纬度。
[0286] 把地球近似为一个球,具体实施方法为:
[0287] 经度=atan2(B,A);
[0288] 纬度=asin(C/(地球半径-h));
[0289] 高度=-h;
[0290] 单目双点测量垂直于地面的物体的位置和高度的方法包括以下步骤:
[0291] 步骤1
[0292] 用智能机摄像头拍摄1张垂直于地面物体的图像,记录下以下几个量
[0293] (1)用上述方法记录摄像头的姿态矩阵R=ΔR×Rg
[0294] (2)记录物体在地面上的垂足在拍摄视频帧图像中显示的位置坐标(u⊥,v⊥)[0295] (3)记录垂直于地面物体的顶部在拍摄视频帧图像中显示的位置坐标(uh,vh)[0296] (4)获取摄像头的内部参数焦距像素长fx,像主点坐标(cx,cy);
[0297] (5)得到摄像头离地面高度h;
[0298] 步骤2
[0299] 计算以下几个量
[0300]
[0301]
[0302]
[0303]
[0304]
[0305]
[0306] 步骤3
[0307] 解下面矩阵方程,得到[X Y H]
[0308]
[0309] 其中(X,Y)是局部坐标系下物体的坐标,H是垂直于地面物体的高度。
[0310] 步骤4
[0311] 通过大地测量成熟方法将物体最高顶点局部坐标系坐标(X,Y,H)转成经纬度。
[0312] T地心=Ts+RvT([X,Y,H]T+ΔT)
[0313] 其中Ts是智能机地心坐标,
[0314] ΔT是摄像头光心相对于智能机GPS或北斗定位点的位移矢量。近似可取T=[000][0315]
[0316] θs是智能机纬度, 是智能机经度;
[0317] 最后根据地心坐标T地心=[A,B,C],由大地测量学公式得到T地心对应的经纬度。
[0318] 把地球近似为一个球,具体实施方法为:
[0319] 经度=atan2(B,A);
[0320] 纬度=asin(C/(地球半径+H));
[0321] 高度=H。
[0322] 本发明实施例的智能机全景影像生成方法包括以下步骤:
[0323] 步骤1.智能机在某一固定点用不同姿态拍摄了n张图像,采用权利要求6的方法得到姿态矩阵分别为Ri,i为0~n-1之间的整数,n为大于1的整数;
[0324] 步骤2.开辟一张宽w高h大小的全景影像;
[0325] 步骤3.扫描全景影像上每一个像素,针对全景图的每一个像素(x,y)进行如下(1)(2)处理
[0326] (1)横坐标x转换成 纵坐标y转换成θ;
[0327] 其中w,h是全景图像的宽,高;
[0328] (2)依据小孔成像公式依据小孔成像公式
[0329]
[0330] 其中 fi为相机i焦距像素长度,(cix,ciy)是相机i的像主点,利用Ri将 转换成映射到每个相机i的像坐标(ui,vi)若(ui,vi)在图像范围内,则将相机i像坐标(ui,vi)处颜色取出,加权渲染到全景图(x,y)处;权重与(ui,vi)到该图像边缘最短距离有关,距离越短权重越小;若无一个相机的(ui,vi)在其图像范围内,渲染透明色或背景色到(x,y)处;扫描完全景图像上所有点填充相应的颜色,即完成全景图像的渲染;
[0331] 具体为依据公式
[0332]
[0333] i=0~n-1
[0334] 其中 fi为相机i焦距像素长度,(cix,ciy)是相机i的像主点坐标
[0335] 将 转换成(u0,v0,…,un-1,vn-1);
[0336] 根据(u0,v0,..,un-1,vn-1)这n组映射在n次拍摄角度图像上的坐标,可以获取到:
[0337] n张影像上取出的颜色C0~Cn-1;
[0338] n个像坐标到相框边缘的距离e0~en-1;
[0339]
[0340] 进一步求各张影像在该像素处的权重wi=ei2/es2
[0341] 其中
[0342] 全景图像上像素(x,y)处的渲染的颜色值是es>0时,渲染 否则渲染一个透明色或者背景色到全景图的(x,y)处;
[0343] 扫描完全景图像上所有点填充相应的颜色,即完成全景图像的渲染;
[0344] 若步骤1结束以后的Ri矩阵不准确,则将Ri或者转换成四元数的结果作为初值,采用LM最小2乘法进行优化,以保证重叠区域对应像素的灰度值差异最小;
[0345] 或者先将全景图像颜色值全部清0,再针对n张图像将全景图像上的相应区每个像素扫描n轮,分n轮依次将颜色值累加在全景图的像素上。这样一次只加载一张图像,可避免内存消耗过大。
[0346] 步骤4全景图像的三维浏览和检索定位
[0347] (A)智能机姿态控制浏览三维全景图像
[0348] 在虚拟场景中以漫游观察者为中心,绘制空心的球体,球体内壁以前述全景图作为纹理进行渲染。方法如下:全景图上的任意像素坐标(x,y)对应了 也就对应了半径为r的球面上的3维坐标 因此将全景图中划分成很多子块组成的网格,每一个网格4个顶点的全景图坐标对应于球面上的4个3维坐标围成的一个瓦片,由此利用智能机上的图形渲染函数对网格里所有的纹理瓦片进行渲染就实现了对整个球体的渲染。
[0349] 通过调节上述测得的智能机姿态矩阵Rg,或者利用上述方法测得智能机上摄像头的姿态矩阵R,来调节漫游观察者浏览球面的姿态。可将全景图未拍摄到部分的ALPHA通道置0。
[0350] 为保证在智能机显示屏上能看到从内部观察球体内壁全景纹理的效果。设定以下几个量:
[0351] (1)观察位置即球心坐标Xd,Yd,Zd;可以就是0,0,0
[0352] (2)观察方向{r31,r32r33}或者用户注视点坐标(Xd+r31,Yd+r32,Zd+r33)[0353] (3)智能机自身向上的方向矢量{-r21,-r22,-r23}
[0354] 其中步骤(2)和(3)中的rij是智能机摄像头姿态R矩阵中的第i行j列,i=2或3,j=1、2或3;
[0355] (B)全景图建库、检索和定位
[0356] 为有效利用存储空间,除采用步骤3(1)中的公式外还可用墨卡托转换公式,[0357]
[0358] 转换成全景图像,保持建库和检索的转换方式一致。
[0359] 本发明通过智能机姿态得到全景图像的优势在于形成了一种基于局部坐标系的统一图像标准。两张全景图像缩放到同样大小进行匹配,比例统一了,X-Y-Z三轴旋转、相机焦距等内参差异都做了统一化处理。比例、旋转、内参不一致这些严重影像图像匹配、检索的问题都得到了解决。匹配过程中主要考虑光照,灰度分布等因素就行了,这样速度、准确性将得到大幅度提高。
[0360] 建库:
[0361] 提取全景图像库中特征点集合,将特征点按其在全景图像上的位置划分网格,每个网格建立一个子库,特征点的描述子按hash表或kdtree二叉树或平衡二叉树的形式存储在对应的子库里,二叉树每一个节点存放了一个特征点的描述子,以及一个指向其对应的全景图索引的编号,建立特征点库;特征点可采用ORB,Harris,Surf,SIFT不考虑旋转、比例的简化版。
[0362] 检索:
[0363] 对于待检索的c≥1张图像,首先将c张图像合成1张全景图像,提取全景图像已渲染区中的特征点N个,对于每一个特征点pi,i=1..N,只在特征库中与其在全景图位置相邻的附近几个特征点子库中进行二叉树检索,相邻子库中找到与pi描述子di最接近的特征点对应的编号的图像ki,记录描述子di与图库中检索出来特征点描述子的距离为ei。给图像ki的权重Wki增加 其中ε是一个很小的正数。
[0364] 经过N个特征的检索得到的图像编号k1,…,kN很可能有重复,假设经过合并以后得到m张全景图像,对应权重是W1~Wm。计算N个图像k相似的相关度M1…Mm选择最大值j*如果Mj*足够大则编号为j*的图像即为初步检索结果。
[0365] 将待检索全景图已渲染区与从库中初步检索的全景图的像素集或积分图像区块像素总和进行相关匹配,相关系数越大图像越相似,当相关系数>0.9时基本认定就是一个全景图像。
[0366] 定位
[0367] 由于全景图像完整反映了某一区域的周边环境,对全景图像的匹配即可实现对区域的定位。编号为i*的图像即为检索结果则说明定位结果是编号为i*的图像所对应的位置。
[0368] 应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。