APP下载

多云天气天空偏振定向方法

2021-09-01万振华陈永台樊元义褚金奎

光学精密工程 2021年7期
关键词:偏振度云层偏振

张 然,蔡 弘,关 乐,万振华,陈永台,樊元义,褚金奎*

(1. 大连理工大学 机械工程学院,辽宁 大连 116023;2. 大连大学 机械工程学院,辽宁 大连 116622)

1 引 言

晴朗天空的偏振模式一般遵循瑞利散射模型。Ramón Hegedüs 发现在部分有云、多雾、烟尘的天气下天空偏振方位角与晴朗天气下也具有类似的分布规律[1]。天空光属于部分偏振光,天空偏振光场的偏振度和偏振电矢量随着太阳位置的变化发生稳定的变化,昆虫正是利用天空偏振光的稳定分布,结合自身复眼的偏振敏感视觉实现了路径导航和定位。

天空偏振导航系统可以分为点源式和图像式。本课题组早期使用点源式导航系统,基于天空任意两点偏振方向矢量叉乘来获取航向角,在晴朗天气下获取航向角可以达到±0.2°[2-5]。由于点源式导航系统局限于测量天空几个点的电矢量,天空中的云层会干扰测量。通过图像式导航系统采集天空图像可以获得更多的天空点的电矢量[6-7]。王玉杰等使用分通道式图像导航系统基于上述方法在晴朗天气下的最大定向误差可以达到0.5°[8],但各相机采集的天空图像不是同一区域,配准存在误差。分焦面式导航系统解决了点源式导航系统和分通道式图像导航系统存在的问题。在CMOS 图像传感器上集成4 个通道的焦平面,可以在同一时刻采集同一片区域的3 个或4 个角度的天空强度图,从而获取天空偏振场图[9]。

利用天空偏振场图获取航向角的算法一般分为两种:一种是基于瑞利散射理论的天空点的偏振方向矢量垂直于太阳方向矢量获取太阳方向与载体体轴的夹角;另一种是识别太阳子午线,确定该线与载体体轴的夹角,然后通过查阅万年历获取航向角。

根据第一种方法,张慧霞等设计了一款偏振光实时定位点源式导航系统,利用多方向的E矢量叉乘求解载体坐标系下太阳方位角[4]。王玉杰等基于支持向量机的分类器检测天空区域,并利用随机一致性方法和天空观测点的偏振方向矢量垂直于太阳方向矢量理论获取太阳方向与载体体轴的夹角,在被建筑物以及大量树木遮挡的晴天下能够提供准确的航向角,均方根误差为1.58°[10];随后,胡小平等又提出了基于偏振度梯度消除图像中的障碍物,设置阈值选取天空区域并基于E矢量叉乘求解载体坐标系下太阳的方位角[11]。

在晴朗天气下偏振方位角图中太阳子午线的对称性非常显著,人们开发了通过识别太阳子午线确定航向角的偏振导航方法。LU 等提出基于霍夫线变换的太阳子午线提取方法,精度达到0.313°[12]。ZHANG 等基于太阳子午线的对称性使拟合的多条轴线两侧的偏振方位角分别相减,根据生成图像中灰度的变化选取合适的对称轴作为太阳子午线[13]。TANG 等提出了一种基于脉冲耦合神经网络对偏振度图滤波的方法,只保留对应的偏振方位角图中的有效区域,并通过最小二乘法拟合太阳子午线。该方法在有少云、树、建 筑 物 遮 挡 时 的 航 向 角 误 差 小 于1°[14]。WANG 等提出了一种基于人工神经网络(POLANN)计算太阳方向的模型,效率较高,但由于大量数据集由仿真图片组成,在实际应用中不具有鲁棒性[15];此外,LIU 等还根据偏振方位角图中∞特征,提出了一种改进的和声搜索算法确定太阳位置[16]。ZHAO 等基于太阳子午线的对称性,提出了一种与国防科技大学相似的算法,在其基础上细分提高了精度[17]。LIANG 等利用支持向量机算法将太阳子午线两边二分类并拟合太阳子午线[9]。本课题组提出一种基于极坐标变换的方法,利用偏振方位角图中偏振信息计算出太阳子午线的相对旋转角度[18],根据方位角梯度幅值和二项积分拟合太阳子午线,在视野中树枝和建筑物遮挡超过80% 时该测量方法依然有效[19]。

