一种快速的基于太阳影子信息的定位方法与流程

文档序号:11514506阅读:951来源:国知局
一种快速的基于太阳影子信息的定位方法与流程

本发明涉及一种定位方法,具体涉及一种快速的基于太阳影子信息的定位方法。



背景技术:

现有的技术都是通过网格遍历方法进行太阳影子信息的定位,没有考虑到求解问题可以使用具有启发性的方法进行定位计算,计算的时间复杂度十分巨大计算缓慢。无法在短时间内完成对问题的求解特别是无法适用于移动端的实时求解。



技术实现要素:

本发明的目的是克服现有技术中的不足,提供一种可以快速的完成太阳影子信息的定位方法。

这种快速的基于太阳影子信息的定位方法,包括如下步骤:

1)、用户提交待定位的数据(图片,视频,或者影子长度数组数据);

2)、将用户提供的数据(图片,视频,或者影子长度数组数据)通过三维还原标定算法统一转化为太阳高度角数组数据;

2.1)、对图片进行区域分割;

2.2)、对分割后的有效区域进行二值化去噪处理,将彩色图转化成黑白两色的黑白图;

2.3)、将提取物体的像素长度与影子的像素长度,并且依据相应的像素长度与三维投影公式计算太阳高度角、太阳方位角;

2.4)、然后将转化形成的太阳方向角输出;

3)、建立好求解的数学模型环境;

影子长度显然与纬度、经度、日期,钟时(单位为分钟)等四个变量密切相关;求解拍摄地点的问题转化为如下四参数规划问题;规划的目标是寻找影长的误差平方和最小的x、y、n、t四个参数的最优组合;

s.t.:0≤x≤180.0;0≤y≤180.0;0≤n≤360;0≤t≤1440(1)

其中e代表影长误差的累计平方和,x,y,n代表所求的拍摄地点经度、纬度、日期和钟时,k表示可用数据的个数;g(x,y,n,t)为从图片中提取的影长数据;f(x,y,n,t)代表以x,y,n,t为原料,根据数学公式计算得到的影长,计算公式如下:

f(x,y,n,t)=l/tan(arcsin(sinαsiny+cosαcosycosω))(2)

sinα=0.39795cos[0.98563(n-173)](3)

ω=15*(t+(120°-x)/15°-12)(4)

其中(2)式定义影长为实际杆长与当地时间太阳高度角的比值,l代表图像中有影物体的实际高度;α代表太阳高度角,(3)、(4)式为太阳的赤纬和太阳时角作为太阳高度角的计算公式;式中α代表该日期对应的太阳赤纬,ω代表当时的太阳时角;

4)、利用快速有效的启发式鱼群算法对拍摄位置进行定位;

4.1)、初始化:确定种群规模n,设定人工鱼可视范围,人工鱼步长,拥挤度因子,和人工鱼觅食的最大试探次数。在可行域中随机生成n个个体,并且作为最大试探次数;

4.2)、取最优人工鱼状态及赋值给公告板,如果满意则算法结束;

4.3)、执行聚群操作;

4.4)、执行追尾操作;

4.5)、执行觅食操作;

4.6)、循环返回步骤2.2);

5)、对所有人工鱼的位置进行确定并且比较出最优秀的人工鱼的位置作为最优解;

6)、将最终的最优解,求解过程量绘制过程曲线反馈给用户。

作为优选:步骤2.3)的具体步骤为:oh为木杆,ha为光线,oa为木杆在太阳光照射下形成的影子,δx、δy表示横纵坐标的变化量。toa为oa的投影长度。在假定摄像头到物体距离为j,摄像头的高度为n的情况下,可以得到:

作为优选:步骤4.3)的具体步骤为:人工鱼当前的状态为pa,探测其相邻人工鱼中状态最好的pmax,与伙伴数,如果小于拥挤系数σ,并且ya<ymax,表明其附近存在更值得探索的区域(区域中更有可能找到误差更小的可能经纬度),并且整个人工鱼种群对其探索还不足够,则向pc前进一步:

否则不执行此行为。

作为优选:步骤4.4)的具体步骤为:假设人工鱼当前的状态为pa,探测其邻域的pb位置所计算的影长误差累计平方和eb,与伙伴数n,如果小于拥挤系数σ,并且eb<ea,表明其附近存在更值得探索的区域(区域中更有可能找到误差更小的可能经纬度),并且整个人工鱼种群对其探索还不足够,则向pc前进一步:

否则不执行此行为。

作为优选:步骤4.5)的具体步骤为:当前人工鱼的位置代表了当前探索的经纬度位置,记为pa,进行觅食时,在其视野范围va内随机的选择一个经纬度pb,如果pb位置所计算的影长误差累计平方和eb小于位置所计算的影长误差累计平方和ea,则表明在pb位置更有可能是我们寻找的解,也就是对人工鱼来说更适合其生存,人工鱼会向pb位置移动,通过如下方程:

