申屠泽男
上海民航华东空管工程技术有限公司
摘要:本文提出了民航气象数据在数据采集周期之间,通过实际采集到的上一周期数据帧以及当前数据帧的数据,利用算法分析两个数据帧各个数据点位的强弱情况以及强弱的变化,自动生成中间的过渡帧。实验结果表明,本文提出的气象数据图像渐变技术,能够解决民航气象数据采集周期间隔较大的缺点,利用插入的中间过渡帧实现气象数据的平滑过渡。
关键词:数据帧;数据强弱;平滑过渡
随着航空业的不断发展,越来越大的航空流量,空中交通管理的压力与日俱增,当遇到恶劣天气时需要更精准地了解到每一个时刻的气象数据变化。传统的气象数据是通过气象雷达进行周期性的观测,得到的周期性的气象图片数据。如果通过算法让周期性的气象数据变得连贯,让用户了解到每一个时刻的气象数据实况,成为了管制用户分析气象数据对当前航路、扇区影响程度的关键。
目前传统的气象OSD(Operation Situation Display)系统往往是通过将雷达获取的NETCDF(Network Common Data Format)数据通过对文件中存储的每一个强度数据块进行提取,生成了该时刻的范围雷达气象图,再将雷达图与对应的采集时间进行展示,让管制人员了解到当前的天气情况。但是天气瞬息万变,目前雷达采集数据的间隔基本在几分钟到几十分钟不等。那么在前后两次数据的间隔时间段内的天气数据就会变得不准确,影响管制人员进行准确的参考。
综合上述的情况可以看出,当前气象数据的展示仍无法满足大部分管制人员日常指挥的需要,本文将针对上述问题,通过对气象数据帧的分析与解析,实现数据变化的连贯性,通过获取前后气象数据的强弱分布、位置,通过算法模型来演算期间的变化过程。
1.图形算法设计原则:
空中管理对气象数据的实时性,准确性要求较高,不准确的气象数据容易对管制人员产生误导,所以算法的设计应该遵循下述的原则:
(1)算法的准确性:由于管制人员对气象数据的准确性要求较高,所以对图像进行处理的算法应当尽量的精细,通过对图片进行强度与位置分级划分,分类讨论,来提高算法对图片数据处理的精度。
(2)算法的时间精度:要实现气象数据的流畅变化,就需要将原本几分钟间隔的气象数据进行切分生成十倍或者几十倍的过渡数据帧,要在保证数据帧变化准确的基础上对数据进行尽可能的划分。
2.图像渐变算法的实现方法
(1)色卡标准的定义
为了保证算法的准确性和时间精度,需要将两帧图片转化为RGB矩阵,以色卡作为辅助参照,首先需要先根据反射率的强度和选择的色卡建立一个标准的矩阵结构用来匹配生成的RGB矩阵:
public static int[][] rgb(){
int[] c = {255,255, 255};
int[] c1 = {221, 221, 221};
int[] c2 = {0, 160, 246};
int[] c3 = {0, 236, 236};
int[] c4 = {0, 216, 0};
int[] c5 = {0, 144, 0};
int[] c6 = {255, 255, 0};
int[] c7 = {231, 192, 0};
int[] c8 = {255, 144, 0};
int[] c9 = {255, 0, 0};
int[] c10 = {214, 0, 0};
int[] c11 = {192, 0, 0};
int[] c12 = {255, 0, 240};
int[] c13 = {150, 0, 180};
int[] c14 = {173, 144, 240};
int[][] reflect= {c,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14};
return reflect;
}
public static double[] fanshelv(){
double[] reflectivity = {0, 2.5, 7.5, 12.5, 17.5, 22.5, 27.5, 32.5, 37.5, 42.5, 47.5, 52.5, 57.5, 62.5, 67.5};
return reflectivity ;
}
(2)RGB矩阵的生成
将获取到的前后两帧图片分别转化为RGB矩阵并与之前定义色卡标准做匹配,解析形成图片与色卡一一对应的目标矩阵
public double[][] imgToMatrix(String path) throws IOException {
BufferedImage img = ImageIO.read(new File(path));
int[] colors = new int[img.getWidth() * img.getHeight()];
img.getRGB(0, 0, img.getWidth(), img.getHeight(), colors, 0, img.getWidth());
double[][] fansheM=new double[img.getWidth()][img.getHeight()];
for(int i=0;i<img.getHeight();i++){
for(int j=0;j<img.getWidth();j++){
int index = img.getWidth()*i+j;
Color color = new Color(colors[index]);
int[] PXcolors={color.getRed(),color.getGreen(),color.getBlue()};
int[][] seka= rgb();
for(int t=0;t<seka.length;t++){
if(Arrays.equals(seka[t],PXcolors)){
fansheM[j][i] = fanshelv()[t];
t=seka.length;
}
}
}
}
(3)过渡矩阵的生成
通过对前后两个RGB矩阵的数值进行比对计算,根据我们需要的时间精度,将RGB的矩阵进行统一的匹配核算,通过对各个数据项进行遍历,生成对应各个时间点的过渡帧-色卡矩阵,再根据算法,将得到的色卡矩阵转换为目标RGB矩阵。
private double[][] diff(double[][] image_1, double[][] image_2) {
double[][] img=new double[image_1.length][image_1[0].length];
for(int i=0;i<image_1.length;i++){
for(int j=0;j<image_1[i].length;j++){
img[i][j]=image_2[i][j]-image_1[i][j];
}
}
return img;
}
(4)过渡帧的生成
通过模型化算法得到我们的目标帧数据之后,我们再将帧数据转化为我们需要的目标过渡图片帧,就可以显著地提高帧密度,实现数据流畅连贯过渡的效果。
3.图像渐变算法的结果测试
本文对所图所示的初始帧进行了测试,通过将两个变化较大,时间跨度较大的数据帧导入到算法模型中并设置时间精度,来验证所述算法的可行性和准确性。通过算法,一共生成了八张过渡数据帧,将得到的过渡数据帧与期间真实采集的中间帧数据进行比对后,发现过渡帧的数据贴合实际数据,算法的解析与数据生成正常。
4.结束语
随着空中交通管理的任务日益艰巨,为管制人员提供更好的数据资源成为的重中之重。通过图形化的算法,能够有效地提高气象数据展示的精度以及密度,从而为管制人员提供更加流畅的体验,通过将气象变化数据和航班飞行数据相结合,能够大大提高管制人员对气象数据的感知度,能够即时了解到气象数据对当前所辖扇区、航路的影响。本文对基于webgl和mapbox的气象数据图像渐变算法进行了实验、论证,证实了算法的可行性,实现了气象数据过渡帧的生成,为后续的气象数据分析以及气象数据展示中都可以提供技术上的支撑。
参考文献
[1]基于WebGL的机载激光雷达点云数据可视化%5B期刊论文%5D-湖南科技大学学报(自然科学版)2012(4)
[2]徐建华. 图像处理与分析[M]. 科学出版社, 1992.
[3]朱秀昌, 刘峰, 胡栋编著.数字图像处理与图像通信[M]. 北京邮电大学出版社, 2002.05.
[4]章霄.数字图像处理技术[M]. 冶金工业出版社, 2005.