上述方法多是在晴朗天气下才有较高的精度,个别算法在多云天气下可以识别出太阳子午线。当天空中有较厚的云层时,瑞利散射模型失效,需要用Mie 散射理论来描述[20]。云层中大量的水滴或冰晶粒子对太阳光的多次散射和吸收造成该区域的偏振度降低,且偏振方位角出现异常[21]。此时,若对较多云层遮挡的目标空域偏振方位角异常像素直接拟合来提取太阳子午线特征,得到的是错误的载体坐标系下太阳方位角的基准信息。为了更准确地获得太阳方向,必须去除云层影响空域产生的异常偏振方位角,再结合瑞利散射理论进行太阳方向矢量的提取。

云主要分为积云、层云和卷云等类型,通过传统的阈值分割图像处理方法很难将白云与蓝天精确地分割,而利用卷积神经网络模型进行地基云图分割则具有很高的精度[22]。Soumyabrata等提出了CloudSegNet 轻量级神经网络模型,并在公共数据集上获得了较好的结果[23]。

本文针对较多云层分布的天气情况,提出了一种利用改进的U-Net 深度卷积神经网络并结合偏振度阈值进行云分割的方法。该方法可以在偏振方位角图中去除有云区域对应的异常像素点,并基于瑞利散射理论提取太阳方向矢量实现天空偏振定向。室外实验结果表明,该方法的偏振定向精度较高,验证了本方法的可行性。

2 载体坐标系下图像式太阳方位角计算模型

2.1 天空偏振场图获取

在实际导航中难免会存在多云厚云天气,云层会占据较大视场,同时云层区域的像素点可能会失效。为了获取更大视场的天空偏振光,选用鱼眼镜头,有助于提取非云区域进行定向。

如图1 所示,实验中使用FUJINON 鱼眼镜头,型号为FE185C046HA-1,视场角为185°,焦距为1.4 mm,光圈为F1.4~F16,相机采用基于Sony IMX250MZR CMOS 的偏振相机PHX050 S-PC。该偏振相机主要由微透镜阵列、偏振片阵列和像素阵列3 部分组成。其中,偏振片阵列包含0°,45°,90°和135°共4 个角度,偏振片上每一角度所在区域对应一个像素点。

图1 天空偏振光获取实验设备及原理Fig.1 Experimental equipment and principle for detection of polarization light of sky

用该偏振相机结合鱼眼镜头采集4 个角度的天空光强图,然后基于斯托克斯矢量公式获取天空偏振场图。I表示偏振光强度,Q表示水平直线方向的偏振光分量,U表示45°直线方向的偏振光分量。

其中:I'(φ)表示光强,即天空强度图每一像素点的灰度值;φ表示入射光与参考轴(载体的体轴)的夹角,为0°,45°,90°和135°;AOP表示天空偏振角,为天空某点的偏振方向矢量与载体(相机)体轴的夹角;DOP表示天空偏振度;AOE表示天空偏振方位角,为天空某点的偏振方向矢量与当地子午线的切线方向的夹角;i,j分别为图像中的行坐标和列坐标,h,w分别表示图像的高和宽。

2.2 载体坐标系下太阳方位角计算

根据瑞利散射理论构建天空偏振模型如图2上半部分所示。aE为P点在观测点坐标系XaYaZa的偏振方向矢量,ϕ为P点的天空偏振方位角,Xc为载体体轴,α,γ分别为天空观测点的方位角和天顶角,方位角的取值为(-180°,+180°),天顶角的取值为(0°,90°),α's表示载体坐标系下太阳的方位角(即太阳方向与体轴的夹角),取值 为(0°,360°),γs表 示 太 阳 天 顶 角,取 值为(0°,90°)。图2 下半部分中,Pi表示在针孔相机模型中天空观测点P对应在CMOS 成像平面上的像素点,而实际上使用鱼眼镜头的相机模型表现为其成像存在较大径向畸变,Pd为P点实际对应的像素点。

图2 天空偏振模型和鱼眼镜头相机模型Fig.2 Sky polarization model and fisheye lens camera model