其中,η为移动的步长,rand()为生成的随机数,表现人工鱼移动的随机性;如果随机选择的位置pb并不能使eb小于ea,那么重新选择pb,直到到达一定次数n,或者成功移动一步。

本发明的有益效果是:鱼群算法能够使其在速度上和精度上都能够达到优秀的水平,拥有快速,稳定并且误差较小的特点,性能优于其他算法。

附图说明

图1为太阳影子形成示意图;

图2为二维图片还原三维信息三视图;

图3为鱼群算法伪码表示图;

图4至图6为搜索次数与鱼群位置示意图;

图7为精确度迭代次数分析图。

具体实施方式

下面结合实施例对本发明做进一步描述。下述实施例的说明只是用于帮助理解本发明。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

1原理概述

快速有效地确定视频或图片的拍摄地点对于司法机关取证,有影物体的自动分类和对gps等其他定位系统进行验证有很大的实际意义。但是现阶段国内外并没有成型的从图片或者连续的真实的视频中提取有效经纬度数据的软件或产品。通过太阳阴影的变化轨迹对拍摄图片、视频的大致位置进行估计的想法,通过有影物体和影子轨迹的几何关系来估计拍摄照片的位置。提出物体拍摄的位置取决于投影物体所在纬度位置以及太阳光朝向与投影平面之间的几何关系。

2算法原理说明

图1所示,如果连续视频的拍摄时间较长,随时间的推移,在水平地面上,太阳光产生的影子会随着太阳的变化而产生长度上和角度上的变化,同时影子的长度和角度变化的量与拍摄地点(即经纬度)有关。所以理论上可以利用影子的变化反推拍摄地点。本申请对数学模型、数据的存储方式进行了简化,采用启发式的鱼群算法代替了传统算法,使模型的运算时间相较传统方法缩短了80%。

3定位数学模型的推导

影子长度显然与纬度、经度、日期,钟时(单位为分钟)等四个变量密切相关。求解拍摄地点的问题可以转化为如下四参数规划问题。规划的目标是寻找影长的误差平方和最小的x、y、n、t四个参数的最优组合。

s.t.:0≤x≤180.0;0≤y≤180.0;0≤n≤360;0≤t≤1440(9)

其中e代表影长误差的累计平方和,x,y,n代表所求的拍摄地点经度、纬度、日期和钟时,k表示可用数据的个数。g(x,y,n,t)为从图片中提取的影长数据。f(x,y,n,t)代表以x,y,n,t为原料,根据数学公式计算得到的影长,计算公式如下:

f(x,y,n,t)=l/tan(arcsin(sinαsiny+cosαcosycosω))(10)

sinα=0.39795cos[0.98563(n-173)](11)

ω=15*(t+(120°-x)/15°-12)(12)

其中(10)式定义影长为实际杆长与当地时间太阳高度角的比值,l代表图像中有影物体的实际高度。α代表太阳高度角,太阳高度角的计算在有详细的介绍,这里不进行赘述。(11)、(12)式为太阳的赤纬和太阳时角作为太阳高度角的计算公式。式中α代表该日期对应的太阳赤纬,ω代表当时的太阳时角。

为了成功地求解该规划,需要从图片或者视频中进行提取使用的数据,于是在物体直立并且物距可估算的假设之下,做如图2所示的坐标长度变换。

其中oh为木杆,ha为光线,oa为木杆在太阳光照射下形成的影子,δx、δy表示横纵坐标的变化量。toa为oa的投影长度。在假定摄像头到物体距离为j,摄像头的高度为n。的情况下,可以得到:

3鱼群算法的实现步骤

鱼群算法是模仿成群的鱼类在觅食时采取的自治体优化的策略,其基本思想是,在鱼类生存的环境中,食物最丰富的地方,往往也是鱼类聚集最多的地方。鱼群算法根据鱼类觅食,聚群,追尾等行为创造出若干即自制又能够进行有效的信息交换的人工鱼。每一个人工鱼的位置都代表了一个有效解,人工鱼生存的水域对应了优化问题的解空间,食物的浓度对应了目标函数的值,通过人工鱼在目标水域中的游动,描述整个的寻优过程。

算法的伪码表示如图3所示:

1)初始化:确定种群规模n,设定人工鱼可视范围,人工鱼步长,拥挤度因子,和人工鱼觅食的最大试探次数。在可行域中随机生成n个个体,并且作为最大试探次数。

2)取最优人工鱼状态及赋值给公告板,如果满意则算法结束。

3)通过觅食,聚群,追尾行为进行每一条人工鱼的各自寻优

4)返回步骤2)

将算法应用到解决视频定位场景的方法如下:

