太阳影子定位研究
摘 要
本文研究的是太阳影子定位问题,通过建立物体太阳影子和相关参数的关系
模型,计算得到所需的参数值。
针对问题一,建立影子长度和各参数关系模型。首先对时间进行校正,求得
时角和赤纬角,再利用上述已求得的参数求出太阳高度角。并且修正了大气折射
对太阳高度角的影响。然后利用修正后的太阳高度角,通过杆长和影长的三角关
系,画出直杆的太阳影子长度随各参数的变化曲线,得到影子长度关于各个参数
的变化规律。而天安门广场直杆太阳影子长度变化曲线见图 5-6。
针对问题二,由于直杆影子定位方法和投影日晷在原理上相同,建立投影日
晷模型。时间校正后,利用式(6-3)将其换算为经度,求得的经度值为 E
''30'1
然后利用投影日晷中一对相似几何关系,建立得到关于纬度值的一元非线性方
程,利用粒子群算法求解此方程,从而得到纬度值为 N
,位置大概在海
南岛的东北角。
''6'15
111
18
。
,N
''26'58
70
''33'41
20'
70
,N
115
'25'
''33'41
36
''26'38
'2' 56'
,N
'29'
12'
115
针对问题三,我们建立与问题二相同的投影日晷模型,在比问题二多了一个
变量的情况下,用粒子群算法求解非线性方程组,从而得到最后结果为:附件 2:
结果一,日期为 2015 年 7 月 1 日,位置大概在塔吉克斯坦和中国边境附近
);结果二,日期为 2015 年 7 月 19 日,位置大概在印度
(E
37
)。附件 3:结果一,日期为 2015 年 11 月
吉德罗的市区(E
,N
23
);结果二,日期为 2015 年
7 日,位置大概在山东省德州市(E
12 月 3 日,位置大概在河南省商丘市(E
33
);结果三,日
期为 2015 年 12 月 20 日,位置大概在广东省揭阳市(E
)
针对问题四,首先读入序列视频,用 ROI 以 1 分钟为步长抽取获得 41 个图
像样本,再用边缘检测(CANNY)得到样本中的边缘点,接着用霍夫变换找到包
含线点最多的直线段,提取线段顶点。在图像坐标系向世界坐标系的转换中,根
据灭点获得摄像机外参数矩阵和主点,再根据灭点、摄像机外参数矩阵和主点的
相互关系求得焦距,进而求得一系列摄像机参数,利用摄像机参数和一系列几何
关系得到图像坐标系到世界坐标系的旋转矩阵和偏移量,根据旋转矩阵和偏移量
求的样本中杆长和直杆影长的准确像素值,再根据像素值和真实长度的比例关系
求的样本直杆影长。然后沿用问题二的投影日晷模型求出经度,再建立正午太阳
照射模型解出纬度,得出位置在内蒙古东部(E
)。在拍摄日
期未知的情况下,沿用第三问的模型和方法,仍然能求出拍摄地点和日期。
'58'
''26'28
54'
115
118
'48
44
''24'41
,N
23
9'
'54'
,N
关键词:投影日晷模型、粒子群优化算法、投影提取、世界坐标系
1
一、问题重述
如何确定视频的拍摄地点和拍摄日期是视频数据分析的重要方面,太阳影子
定位技术就是通过分析视频中物体的太阳影子变化,确定视频拍摄的地点和日期
的一种方法。
1. 建立影子长度变化的数学模型,分析影子长度关于各个参数的变化规律,
并应用你们建立的模型画出 2015 年 10 月 22 日北京时间 9:00-15:00 之间天安门
广场(北纬 39 度 54 分 26 秒,东经 116 度 23 分 29 秒)3 米高的直杆的太阳影子
长度的变化曲线。
2. 根据某固定直杆在水平地面上的太阳影子顶点坐标数据,建立数学模型
确定直杆所处的地点。将你们的模型应用于附件 1 的影子顶点坐标数据,给出若
干个可能的地点。
3. 根据某固定直杆在水平地面上的太阳影子顶点坐标数据,建立数学模型
确定直杆所处的地点和日期。将你们的模型分别应用于附件 2 和附件 3 的影子顶
点坐标数据,给出若干个可能的地点与日期。
4.附件 4 为一根直杆在太阳下的影子变化的视频,并且已通过某种方式估
计出直杆的高度为 2 米。请建立确定视频拍摄地点的数学模型,并应用自己的模
型给出若干个可能的拍摄地点。
如果拍摄日期未知,请根据视频确定出拍摄地点与日期。
二、问题分析
对于问题一,需要建立影子长度模型。由于“北京时间”并不是北京(东经
116.4°)地方的时间,所以需要将“北京时间”转换为北京天安门广场的时间,
即可求得时角 )
( 。然后由当前日期换算出日期序号 )(n ,求得赤纬角 )( 。再利
用上述已求得的参数求出太阳高度角 )
( 。由于大气折射现象的存在,对太阳高
度角进行了修正。由于杆长和影长存在三角关系,故利用修正后的太阳高度角画
出 3 米高的直杆的太阳影子长度的变化曲线。
对于问题二,需要建立投影日晷模型。为了求解经度,首先进行时间校正,
在“北京时间”已知的情况下必须进行两种校准值计算:平衡时间和经度时间偏
差。时间校正后,再利用时间与经度的换算关系将其换算为经度。作出投影日晷
与影子顶点轨迹图,经过分析得出关于纬度 )( 的一元方程。由于粒子群算法不
依赖初始点的选择,有比较强的全局搜索能力和较快的收敛速度,故利用粒子群
算法求解此方程,从而得到纬度。
对于问题三,经分析发现它比第二问增加了一个未知量,而附件中给了 21
个时间点,每个时间点可列一个关于日期和纬度的方程,所以可以将问题二的非
线性方程多加几组时间点转化为非线性方程组来求解。所以问题三沿用问题二模
型,用粒子群算法解非线性方程组得出结果。
对于问题四,需要从视频中获取杆长和直杆影长信息,需要先对视频进行读
入,用 ROI 抽取得到一系列样本,再用边缘检测(CANNY)得到一系列边缘点,
边缘点并不一定是直杆影子顶点,因此采用霍夫变换来寻找影子顶点并提取。由
于图像坐标系和世界坐标系不一致,所以需要推导出图像坐标系到世界坐标系的
旋转矩阵和偏移量,根据灭点获得摄像机外参数矩阵,再根据灭点、摄像机外参
2
数矩阵和主点的相互关系求得焦距,进而求得一系列摄像机参数,从而获得旋转
矩阵和偏移量,得到了样本中杆长和直杆影长的确定像素值,再根据像素值和真
实长度的比例关系求的样本影长。求出实际影长后,经度沿用问题二的求法可顺
利求出。对于纬度,因为知道了杆长,所以可以建立相对简单的正午太阳照射模
型,利用太阳高度角最大时影子最短的原理建立方程,求出纬度。当日期未知时,
和问题三情况相同,可以沿用问题三模型求解。
三、模型假设
1. 各地点均在北半球;
2. 镜头畸变为微小量,相机偏斜系数为零。
四、符号说明
st
st
1
2
L
l
Et
Ot
A
1m 、 2m 、 3m
K
wR
mR
当地太阳时
表示“北京时间”
表示东经 120°
表示当地经度
时角
赤纬角
太阳高度角
当地的纬度
修正后的太阳高度角
直杆长度
影子长度
平衡时间
经度时间偏差
太阳方位角
灭点
摄像机外参数矩阵
世界坐标
图像坐标
3
五、问题一的模型建立与求解
5.1 影子长度模型建立与求解
5.1.1 时间校正
时间的计量以地球自转为依据,地球自转一周,计 24 太阳时,当太阳达到
正南处为 12:00。钟表所指的时间也称为平太阳时[2](简称为平时),我国采用
东经 120°经圈上的平太阳时作为全国的标准时间,即“北京时间”。“北京时
间”并不是北京(东经 116.4°)地方的时间,所以需要将“北京时间”转换为
)的时间(已知经度东增 1°,
北京天安门广场(北纬
时间增加 4 分钟):
624539
9232
,东经
116
s
t
t
60/)
s
(4
1
2
(5-1)
其中 st 表示当地太阳时(单位:小时), st 表示“北京时间”, 1 表示东经 120°,
2 表示当地经度。
5.1.2 太阳高度角的求解
⑴时角
时角[2]是以正午 12 点为 0 度开始算,每一小时为 15 度,上午为负下午为正,
即 10 点和 14 点分别为-30 度和 30 度。因此,时角的计算公式为
15
st
12
(度)
其中 st 为太阳时(单位:小时)。
⑵赤纬角
赤纬角[2]也称为太阳赤纬,即太阳直射纬度,其计算公式近似为
45.23
sin
2
284
365
n
(度)
(5-2)
(5-3)
其中 n 为日期序号,例如,1 月 1 日为 1n ,3 月 22 日为 81n
⑶太阳高度角
。
太阳高度角[3]是太阳相对于地平线的高度角,这是以太阳视盘面的几何中心
和理想地平线所夹的角度。太阳高度角可以使用下面的算式,经由计算得到很好
的近似值:
sin
sin
sin
cos
cos
cos
(5-4)
其中为太阳高度角,为时角,为当时的太阳赤纬,为当地的纬度。
5.1.3 太阳高度角的修正[4]
由于大气层中存在水蒸气、二氧化碳和尘埃,其密度与外太空的真空并不相
同,因此当太阳光从外太空的真空传入大气层时,必将发生折射,导致利用以上
公式计算出的太阳高度角存在一定误差,故需要进行修正。
由图 5-1 所示的太阳光大气折射示意图可以看出,当太阳光进入大气层时会
4
发生折射,理论高度角
90
R
90
i
。
图 5-1.太阳光大气折射示意图
根据斯涅耳定律可以得出修正后的太阳高度角 ',其计算公式为:
nri
sin
sin
i
r
sin(
90
sin
)
r
其中 rin 为空气折射率(值为 1.0003), H 为理论高度角。
因此,可得出考虑大气折射影响的太阳高度角 h 为:
)
)
90
rin
arcsin
sin(
sin(
r
90
arcsin
90
rin
(5-5)
(5-6)
(5-7)
5.1.4 影子长度的求解
如图 5-2 所示,光线经过直杆最高处时得到影子顶点,l 表示影子长度,L 表
示直杆长度, h 表示修正后的太阳高度角。
经过平面几何分析得公式:
图 5-2.直杆影子关系图
l
L
tan(
)
5
(5-8)
5.2 影子长度关于各个参数的变化规律
由以上公式分析可知,影响影子长度的参数包括:太阳时 st 、日期序号 n 、
当地的纬度。分别使其中两个变量为定值,求影子长度与另一变量之间的变化
规律。用 MatLab 画图如下:
7
6.5
6
度
长
子
影
5.5
5
4.5
4
3.5
8
9
10
11
太 阳 时
12
13
14
15
图 5-3.影子长度随太阳时变化曲线图
图 5-4.影子长度随日期变化曲线图
图 5-5.影子长度随纬度变化曲线图
6
5.3 结果分析
求得太阳影子长度的变化曲线如图 5-6。
图 5-6.影子长度随时间变化曲线图
从图 5-6 可以看出,曲线的最低点不在“北京时间”12 时处,而是要晚些,
这是校正了时间后的结果,最低点坐标为(12.3,3.83)。
六、问题二模型的建立与求解
6.1 投影日晷模型建立
分析题目可知,问题二需要建立应用太阳影子顶点坐标确定直杆所处地点的
数学模型。由直杆影子来定位的方法和投影日晷在原理上相同,都是利用垂直杆
的投影来反映时间地点等参数。投影日晷的指时针是垂直的,而其时间线是赤道
日晷的时间线在地平面的投影[14]。因此可以判断出投影日晷是一个椭圆,在这种
日晷的设计中,长轴方向指东西,短轴方向指向南北。
6.1.1 时间校正
日晷反映的是当地时间而非标准时间,除非日晷经过了校准。为了获得当地
时间,在“北京时间”已知的情况下必须进行两种校准值计算[1]:
⑴平衡时间( Et )
校准值的产生是由于地球公转轨迹不是一个圆而是一个椭圆,并且它的旋转轴与
其旋转平面不是垂直的,另外,太阳与地球不是统一旋转的。这些误差导致了一
年中的日晷时间的变化。这个重要的校准值最大可以产生早于或者晚于四分之一
小时的误差,因此被称作平衡时间( Et )。通过查阅资料[5]得到下表:
表 6-1. 平衡时间随日期变化表
Feb1
+14
Jun1
-1
Feb15 Mar1 Mar15
+15
+10
Jul15
Jun15
+6
+13
Jul1
+4
0
Apr15
Apr1
+4
Aug1 Aug15
+6
+4
0
Jan15
+9
日期 Jan1
平衡
+4
时间
日期 May1 May15
平衡
-2
-3
7
时间
日期 Sep1
平衡
时间
0
Sep15
-5
Oct1
-10
Oct15
-14
Nov1 Nov15
-15
-14
Dec1
-9
Dec15
-3
由于表 6-1 只展示了每月两次的平衡时间,为了求出测量当日的平衡时间,
需要拟合出全年的平衡时间与日期序号 n 的五次多项式回归方程:
y
5137699
x
9.79573877
10
-
2429065
1.76457948
11-
x
307
1.43382684
6.78066
10
10
699352
5.82659372
10
2-
2
x
4
x
10
-4
3
x
5
-
-10
-7
2.225213
(6-1)
⑵经度时间偏差( Ot )
第二个校准值的产生是当地的经度需要与东经 120°偏差。如果日晷位于东
经 120°的西部(东部),那么日晷的指示时间将晚于(早于)“北京时间”。
根据附录一中给出的直杆影子顶点坐标求出各时间点对应的直杆影长,并拟
合出影长关于“北京时间”的非线性回归曲线。
图 6-2. 直杆影长拟合图
如果是影长关于当地时间的的回归曲线图,曲线的对称轴会出现在 12 时处。
而从图 6-2 中可以看出,曲线的对称轴位于“北京时间”12.6 时处,故当地时间
晚于“北京时间”0.6 小时,即
6.1.2 经度确定
6.0
0
。
h
t
由于投影日晷是一个椭圆,在这种日晷的设计中,长轴方向指示东西轴,短
轴方向指向南北轴,投影日晷的位置沿着短轴移动,如图 6-1 所示。因此,具有
时间一致对应关系的一天内的直杆影子顶点轨迹如果投影到水平平面上,将得到
一个二次曲线。二次曲线的对称轴位于南北方向指示轴上,也就是投影日晷的短
轴。
8