本发明涉及观测定位领域,特别是一种飞行器观察区域坐标计算方法及系统。
背景技术:
随着飞行器技术的快速发展,飞行器在各个领域的应用也逐渐增多。在一些领域,需要对飞行器观察区域坐标进行多目标实时计算,以满足国土、水文、林业规划或统计等需求。
当前对飞行器观察区域坐标进行计算主要有方式有三类:
方式一,通过观察飞行器经纬高和观察方向与测距装置进行测距的目标定位方法,其中经纬高为经度、纬度以及海拔,该方法需要飞行器配备较高精度激光测距仪,如不具备测距装置则无法实现目标定位。另外,受测距装置的限制,每次只能单点测距,故此方法不适用于多目标定位,不能同时对观察到的全部区域定位,不能满足多目标实时定位要求。
方式二,通过多帧图像共同点的目标定位的方法,该方法不依赖于测距装置,但需要通过多角度观察,获得至少3帧图像和这些图像上至少6个以上的共同点信息来提高地面目标的三维定位精度。其基本工作过程是:装有gps/ins(globalpositioningsystem/inertialnavigationsystem,全球定位系统/惯性导航系统)的侦查平台从目标区域上空飞过,得到一系列图像,并将gps/ins数据和图像数据下传至地面控制站,在地面选取至少3帧非共线目标区域图像,并从中确定至少6个共同点,利用三维坐标计算模型求取目标和共同点的三维坐标。该方法定位由于需要满足三个非线性观察帧的条件,定位计算复杂效率比较低,所以不能满足多目标实时定位的要求,尤其是对于移动目标的定位需求。
方式三,基于已知遥感数据进行图像匹配定位的方法,此方法不依赖已知遥感数据意外的任何信息,缺点也非常明显,已知遥感图像信息,随时间,季节的变化通常非常大,从而难以进行精确匹配而无法定位。此方式亦不能满足多目标实时定位需求。
技术实现要素:
本发明的目的在于:针对现在对飞行器观察区域的坐标进行定位时,不能实现多目标实时定位的问题,提供一种飞行器观察区域坐标计算方法及系统。
为了实现上述目的,本发明采用的技术方案为:
一种飞行器观察区域坐标计算方法,包括以下步骤:
s1:获取地球高程数据,建立世界三维坐标集;
根据飞行器的定位值、偏航角、滚转角和俯仰角,构建所述飞行器的世界姿态矩阵;
s2:根据剪裁矩阵、转移矩阵、所述世界姿态矩阵和所述世界三维坐标集,计算出飞行器的摄像机观察区域的三维坐标集;所述剪裁矩阵通过所述飞行器的摄像机的视野角度值、画面宽度、视锥体最近平面值、视锥体最远平面值以及画面高度构建;所述转移矩阵为四阶单位矩阵;
s3:将所述飞行器的摄像机观察区域的三维坐标集转换为观察区域的经度值、纬度值和海拔值。
优选的,根据飞行器的定位值、偏航角、滚转角和俯仰角,构建所述飞行器的世界姿态矩阵包括以下步骤:
s11:将所述飞行器的定位值转化为飞行器三维坐标pos(x,y,z);
将向量(0,-1,0)叉乘三维坐标pos(x,y,z),得到向量(rx,ry,rz);
将向量(0,-1,0)点乘三维坐标pos(x,y,z),并得到向量角度θ;
s12:根据所述向量(rx,ry,rz)和向量角度θ构建第二旋转矩阵matrotate2;
根据所述第二旋转矩阵matrotate2、预设的移动矩阵mattranslate和预设的第一旋转矩阵matrotate1,构建转换矩阵mattrans;
根据所述偏航角、滚转角和俯仰角,构建局部姿态矩阵matlocalview;
s13:根据所述转换矩阵mattrans和所述局部姿态矩阵matlocalview得到世界姿态矩阵matview。
优选的,所述局部姿态矩阵matlocalview为:
其中,pitch为俯仰角,roll为滚转角,yaw为偏航角。
优选的,所述第二旋转矩阵matrotate2为:
其中,rx、ry、rz为向量(0,-1,0)叉乘三维坐标pos(x,y,z)得到的向量(rx,ry,rz)三个维度的值,θ为向量(0,-1,0)点乘三维坐标pos(x,y,z)得到的向量角度。
优选的,所述将所述飞行器的定位值转化为飞行器三维坐标pos(x,y,z)的公式为:
x=cos(lat/180)·sin(lon/180)·h/r
y=-cos(lat/180)·cos(lon/180)·h/r
z=sin(lat/180)·h/r
其中,lon为经度,lat为纬度,h为海拔,r为地球半径,x、y、z分别为飞行器三维坐标在三维坐标系x轴、y轴、z轴上的坐标值。
优选的,根据所述转换矩阵mattrans和局部姿态矩阵matlocalview得到世界姿态矩阵matview的计算公式为:
matview=(mattrans·matlocalview)-1。
优选的,所述剪裁矩阵matproj为:
其中,width为画面宽度;height为画面高度;fov为视野角度值;f为视锥体最远平面值,n为视锥体最近平面值。
优选的,所述计算出飞行器的摄像机观察区域的三维坐标集的计算公式为:
vclip(xc,yc,zc)=matproj·matview·matmodel·vlocal(xl,yl,zl)
其中,vclip(xc,yc,zc)为观察区域的三维坐标集,matview为世界姿态矩阵,matmodel为转移矩阵,matproj为剪裁矩阵,vlocal(xl,yl,zl)为世界三维坐标集。
优选的,所述将所述飞行器的摄像机观察区域的三维坐标集转换为观察区域的经度值、纬度值和海拔值的计算公式为:
lat=arcsin(zc/(h/r))·180
lon=arcsin(xc/(cos(lat)·(h/r)))·180
其中,h为海拔,lon为经度,lat为纬度,(xc、yc、zc)分别为所述三维坐标所在的三维坐标系的x轴、y轴、z轴上的坐标值,r为地球半径。
一种飞行器观察区域坐标计算系统,包括至少一个处理器,以及与所述至少一个处理器通信连接的存储器;所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述任一项所述的方法。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
本发明通过构建世界姿态矩阵、剪裁矩阵以及转移矩阵,计算出飞行器的摄像机观察区域的三维坐标集,再将飞行器的摄像机观察区域的三维坐标集转化为经纬高,即实现了对摄像机观察区域进行多目标实时定位。现有技术在对目标进行定位需要依赖测距设备,而本发明不依赖于任何测距设备可对目标定位,有效降低飞行器成本。
附图说明
图1是本发明的所述的一种飞行器观察区域坐标计算方法流程图;
图2是本发明构建的地球半径为常量r的地球模型图;
图3是本发明结合高程数据构建的地球地形图;
图4是本发明飞行器观察装置观察地球模型局部的示意图;
图5是本发明所述的一种飞行器观察区域坐标计算系统的结构示意图。
附图标记:310-电子设备;311-处理器;312-存储器;313-输入输出接口;314-电源。
具体实施方式
下面结合附图,对本发明作详细的说明。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
实施例1
如图1所示,本实施例提供一种飞行器观察区域坐标计算方法,该方法主要包括:
获取地球的高程数据,如图2所示,在本实施例中因不涉及长距离值的求取,所以将地球设定为海拔为0的标准球,地球半径为常量r,如图3所示,建立y轴向上的世界三维坐标集系,结合所述高程数据建立地球的模型,所述地球的模型由多个顶点组成,在一些具体的实施例中,采用在地球表面每90米定义一个顶点来描述地球,每个顶点都由一个由xl,yl,zl组成的三维向量来描述,地球表面所有的顶点构成世界三维坐标集vlocal(xl,yl,zl)。
获取飞行器定位系统提供的定位值,在本实施例中采用北斗卫星导航系统或者全球定位系统获取飞行器的定位值,所述定位值包括经度(lon),纬度(lat),海拔(h),并将所述定位值转化为飞行器三维坐标pos(x,y,z),所述转换公式如下:
x=cos(lat/180)·sin(lon/180)·h/r
y=-cos(lat/180)·cos(lon/180)·h/r
z=sin(lat/180)·h/r
其中,lon为经度,lat为纬度,h为海拔,r为地球半径,x、y、z分别为飞行器三维坐标所在的三维坐标系x轴、y轴、z轴上的坐标值。
获取飞行器由姿态系统获取的偏航角、滚转角和俯仰角,姿态参数是相对于飞机所在坐标的相对值,故构造世界姿态矩阵需要将飞行器的局部姿态参与计算,根据所述偏航角、所述滚转角和所述俯仰角构建局部姿态矩阵matlocalview,所述局部姿态矩阵matlocalview为:
其中,pitch为俯仰角,roll为滚转角,yaw为偏航角。
根据所述飞行器三维坐标pos(x,y,z)构建转换矩阵mattrans,所述转换矩阵mattrans的构建过程为:
构造一个经纬度都为0,偏航角、滚转角、俯仰角都为0的矩阵,因偏航为0,所以飞行器三维坐标pos(x,y,z)所在的三维坐标系的z轴指向世界三维坐标系的y轴方向,因此构建沿x轴顺时针旋转90度的第一旋转矩阵matrotate1,所述第一转矩阵matrotate1为:
构建移动矩阵mattranslate,所述移动矩阵mattranslate为:
将向量(0,-1,0)叉乘三维坐标pos(x,y,z),得到向量(rx,ry,rz);
将向量(0,-1,0)点乘三维坐标pos(x,y,z),得到向量角度θ;
根据所述叉乘结果和所述点乘结果构建第二旋转矩阵matrotate2,所述第二matrotate2为:
其中,rx、ry、rz为向量(0,-1,0)叉乘三维坐标pos(x,y,z)得到的向量(rx,ry,rz)三个维度的值,θ为向量(0,-1,0)点乘三维坐标pos(x,y,z)得到的向量角度。
根据所述第一旋转矩阵matrotate1、所述第二旋转矩阵matrotate2和所述移动矩阵mattranslate构建转换矩阵mattrans,所述构建转换矩阵mattrans的公式为:
mattrans=matrotate2·mattranslate·matrotate1。
根据所述局部姿态矩阵matlocalview和所述转换矩阵mattrans构建世界姿态矩阵matview,所述构建世界姿态矩阵matview的公式为:
matview=(mattrans·matlocalview)-1。
如图4所示,获取飞行器观察装置的焦距值、画面宽度、视锥体最近平面值、视锥体最远平面值以及画面高度,将所述焦距值转化为视野角度值,根据所述视野角度值、所述画面宽度、所述画面高度以及设定的近平面值和远平面值构造剪裁矩阵matproj,所述剪裁矩阵matproj为:
其中,width为画面宽度;height为画面高度;fov为视野角度值;f为视锥体最远平面值,n为视锥体最近平面值。
构建转移矩阵matmodel,所述转移矩阵为四阶单位矩阵,所述matmodel为:
在具体实施中,因计算量庞大,因此需要将所述世界三维坐标集vlocal(xl,yl,zl)、所述世界姿态矩阵matview、所述剪裁矩阵matproj以及所述转移矩阵matmodel通过gpu(graphicsprocessingunit,图形处理器)接口导入gpu进行计算,根据所述世界三维坐标集vlocal(xl,yl,zl)、所述世界姿态矩阵matview、所述剪裁矩阵matproj以及所述转移矩阵matmodel,将观察区域外的所有所述顶点裁剪掉,计算飞行器的摄像机观察区域的三维坐标集vclip(xc,yc,zc),所述计算飞行器的摄像机观察区域的三维坐标集vclip(xc,yc,zc)的公式如下:
vclip(xc,yc,zc)=matproj·matview·matmodel·vlocal(xl,yl,zl);
其中,matview为世界姿态矩阵,matmodel为转移矩阵,matproj为剪裁矩阵,vlocal(xl,yl,zl)为世界三维坐标集,vclip(xc,yc,zc)为飞行器的摄像机观察区域的三维坐标集;
主要运算在gpu上运行,采用一般设备即可进行快速运算,进一步的降低定位设备的成本。
将所述飞行器的摄像机观察区域的三维坐标集vclip(xc,yc,zc)的转换为观察区域的经度值、纬度值和海拔值,即实现了对观察区域多目标进行实时定位,其中,转换公式为:
lat=arcsin(zc/(h/r))·180
lon=arcsin(xc/(cos(lat)·(h/r)))·180
其中,h为海拔,lon为经度,lat为纬度,(xc、yc、zc)分别为所述三维坐标所在的三维坐标系的x轴、y轴、z轴上的坐标值,r为地球半径。
如图5所示,本发明还公开了一种飞行器观察区域坐标计算系统,即电子设备310(例如具备程序执行功能的计算机服务器),其包括至少一个处理器311,电源314,以及与所述至少一个处理器311通信连接的存储器312和输入输出接口313;所述存储器312存储有可被所述至少一个处理器311执行的指令,所述指令被所述至少一个处理器311执行,以使所述至少一个处理器311能够执行本实施例所公开的方法;所述输入输出接口313可以包括显示器、键盘、鼠标、以及usb接口,用于输入输出数据;电源314用于为电子设备310提供电能。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。