无人飞行器的飞行参数的测量方法及装置
本申请是2014年4月10日申请的申请号为201410142817.2,名称为“无人飞行器的飞行参数的测量方法及装置”的发明专利申请的分案申请。
技术领域
本发明涉及无人飞行器领域,特别是涉及一种无人飞行器的飞行参数的测量方法及装置。
背景技术
无人飞行器是一种以无线电遥控或自身程序控制为主的不载人飞行器。当无人飞行器在无GPS的情况下需要控制自身的飞行状态,例如悬停时,需要获取无人飞行器的飞行参数(例如飞行速度)以控制无人飞行器的飞行状态。
在无GPS的情况下,一种现有的无人飞行器的飞行参数的测量方法包括如下步骤:提取摄像头传感器获取的图像中简单的特征点后,利用块匹配的方法测量像素速度;最后根据超声波传感器获取的高度和像素速度即可计算得到无人飞行器的飞行速度。
在现有技术中,由于从图像中提取的特征点并不是角点,在计算像素速度时容易出现误差较大甚至完全错误的问题;其次,采用块匹配的方法最小只能测量一个像素的速度,精度较低,会出现当无人飞行器以较低的速度移动时计算得到的飞行速度为零的情况;再次,现有技术在计算出像素速度后才对由于无人飞行器转动引起的像素速度的变化进行修正,其不能完全消除由于无人飞行器转动带来的对像素速度的影响;最后,现有技术的速度的测量范围很小,不能满足实际应用的需求。
发明内容
本发明主要解决的技术问题是提供一种无人飞行器的飞行参数的测量方法及装置,能够实现准确度高、精度高的飞行参数的测量。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种无人飞行器的飞行参数的测量方法,该方法包括:图像传感器获取图像;采集所述无人飞行器的角速度;从当前帧图像中提取角点;根据所述角速度和当前帧图像的角点位置从前一帧图像内搜索对应的角点;根据所述当前帧图像的角点和所述前一帧图像对应的角点获取角点速度;根据所述角点速度获取像素速度;通过高度测量器获取所述无人飞行器的飞行高度;根据所述像素速度、所述无人飞行器的飞行高度和图像传感器中镜头的焦距获取所述无人飞行器的实际速度。
其中,根据当前帧图像的角点位置从所述前一帧图像内搜索对应的角点的步骤包括:获取图像以及通过陀螺仪采集所述无人飞行器的角速度;根据当前无人飞行器的所述角速度预估当前帧图像中各角点在前一帧图像中的预定区域;根据当前帧图像的角点位置从所述前一帧图像中的预定区域内搜索对应的角点。
其中,根据所述像素速度、所述无人飞行器的飞行高度和图像传感器中镜头的焦距获取所述无人飞行器的实际速度的步骤包括:根据所述角速度获取由于转动导致的转动像素速度;通过所述角点速度获取的所述像素速度减去转动导致的所述转动像素速度获取所述无人飞行器由于平动引起的平动像素速度;根据所述平动像素速度、所述无人飞行器的飞行高度和图像传感器中镜头的焦距获取所述无人飞行器的实际速度。
其中,步骤:根据所述平动像素速度、所述无人飞行器的飞行高度和图像传感器中镜头的焦距获取所述无人飞行器的实际速度是通过根据所述平动像素速度、所述无人飞行器的飞行高度、图像传感器中镜头的焦距、以及算法执行的频率将平动像素速度转化为无人飞行器的实际速度,来完成。
其中,所述的方法进一步包括一步骤:判断计算出来的实际速度是否合理;其中,通过四条标准判断计算出来的实际速度是否合理,四条标准具体为:当前帧图像和前一帧图像之间的时间间隔内获取的飞行高度是否发生跳变,当前帧图像和前一帧图像之间的时间间隔内根据所述角速度积分得到的无人飞行器转动的角度是否在预定范围内,从当前帧图像或前一帧图像中提取的角点总数是否达到预定数量,接近正确的像素速度的角点的百分比是否达到预定要求。
其中,在计算无人飞行器的实际速度的过程中,当四条标准同时得到满足时,则可以判断计算得到的实际速度为合理的速度。
为解决上述技术问题,本发明采用的另一个技术方案是:提供一种无人飞行器的飞行参数的测量装置,该装置包括:图像传感器,用于获取图像;陀螺仪,用于采集所述无人飞行器的角速度;高度测量器,用于获取所述无人飞行器的飞行高度;处理器,与所述图像传感器、所述陀螺仪和所述高度测量器均电性连接,所述处理器用于执行计算机指令以从所述图像传感器获取的当前帧图像中提取角点,根据所述角速度和当前帧图像的角点位置从前一帧图像内搜索对应的角点,根据所述当前帧图像的角点和所述前一帧图像对应的角点获取角点速度,根据所述角点速度获取像素速度,根据所述像素速度和所述高度测量器获取的所述无人飞行器的飞行高度、和图像传感器中镜头的焦距获取所述无人飞行器的实际速度。
其中,所述处理器根据当前无人飞行器的所述角速度预估当前帧图像中各角点在前一帧图像中的预定区域,并根据当前帧图像的角点位置从所述前一帧图像中的预定区域内搜索对应的角点。
其中,所述处理器根据所述平动像素速度、所述无人飞行器的飞行高度、图像传感器中镜头的焦距、以及算法执行的频率将平动像素速度转化为无人飞行器的实际速度。
其中,所述处理器用于执行计算机指令以进一步判断计算出来的实际速度是否合理;其中,所述处理器通过四条标准判断计算出来的实际速度是否合理,四条标准具体为:当前帧图像和前一帧图像之间的时间间隔内获取的飞行高度是否发生跳变,当前帧图像和前一帧图像之间的时间间隔内根据所述角速度积分得到的无人飞行器转动的角度是否在预定范围内,从当前帧图像或前一帧图像中提取的角点总数是否达到预定数量,接近正确的像素速度的角点的百分比是否达到预定要求。
其中,在计算无人飞行器的实际速度的过程中,当四条标准同时得到满足时,则可以判断计算得到的实际速度为合理的速度。
其中,所述高度测量器为超声波传感器、红外传感器、激光传感器或微波器
与现有技术相比,本发明根据角点、所述无人飞行器的飞行高度和图像传感器中镜头的焦距来计算飞行器的飞行参数,提高了飞行参数测量的准确度和测量精度。
附图说明
图1是本发明实施例的无人飞行器的飞行参数的测量装置的结构示意图。
图2是本发明第一实施例的无人飞行器的飞行参数的测量方法的流程图。
图3是本发明第二实施例的无人飞行器的飞行参数的测量方法的流程图。
具体实施方式
在说明书及权利要求书当中使用了某些词汇来指称特定的组件。所属领域中的技术人员应可理解,制造商可能会用不同的名词来称呼同样的组件。本说明书及权利要求书并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的基准。下面结合附图和实施例对本发明进行详细说明。
图1是本发明实施例的无人飞行器的飞行参数的测量装置的结构示意图。如图1所示,该装置包括:一图像传感器10、一陀螺仪20、一高度测量器30和一处理器40。
图像传感器10用于根据第一预定频率获取图像。在本实施例中,图像传感器优选为MT9V034,其支持的最大分辨率为752×480,第一预定频率优选为50Hz(赫兹)。
陀螺仪20用于根据第二预定频率采集无人飞行器的角速度。在本实施例中,第二预定频率为高频频率,优选为1KHz(千赫兹)。
所述高度测量器30用于获取无人飞行器的飞行高度。具体来说,在本实施例中,所述高度测量器30为超声波传感器,所述超声波传感器的一个探头朝向地面发出频率大约为300-500KHz(千赫兹)的超声波,当超声波接触到可以反射超声波的地面后发生反射,反射波被同一探头或者超声波传感器的另一个探头接收后,超声波传感器测量发射超声波与接收到反射波之间的时间差,然后根据空气中超声波的传播速度(一般为340米/秒)计算得到超声波传感器与地面之间的距离。可以理解的是,所述高度测量器30也可以为其他测量装置,如红外传感器、激光传感器或微波器等,并不限于本实施例。
在本实施例中,所述处理器40为嵌入式处理器,所述处理器40与图像传感器10、陀螺仪20和高度测量器30均电性连接。具体来说,所述处理器40为Cortex M4处理器,其通过DCMI接口或LVDS接口与图像传感器10连接、通过I2C接口与陀螺仪20连接、通过UART接口与高度测量器30连接。可以理解的是,所述处理器40也可为其他型号的嵌入式处理器,或者为其他处理器,并不限于本实施例。
所述处理器40用于从图像传感器10获取的当前帧图像中提取角点,根据陀螺仪20采集的当前无人飞行器的角速度预估当前帧图像中各角点在前一帧图像中的预定区域,根据当前帧图像的角点位置从前一帧图像中的预定区域内搜索对应的角点,根据当前帧图像的角点和前一帧图像对应的角点获取角点速度,根据角点速度获取像素速度,并根据像素速度和高度测量装置30获取的无人飞行器的飞行高度获取无人飞行器的实际速度。应该注意的是,当所述陀螺仪20检测到无人飞行器转动时,所述处理器40根据所述陀螺仪20返回的角速度计算出由于转动导致的转动像素速度,根据角点速度获取的像素速度减去转动导致的转动像素速度后即可得到无人飞行器由于平动引起的平动像素速度;最后根据高度测量器30获取的飞行高度和平动引起的平动像素速度即可计算得到无人飞行器的实际速度。
优选地,处理器40为支持单指令多数据指令集(Single Instruction MultipleData,SIMD)的处理器。一般来说,SIMD指令集为Thumb指令集的子集。在本实施例中,所述处理器40利用SIMD指令集对多个像素点进行同步计算,以执行从当前帧图像中提取角点、根据当前帧图像的角点位置从前一帧图像中的预定区域内搜索对应的角点以及根据所述当前帧图像的角点和前一帧图像对应的角点获取角点速度的操作。采用SIMD指令集可以大大提高上述操作执行的效率,从而大大减少上述操作执行的时间,从而提高飞行参数测量的精度。
在本实施例中,所述处理器40从图像传感器10获取的当前帧图像中提取角点的操作具体为:首先,所述处理器40对从图像传感器10获取的当前帧图像进行金字塔分层。接着,所述处理器40求取金字塔分层后位于金字塔塔顶的当前帧图像的顶层图像层中各像素点沿水平方向和沿垂直方向的灰阶梯度。其中,在计算灰阶梯度的过程中,为了提升计算速度,可以利用SIMD指令集对多个像素点进行同步计算,例如,利用数组特性将地址连续的4个字节拼接为一个32位整数以使用SIMD指令集进行计算,计算速度可以提升四倍。随后,所述处理器40根据沿水平方向和沿垂直方向的灰阶梯度获取当前帧图像的顶层图像层对应的积分图。其中,在计算积分图的过程中,可以利用Thumb指令集提高积分图计算的速度,例如,可以利用Thumb指令集中的指令_SMLABB、_SMLABT、_SMLATB、_SMLATB在一个时钟周期内完成16位整数的乘加计算,从而提高积分图计算的速度。最后,处理器40根据积分图获取当前帧图像的顶层图像层中各像素点的Harris得分并根据Harris得分的大小提取当前帧图像的角点,其中,角点为Harris得分大于预定阈值的像素点。
在本实施例中,所述处理器40还根据陀螺仪20采集的当前无人飞行器的角速度预估当前帧图像中各角点在前一帧图像中的预定区域的操作具体为:首先,所述处理器40对前一帧图像进行金字塔分层。接着,所述处理器40在当前帧图像和前一帧图像的时间间隔内积分陀螺仪20采集的角速度,获取无人飞行器在该时间间隔内的转动角度。随后,所述处理器40根据转动角度计算当前帧图像中的各角点在前一帧图像层的顶层图像层上相对应的像素移动距离。最后,处理器40根据像素移动距离估计当前帧图像中各角点在前一帧图像的顶层图像层中的预定区域。
在本实施例中,处理器40根据当前帧图像的角点位置从前一帧图像中的预定区域内搜索对应的角点的操作具体为:首先,处理器40从前一帧图像中提取角点;接着,处理器40在前一帧图像中判断与当前帧图像中各角点对应的预定区域内是否存在角点;再通过金字塔光流算法在前一帧的预定区域搜索与当前帧角点对应的角点。
在本实施例中,处理器40根据当前帧图像的角点和前一帧图像相对应的角点获取角点速度的操作具体为:首先,处理器40根据当前帧图像中的各角点和前一帧图像的相对应的角点依据金字塔光流法获取各角点在顶层图像层中的速度。接着,所述处理器40根据各角点在顶层图像层的速度依据金字塔光流法依次获取各角点在分层后其它各图像层中的速度,其中,角点在分层后位于金字塔塔底的图像层中的速度即为角点速度。
在本实施例中,处理器40根据角点速度获取像素速度的操作具体为:首先,处理器40获取各角点的角点速度的均值作为第一均值。接着,处理器40判断各角点的角点速度与第一均值的相关性。随后,处理器40获取与第一均值正相关的各角点的角点速度的均值作为第二均值,其中,第二均值即为像素速度。
在其它实施例中,处理器40根据角点速度获取像素速度的操作也可以具体为:处理器40获取各角点的角点速度的直方图并对直方图进行低通滤波,其中,滤波后直方图得到的众数即为像素速度。
图2是本发明第一实施例的无人飞行器的飞行参数的测量方法的流程图,图2所示的方法可由图1所示的飞行参数的测量装置执行。需注意的是,若有实质上相同的结果,本发明的方法并不以图2所示的流程顺序为限。如图2所示,该方法包括如下步骤:
步骤S101:获取图像以及采集无人飞行器的角速度。
在步骤S101中,由图像传感器10根据第一预定频率获取图像,由陀螺仪20根据第二预定频率采集无人飞行器的角速度。
步骤S102:从当前帧图像中提取角点。
在步骤S102中,可以由处理器40利用Kitchen-Rosenfeld角点检测算法,Harris角点检测算法、KLT角点检测算法或者SUSAN角点检测算法从当前帧图像中提取角点,其中,角点可以理解为与相邻像素点相比灰度发生明显变化的像素点。
步骤S103:根据当前无人飞行器的角速度预估当前帧图像中各角点在前一帧图像中的预定区域。
在步骤S103中,由处理器40通过对当前帧图像和前一帧图像的时间间隔内采集到的角速度进行积分计算来获取无人飞行器在该时间间隔内的转动的角度,接着根据转动的角度来获取无人飞行器在当前帧图像和前一帧图像的时间间隔内各角点由于无人飞行器的转动所导致的像素移动距离,继而根据像素移动距离即可估计出当前帧图像中各角点在前一帧图像中的预定区域。
步骤S104:根据当前帧图像的角点位置从前一帧图像中的预定区域内搜索对应的角点。
在步骤S104中,预定区域可以为方形区域,也可以为其它形式的区域,在此不作限制。预定区域的大小也可按照实际情况进行设置,例如,当需要提高角点提取准确度时可以选择较小的预定区域。
在步骤S104中,首先,由处理器40利用Kitchen-Rosenfeld角点检测算法、Harris角点检测算法、KLT角点检测算法或SUSAN角点检测算法提取前一帧图像中的角点。接着,由处理器40在前一帧图像中判断与当前帧图像中各角点对应的预定区域内是否存在角点;再通过金字塔光流算法搜索在前一帧的预定区域内是否存在与当前帧角点对应的角点。
步骤S105:根据当前帧图像的角点和前一帧图像对应的角点获取角点速度。
在步骤S105中,可以由处理器40采用金字塔光流法或块匹配光流法根据当前帧图像的角点和前一帧图像对应的角点获取角点速度。其中,块匹配光流法中块匹配的方式还可以为绝对差值和(sum of absolute distance,SAD)和差的平方和(sum of squareddistance,SSD)。
步骤S106:根据角点速度获取像素速度。
在步骤S106中,可以由处理器40采用如下两种方法根据角点速度获取像素速度:
第一种方法:首先,获取各角点的角点速度的均值作为第一均值。接着,判断各角点的角点速度与第一均值的相关性。其中,若角点的角点速度与第一均值为正相关,则判断其接近正确的像素速度,否则判断其偏离正确的像素速度。最后,获取与第一均值正相关的各角点的角点速度的均值作为第二均值,其中,第二均值即为正确的像素速度。
第二种方法:首先,获取各角点的角点速度的直方图,其中,直方图包括沿水平方向和沿垂直方向的一维直方图。接着,对直方图进行低通滤波,其中,滤波后的直方图得到的众数即为像素速度,众数可以理解为直方图中数据集中出现频率最多的角点速度。
步骤S107:根据像素速度和无人飞行器的飞行高度获取无人飞行器的实际速度。
在步骤S107中,由处理器40根据角速度获取由于转动导致的转动像素速度,通过角点速度获取的像素速度减去转动导致的转动像素速度获取无人飞行器由于平动引起的平动像素速度,根据平动像素速度和无人飞行器的飞行高度获取无人飞行器的实际速度。
其中,根据平动像素速度和无人飞行器的飞行高度获取无人飞行器的实际速度的步骤具体为:由高度测量器30获取无人飞行器的飞行高度,并对获取的飞行高度进行中值滤波与低通滤波后,进一步根据滤波后的飞行高度、图像传感器10中镜头的焦距、图像传感器10的内部参数以及算法执行的频率将平动像素速度转化为无人飞行器的实际速度。
其中,当无人飞行器的实际速度被计算出来后,还可以通过四条标准判断计算出来的实际速度是否合理。其中,四条标准具体为:当前帧图像和前一帧图像之间的时间间隔内高度测量器30获取的飞行高度是否发生跳变,当前帧图像和前一帧图像之间的时间间隔内根据陀螺仪20采集的角速度积分得到的无人飞行器转动的角度是否在预定范围内,从当前帧图像或前一帧图像中提取的角点总数是否达到预定数量,接近正确的像素速度的角点的百分比是否达到预定要求。其中,在计算无人飞行器的实际速度的过程中,当四条标准同时得到满足时,则可以判断计算得到的实际速度为合理的速度。
另外,在步骤S102、步骤S104以及步骤S105中,可以利用处理器的单指令多数据指令集对多个像素点进行同步计算,以提高上述各步骤的计算效率,减少计算的时间。
通过上述实施方式,本发明第一实施例的无人飞行器的飞行参数的测量方法通过从当前帧图像中提取角点,接着根据角速度和当前帧图像中的角点估计前一帧图像对应的角点,随后对当前帧图像的角点和前一帧图像对应的角点进行适当的处理来确定像素速度,最后根据像素速度和无人飞行器的飞行高度获取无人飞行器的实际速度。与现有技术相比,本发明根据角点计算飞行器的飞行参数,以及将角速度后补偿改为预补偿,提高了飞行参数测量的准确度和测量精度。
图3是本发明第二实施例的无人飞行器的飞行参数的测量方法的流程图,图3所示的方法可由图1所示的飞行参数的测量装置执行。需注意的是,若有实质上相同的结果,本发明的方法并不以图3所示的流程顺序为限。如图3所示,该方法包括如下步骤:
步骤S201:获取图像以及采集无人飞行器的角速度。
在步骤S201中,由图像传感器10根据第一预定频率获取图像,进一步通过DCMI接口或LVDS接口将获取到的图像发送给处理器40。其中,图像传感器10优选为MT9V034,其支持的最大分辨率为752×480,第一预定频率优选为50Hz(赫兹)。
具体来说,以设置图像的分辨率为480×480为例来说,由图像传感器10根据第一预定频率获取分辨率为480×480的图像后,为了满足处理器40的内存的限制,对分辨率为480×480的图像进行硬件下采样以获取分辨率为120×120的图像,进一步通过DCMI接口或LVDS接口将分辨率为120×120的图像发送给处理器40。当然,以上数值仅为举例说明,本发明并不限于上述数值;下文中所列数值也同理。
由陀螺仪20根据第二预定频率采集无人飞行器的角速度,进一步通过I2C接口将采集到的角速度发送给处理器40。其中,第二预定频率为高频频率,优选为1KHz(千赫兹)。
处理器40优选为支持单指令多数据指令集的处理器,例如,Cortex M4处理器。具体来说,Cortex M4处理器支持Thumb指令集,其中,SIMD指令集为Thumb指令集的子集。另外,Cortex M4处理器带有硬件浮点计算单元(Float Point Unit,FPU),可大大提高浮点计算的处理速度。
步骤S202:对当前帧图像进行金字塔分层。
在步骤S202中,由处理器40通过高斯下采样或中值下采样对当前帧图像进行金字塔分层,其中,分层的层数可以根据实际情况进行选择。
承接前述举例,当处理器40获取到分辨率为120×120的当前帧图像后,通过高斯下采样或中值下采样将当前帧图像分成三层图像层。其分别为:位于金字塔塔顶的图像层,记为顶层图像层,其分辨率为30×30;位于金字塔中间的图像层,其分辨率为60×60;以及位于金字塔底层的图像层,其分辨率为120×120。
步骤S203:求取金字塔分层后位于金字塔塔顶的当前帧图像的顶层图像层中各像素点沿水平方向和垂直方向的灰阶梯度。
在步骤S203中,承接前述举例,由处理器40在当前帧图像的分辨率为30×30的顶层图像层中计算各像素点沿水平方向的灰阶梯度Ix和沿垂直方向的灰阶梯度Iy。
灰阶梯度可以理解为用二维离散函数描述图像时,对二维离散函数求导得到的值。其中,灰阶梯度的方向位于图像灰度的最大变化率上,其可以反映图像边缘上的灰度变化。
灰阶梯度可以为相邻像素点的像素值的差值,即:Ix=P(i+1,j)-P(i,j),Iy=P(i,j+1)-P(i,j)。灰阶梯度也可以为中值差分,即Ix=[P(i+1,j)-P(i-1,j)]/2,Iy=[P(i,j+1)-P(i,j-1)]/2。其中,P为像素点的像素值,(i,j)为像素点的坐标。灰阶梯度也可以为采用其它计算公式,在此不做限制。
其中,在计算灰阶梯度Ix和Iy的过程中,为了提升计算速度,可以利用SIMD指令集对多个像素点进行同步计算,例如,利用数组特性将地址连续的4个字节拼接为一个32位整数以使用SIMD指令集进行计算,计算速度可以提升四倍。
步骤S204:根据沿水平方向和垂直方向的灰阶梯度获取当前帧图像的顶层图像层对应的积分图。
在步骤S204中,承接前述举例,由处理器40根据各像素点的灰阶梯度Ix和Iy获取当前帧图像的分辨率为30×30的顶层图像层对应的积分图,进一步根据积分图计算顶层图像层中各像素点的Ix2,Iy2和IxIy的值。
其中,在计算积分图的过程中,可以利用Thumb指令集提高积分图计算的速度,例如,可以利用Thumb指令集中的指令_SMLABB、_SMLABT、_SMLATB、_SMLATB,在一个时钟周期内完成16位整数的乘加计算,从而提高积分图的计算速度。
步骤S205:根据积分图获取当前帧图像的顶层图像层中各像素点的Harris得分并根据Harris得分的大小提取当前帧图像的角点。
在步骤S205中,承接前述举例,当前帧图像的分辨率为30×30的顶层图像层中各像素点的Harris得分根据如下公式进行计算:
其中,H为Harris得分,det(M)为矩阵M的行列式,tr(M)为矩阵M的迹,即矩阵M特征值之和,λ为预先设定的常数,矩阵M中的Ix2、Iy2以及IxIy的求和计算在预先定义的方块区域内进行。
在计算得到各像素点的Harris得分后,由处理器40对各像素点的Harris得分进行极大值抑制,以提取相对不重复的角点。极大值抑制具体的实现方法为:首先,由处理器40对各像素点的Harris得分进行排序,排序的方式例如可以采用堆排序。接着,提取排序后Harris得分大于预定阈值的像素点,其中,Harris得分大于预定阈值的像素点即为角点。最后,按照角点的Harris得分从大到小的顺序,检查角点的预定方形范围内是否有其它角点,若有,则判定预定方形范围内的其它角点为无效角点并忽略掉。
其中,在计算Harris得分的过程中,若涉及到浮点的计算,可以利用FPU完成浮点计算,由此提高Harris得分的计算精度和计算速度。
步骤S206:对前一帧图像进行金字塔分层。
在步骤S206中,对前一帧图像的金字塔分层与步骤S202中对当前帧图像的金字塔分层类似,前一帧图像的分层层数和分层后每层图像层的分辨率与当前帧图像的均相同,为简洁起见,在此不再赘述。
步骤S207:在当前帧图像和前一帧图像的时间间隔内积分采集到的角速度,以获取无人飞行器在该时间间隔内的转动角度。
在步骤S207中,由处理器40积分高频的角速度采样,采样频率优选为1KHz(千赫兹),从而计算得到当前帧图像和前一帧图像的时间间隔内无人飞行器转动的角度。
陀螺仪20采样后的角速度通过硬件接口I2C传递至处理器40,其中,由于I2C接口高速、稳定的传输特性,可以实现处理器40对角速度的高速读取。进一步,配合陀螺仪20的高速的角速度采样,处理器40可以获取到范围大、精度高的角速度的数值。
步骤S208:根据转动角度计算当前帧图像中各角点在前一帧图像的顶层图像层上相对应的像素移动距离。
在步骤S208中,承接前述举例,由处理器40根据转动角度计算当前帧图像中各角点在前一帧图像的分辨率为30×30的顶层图像层上相对应的像素移动距离。其中,当前帧图像中各角点是在当前帧图像的分辨率为30×30的顶层图像层上提取出来的。
步骤S209:根据像素移动距离估计当前帧图像中各角点在前一帧图像的顶层图像层中的预定区域。
在步骤S209中,承接前述举例,由处理器40根据像素移动距离估计当前帧图像中各角点在前一帧图像的分辨率为30×30的顶层图像层中的预定区域。
步骤S210:根据当前帧图像的角点位置从前一帧图像中的预定区域内搜索对应的角点。
在步骤S210中,承接前述举例,由处理器40根据当前帧图像的角点位置从前一帧图像中的预定区域内搜索对应的角点为:由处理器40提取前一帧图像中的角点,其中,前一帧图像中各角点是在前一帧图像的分辨率为30×30的顶层图像层上提取出来的。接着,由处理器40在前一帧图像的分辨率为30×30的顶层图像层中判断与当前帧图像中各角点对应的预定区域内是否存在角点;再通过金字塔光流算法搜索在前一帧的预定区域搜索与当前帧角点对应的角点。
步骤S211:根据当前帧图像中的各角点和前一帧图像的各角点依据金字塔光流法获取各角点在顶层图像层中的速度。
在步骤S211中,承接前述举例,由处理器40计算当前帧图像中角点以及前一帧图像中对应的角点在预定方形区域内像素点的差值,继而根据当前帧图像中角点的预定方形区域内各像素点沿水平方向和沿垂直方向的灰阶梯度依据金字塔光流法计算各角点在分辨率为30×30的顶层图像层中的速度。
其中,若求取的速度为浮点数,为了计算的准确性,则首先需要在前一帧图像的各角点的周围插值出一个预定方形区域,然后进行上述的计算步骤。
其中,在依据金字塔光流法计算的过程中,可以利用Thumb指令集提高计算的速度,例如,可以利用Thumb指令集中的指令_SMLABB、_SMLABT、_SMLATB、_SMLATB,在一个时钟周期内完成16位整数的乘加计算,从而提高计算的速度。
步骤S212:根据各角点在顶层图像层的速度依据金字塔光流法依次获取各角点在分层后其它各图像层中的速度,其中,角点在分层后位于金字塔塔底的图像层中的速度即为角点速度。
在步骤S212中,承接前述举例,由处理器40首先根据各角点在分辨率为30×30的顶层图像层中的速度估计各角点在分辨率为60×60的图像层中的初始位置,然后依据金字塔光流法获取各角点在分辨率为60×60的图像层中的速度,接着根据各角点在分辨率为60×60的顶层图像层中的速度估计各角点在分辨率为120×120的图像层中的初始位置,最后依据金字塔光流法获取各角点在分辨率为120×120的图像层中的速度。其中,角点在分辨率为120×120的图像层中的速度即为角点速度。
步骤S213:根据角点速度获取像素速度。
步骤S214:根据像素速度和无人飞行器的飞行高度获取无人飞行器的实际速度。
在本实施例中,步骤S213和步骤S214与图2中步骤S106和步骤S107类似,为简洁起见,再次不赘述。
通过上述实施方式,本发明第二实施例的无人飞行器的飞行参数的测量方法通过金字塔图像方法从当前帧图像中提取角点,接着根据角速度和当前帧图像中的角点估计前一帧图像中对应的角点,随后对当前帧图像的角点和前一帧图像对应的角点根据金字塔光流法来确定像素速度,最后根据像素速度和无人飞行器的飞行高度获取无人飞行器的实际速度。与现有技术相比,本发明根据角点计算确定无人飞行器的飞行参数,以及将角速度后补偿改为预补偿,提高了飞行参数测量的准确度和精度。同时,本发明使用金字塔分层的方法,提高了无人飞行器的飞行参数测量的范围。进一步,本发明使用支持单指令多数据指令和FPU的处理器,提高了无人飞行器的飞行参数的计算速度和计算精度。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。