可取区间:

可取区间即为人工鱼的活动水域范围,由于本文所涉数据在中国采集,所以使用东经0~180°北纬0~180°作为可能区间,也就是人工鱼的活动水域。

觅食行为:

当前人工鱼的位置代表了当前探索的经纬度位置,记为pa,进行觅食时,在其视野范围va内随机的选择一个经纬度pb,如果pb位置所计算的影长误差累计平方和eb小于位置所计算的影长误差累计平方和ea,则表明在pb位置更有可能是我们寻找的解,也就是对人工鱼来说更适合其生存,人工鱼会向pb位置移动,通过如下方程:

其中,η为移动的步长,rand()为生成的随机数,表现人工鱼移动的随机性。如果随机选择的位置pb并不能使eb小于ea,那么重新选择pb,直到到达一定次数n,或者成功移动一步。

聚群行为:

考虑到现实中,误差e与经度纬度日期钟时的函数关系在大部分求解空间是连续的,那么在误差较小的经纬度旁边的旁边的到问题的最优解的可能性更大,值得着力去探索。假设人工鱼当前的状态为pa,探测其邻域的pb位置所计算的影长误差累计平方和eb,与伙伴数n,如果小于拥挤系数σ,并且eb<ea,表明其附近存在更值得探索的区域(区域中更有可能找到误差更小的可能经纬度),并且整个人工鱼种群对其探索还不足够,则向pc前进一步:

否则不执行此行为。

追尾行为:

与聚群行为类似,整个种群中的误差最小的经纬度的旁边同样值得去探索。人工鱼当前的状态为pa,探测其相邻人工鱼中状态最好的pmax,与伙伴数,如果小于拥挤系数σ,并且ya<ymax,表明其附近存在更值得探索的区域(区域中更有可能找到误差更小的可能经纬度),并且整个人工鱼种群对其探索还不足够,,则向pc前进一步:

否则不执行此行为。

鱼群算法的求解结果示例:

鱼群算法的搜索结果如图4至图6所示。为了画图的整洁,我们将经度,纬度和日期的三维图像简化为经度、纬度的二维搜索图像。

其中(a)图(b)图(c)图表示开始状态时,经过20次迭代和经过300次迭代时,随机产生的人工鱼所处的位置。在每一张图片中横坐标为经度,纵坐标为纬度,黑色的六边形表示人工鱼的位置,黑色的六角星表示正确的物体的位置。在图中可以清楚地看到当迭代次数达到300次时,已经可以得到优秀的解。

为了更好的分析精确度与迭代次数的关系,精确度与迭代次数的图像如图7:

图片显示,精确度在第五十次收敛前快速增长,达到接近于1的水平。故可以认为鱼群算法对与解决本问题是有效的。

鱼群算法与传统算法的速度比较:

为了表现鱼群算法解决本问题的快速性,通过网格搜索算法,贪婪算法,两段贪婪法与鱼群算法的比较数据来进行说明。

网格搜索算法是将待搜索参数在一定的空间范围中划分成网格,通过遍历网格中所有的点来寻找最优参数。这种方法在寻优区间足够大且步距足够小的情况下可以找出全局最优解。

贪婪算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,贪婪算法不会从整体上考虑算法的优劣性,只能得到某种意义上的局部最优解。

两段贪婪法则对两者的特点进行了融合。第一阶段通过快速的贪婪法确定大概位置,然后使用网格化搜索得到最终的解。

表1三种算法定位结果比较

表格显示,我们将所研究的几种算法分为两类,传统算法(包括网格化搜索算法,贪婪算法,两段贪婪法)和智能算法(包括遗传算法,粒子群算法,鱼群算法)。总的来说传统算法在存在速度缓慢慢的缺陷:其中网格索搜算法虽然在精度上可调,但是运算的时间十分巨大;贪婪算法存在很大的不确定性,其搜索的成功与否没完全取决于其初始位置到最优解之间是否存在局部最优解;两段贪婪法虽然在一定程度上对上述两种算法做出改进,但是在性能上并不能达到理想状态。

智能算法的应用都可以很好的解决本问题,并且解决问题的效果好于传统算法,但是都依赖于相应计算参数的调整,并且一定程度上受到随机性的影响。

三种智能算法横向比较来看遗传算法的收敛误差较小,但是搜索的时间相对较长,并且在试验中可以观察到其对于初始种群的敏感性较高,也就是说对于随机生成的不同初始种群来说,收敛的时间差距较大。

粒子群算法在速度上优于遗传算法,但是其精度存在较大误差。经过参数的调整,我们发现,鱼群算法能够使其在速度上和精度上都能够达到优秀的水平,拥有快速,稳定并且误差较小的特点,性能优于其余两种智能算法。对于本问题的解决可鱼群算法可以在30秒内得出最优解。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1