在相机坐标系OXcYcZc中,天空观测点的电矢量cE表示为:

式中:cRa表示天空观测点坐标系相对于相机坐标系的旋转矩阵,(xPd,yPd)为像素点Pd在平行于相机坐标系的物理坐标系O'X'Y'下的坐标。

由于鱼眼镜头采集的图像存在较大的径向畸变,实际天空观测点对应的偏振方位角的位置发生径向偏移,从而导致太阳方向获取时有较大偏差,需要标定天空观测点与相机光轴的夹角(天顶角γ)以及该观测点实际对应的像素点与光轴中心点(图像中心A')的距离,即像素距离。

图3 为鱼眼镜头天顶角标定模型。固定偏振相机与鱼眼镜头,将LED 点光源与鱼眼镜头的光轴对齐,并绕镜头的光心逆时针旋转,每旋转一次对应的观测点的天顶角γ累加10°并采集图像,共旋转9 次,旋转角度为闭区间[0°,90°],模拟得到半球状的天空分布。每一位置的LED 点光源在图像中对应一个像素点,图中位置A处的LED 点光源在图像中对应着像素点A'。将实际得到的观测点的天顶角γ作为因变量,对应的像素距离作为自变量,得到9 个点:(36.0,10°),(73.0,20°),(110.0,30°),(146.0,40°),(182.0,50°),(219.0,60°),(255.0,70°),(291.1,80°),(327.1,90°)。用matlab 曲线拟合工具箱拟合观测点的天顶角γ与像素距离d之间的映射关系,并将计算出的9 个点的天顶角与实际值的偏差取平均值(-0.016 8),作为偏置项ε,得到:

图3 鱼眼镜头天顶角标定模型Fig.3 Calibration model of zenith angle of fisheye lens

在相机坐标系OXcYcZc中天空观测点P的偏振方向矢量cE垂直于由天空观测点P、太阳S及地面观测点O组成的平面,则cE垂直于OS。天空中所有符合瑞利散射的点在相机坐标系 下表示的电矢量组成矩阵cEsum=[cE1,cE2,...cEn]3×n。理想情况下,cEsumT·cOS=0n×1,但实际中由于存在误差,需对太阳方向矢量cOS做最优估计,其最优估计为(cEsumcEsumT)3×3的最小特征值对应的特征向量[8]。

太阳方向矢量在相机坐标系OXcYcZc中表示 为(Sx,Sy,Sz),则 载 体 坐 标 系 下 太 阳 方 位角α's为:

3 改进的U-Net 神经网络结合偏振度阈值去云模型

3.1 改进的U-Net 神经网络模型

参考Nabil 提出的MultiResUnet 深度神经网络模型[24],并改进了传统Unet 神经网络[25],对偏振相机采集的强度图中的云进行分割。如图4 所示,本文的改进之处为在编码结构和解码结构之间添加了Respath 模块,在编码结构的最底层即图像分辨率降维至25×25 后添加了MultiBlock模块。

图4 改进的U-net 神经网络模型结构Fig.4 Structure of improved U-net neural network model

图4 中的立体方框表示特征图,特征图上边显示的数字表示通道数,特征图下边显示的数字表示图的长宽。该模型左半部分为编码结构,即对输入图像进行多次下采样至某一尺寸特征图;右半部分为解码结构,即对特征图进行多次上采样至与输入图像相同尺寸时输出。图中,BN 操作通过规范化输入数据改变数据分布,在前向传播过程中消除梯度弥散;Dropout 操作通过舍弃部分特征,防止模型过拟合。使用该神经网络进行去云分割的具体算法过程是:首先在该神经网络中输入600×600 的天空灰度图,然后经过卷积池化等操作下采样至尺寸为25×25、通道数为256 的特征图,之后经过转置卷积等操作上采样至尺寸为600×600、通道数为16 的特征图,最后使用一个尺寸为1×1、通道数为16 的卷积核卷积操作并用Sigmoid 激活函数将输出响应的值域压缩到[0,1]之间,得到图中所示的输出图像,白色区域表示云层,黑色区域表示蓝天。

神经网络下采样部分(编码结构)的特征图为图像的低层次特征,包括亮度、纹理等特征;上采样部分(解码结构)的特征图为图像的高层次特征,人眼较难分辨。如果将两者直接连接,可能存在语义差异,因此在连接路径上建立了如图5 所示的Respath 模块。它包含3 个残差结构,能使两者更好的融合。同时,残差结构有助于在后向传播过程中解决梯度弥散问题,Add 操作为图像特征层之间空间区域信息的叠加,使每一维度下图像特征的信息量得到提升。

图5 Respath 模块Fig.5 Respath module

MultiBlock 模块类似于DenseNet 中的DenseBlock[26],如图6 所示。采用密集连接方式,提升了梯度的反向传播效率,Concat 操作为图像特征层之间通道信息的融合,通过特征在通道上的连接实现特征重用,使维度得到了提升,将Add 操作与Concat 操作二者结合,能够同时增加图像的空间区域信息和通道信息。

图6 MultiBlock 模块Fig.6 MultiBlock module

3.2 数据集

数据集采用新加坡南洋理工大学公开的地基云图数据集[27],该数据集中包含1 013 组白天地基云图。为了扩大数据量,以更接近偏振相机采集图片的效果,通过旋转、调整亮度、对比度均衡化和直方图均衡化的图像增强方式将图片扩增到8 844 组。训练集与验证集的比例为7∶3。由于数据集图片本身是RGB 图,而用偏振相机采集的天空图为灰度图,所以在训练时需把所有图转为灰度图,并进行归一化。由于偏振相机采集的天空图以中间圆形部分为主要特征,所以对训练图片做裁剪至尺寸为600×600。图7(a)为预处理后的新加坡天空灰度图,7(b)为其对应的云和蓝天的二值分割图,用该组图作为神经网络预训练的数据集。

图7 数据集Fig.7 Dataset

用偏振相机采集600 张天空强度图,并对每张图手动分割了云和蓝天的二值图,构建一个小样本数据集,样例如图7(c)和7(d)所示。通过旋转、调整亮度和直方图均衡化的图像增强方式将该小样本数据集扩增到7 000 组进行迁移学习。训练集与验证集的比例仍为7∶3。

3.3 参数设置及实验效果

将卷积核的初始化权重设置为'he_normal',损失函数设置为二值交叉熵损失与Dice 系数损失两者结合的方式。训练时,val_loss 连续6 次不下降则学习率降低0.1 倍,val_loss 连续10 次不下降则迭代停止,初始学习率设为1×10-4,优化器用“Adam”。

损失函数中二值交叉熵损失为:

式中:A表示理想的输出值,B表示预测的输出值。对A与B的交集、A和B均取绝对值,smooth设置为1,防止分母为0。B越接近A,dice_loss越小。

图像分割的常用评价函数为Jacard 相似度,公式如下:

式中:A表示理想的输出值,B表示预测的输出值。

实验所用网络模型基于keras 深度学习框架,并 选 用CPU 为Core i9-9960X,GPU 为Ge-Force RTX 2080Ti 的服务器进行训练。实验中将损失函数设置为δ×binary_crossentropy+(1-δ)×dice_loss,预训练时δ=0.5,迁移学习时δ=0.85。神经网络的训练损失Training loss和验证损失Validation loss 随迭代次数的变化如图8 所示,对训练集的评价Training jacard 和对验证集的评价Validation jacard 随迭代次数变化如图9 所示。

图8 损失函数变化Fig.8 Loss function change

图9 评价指标变化Fig.9 Evaluation index change

由图8 和图9 可知,迭代次数达到46 次时训练终止,训练损失为0.017,验证损失为0.096;训练集的评价指标为0.980,验证集的评价指标为0.940。评价指标越接近1 表示预测的效果越接近真实情况。在实际测试偏振相机采集的天空图时,设置神经网络输出图像的阈值为0.5,即像素≥0.5 表示云层,像素<0.5 表示蓝天,如图10(b)所示。

虽然神经网络去云分割达到了很高的精度,但在云的亮度非常低时神经网络的预测效果并不是很好,如图10(b)中圆圈部分所示。在一张图像中某部分云的亮度较其他部分云的低,可以认为该部分云较厚,因为云层越厚,散射越强,透过云层的光强越弱,该区域亮度也越低。通过大量实验发现,该区域的偏振度一般低于0.1,即有:

因此,在中间圆形区域设置偏振度阈值为0.1,如图10(c)所示,可以看到所标区域中的黑点为偏振度≥0.1 的云层,因此,直接设置偏振度阈值分割云和蓝天,效果不佳,所以可通过将神经网络预测的二值分割图与设置偏振度阈值得到的二值图进行或运算,最大限度地去除云层产生的干扰点,如图10(d)所示。

图10 去云算法处理效果Fig.10 De-cloud algorithm processing result

4 测量实验与结果

实验时间为2020 年7 月27 日下午和8 月28日上午,天空晴朗且有多块厚云,在大连理工大学机械东楼楼顶,坐标为(121.538 857,38.886 469),将装有鱼眼镜头的偏振相机固定在三角架上采集天空图像。如图11 和图12 所示(彩图见期刊电子版),第一列为天空强度图;第二列为神经网络预测的二值分割图,白色区域表示云层,黑色区域表示蓝天;第三列为神经网络预测与偏振度阈值结合得到的二值分割图;第四列为偏振方位角图,图中标注了载体坐标系,黄线表示太阳矢量方向,黄色圆圈表示太阳,表示载体坐标系下的太阳方位角;第五列为将第三列取反作为mask 模板与第四列偏振方位角图结合,得到最终的可用于计算载体坐标系下太阳方位角的偏振方位角图。从图中可以看到,云层对应的异常像素点被很好地去除。图中的colourbar 对应第四列和第五列图像。

图11 7 月27 日下午的实验效果Fig.11 Experimental results in afternoon of July 27

图12 8 月28 日上午的实验效果Fig.12 Experimental results in morning of August 28

实验数据如表1 所示。为了验证随机时间的实验效果,没有设置固定的时间间隔;登陆SPA Calculator 网站,通过输入经纬度和时间等信息获得理想太阳方位角,然后计算得到相对转角。未去云时和去云时的误差如图13 和图14所示。将理想太阳相对转角与实际太阳相对转角(通过本文算法获得)作为两个变量计算其均方根误差,设置该均方根误差为载体坐标系下太阳方位角的评价指标。应用本文方法获得载体坐标系下太阳方位角的均方根误差为0.42°,而未去云测得的载体坐标系下太阳方位角的误差最大超过了-140°,而且波动范围很大,主要是较多云层产生的异常偏振方位角对获取载体坐标系下的太阳方位角造成的影响。由此可见,本文方法能够应用于多云天气下的天空偏振定向。

图13 7 月27 日太阳方位角和相对转角的误差曲线Fig.13 Error curves of solar azimuth and relative rotation angle on July 27

图14 8 月28 日太阳方位角和相对转角的误差曲线Fig.14 Error curves of solar azimuth and relative rotationangle on August 28

表1 实验数据Tab.1 Experimental data (°)

续表1 实验数据Tab.1 Experimental data (°)

5 结 论

将改进的U-Net 深度神经网络结合偏振度阈值去云,可以去除在偏振方位角图中云层对应的异常像素点,并基于瑞利散射理论中天空点的偏振方向矢量垂直于太阳方向矢量,获取太阳方向与体轴的夹角,实现天空偏振光导航定向。在实际多云天气下,实验获取载体坐标系下太阳方位角的均方根误差为0.42°,为实际的多云天气下天空偏振光导航定向提供了解决方案。但本文提出的方法还存在一定的局限性,目标空域中只能有云和天空,因为训练神经网络只能用来分割云和天空,若图片中存在房屋、树木等则无法用神经网络解决。所以,要解决更复杂的实际问题,后续工作中需将多种算法组合使用。

猜你喜欢

偏振度云层偏振
基于偏振度的目标微观表面偏振特性分析
偏振纠缠双光子态的纠缠特性分析
乌云为什么是黑色的
基于LabVIEW的偏振调制激光测距测量控制系统
穿透云层的月亮
乘坐飞机
偏振旋转效应在全光缓存器中的应用与实现
基于可调偏振度源验证偏振光谱强度调制系统
自然光在两种介质分界面上反射和折射时的偏振特性讨论
关于自然光在两种介质分界面上反射和折射时的偏振特性讨论