董浩楠,焦瑞莉,黄敏松
(1.北京信息科技大学 信息与通信工程学院,北京 100101;2中国科学院大气物理研究所 云降水物理与强风暴重点实验室,北京 100029)
云降水粒子形状是云微物理学研究中的重要概念[1]。云粒子形状可影响云粒子自身的散射属性、生长率和下落末速度,而云粒子的散射特性对全球气候、辐射平衡、卫星遥感有重要影响[2]。通常识别云粒子形状的前提是对图像特征值进行判断,所以采集云粒子图像并提取图像特征值十分重要。
目前国内通常使用气象飞机搭载美国粒子测量技术公司(Droplet Measurement Technology)所生产的云粒子成像仪(cloud imaging probe,CIP)和降水粒子成像仪(precipitation imaging probe,PIP)来获取云中降水粒子的信息和图像[3-4]。由于单次采集的数据量非常大,并且数据通常以压缩文件的格式进行存储,所以在后续的粒子分析工作中需对云粒子图像数据解压来复原粒子图像。为识别云粒子形状,在图像复原后还需提取云粒子图像的相关特征值。但目前传统云粒子图像回放软件仅能实现简单云粒子图像回放及信息处理,不能提取云粒子图像特征值和存储相关数据,不利于后续的云微物理学研究[5]。
本文首先分析CIP仪器采集云粒子图像的存储数据原理,利用RLEHB压缩算法的逆过程和矩阵变换实现云粒子图像回放,同时为保证后续特征值提取的准确性,采用形态学处理的闭合操作对解压后的云粒子图像进行内部填充,保证图像的完整性,然后计算Holroyd特征值和凸包特征值等,最后利用Matlab的图形用户界面(GUI)实时性强、界面友好等特点[6-7],建立一个可供反复使用且操作简单的云粒子图像回放及特征值提取的软件,以满足云粒子图像回放、特征值提取和相关数据存储的需求。
云粒子图像使用云粒子成像仪(CIP)进行采集。由于单次采集的云粒子数量非常多,所以在采集过程中CIP数据采用基于游程编码头字节(run-length encoding header byte,RLEHB)的压缩算法并以RLEHB数据结构进行存储。数据压缩后的RLEHB数据结构如表1所示。数据结构中标志位不同取值的意义如表2所示。
表1 RLEHB数据结构
表2 RLEHB数据标志位意义
云粒子图像复原及信息提取首先需根据CIP采集存储的RLEHB数据格式进行反向解压得到原始图像数据和信息数据。然后规定以8字节为一行对解压后的数组进行重新排列,重组后云粒子图像数据格式如图1所示。
图1 解压后云粒子图像数据格式
每个粒子前两行数据分别为一条粒子边界和一条粒子头信息,剩余行数据为粒子的图像信息。粒子边界用于识别一个粒子的开始,使用8字节的AA作为边界的标识。当出现8字节的AA时,就表示从下一行开始显示的是一个粒子头信息和粒子图像数据,直到出现下一个8字节AA,表示该粒子的全部数据已经显示完成,进入下一个粒子的数据。在粒子头信息(8字节)数据中,前16 位数据是粒子序数,随后的40 位数据表示粒子到达的时间,即粒子被探头收录时的时间戳。最后的8 位数据,表示粒子的行数和粒子是否处于景深的标识。
根据粒子边界将单个粒子图像及粒子头信息分别提取。由于图像文件是以帧为单位进行传输的,所以在图像回放时需将帧内多个粒子图像顺序拼接,以实现整帧云粒子图像回放。整帧云粒子图像回放如图2所示。
图2 整帧云粒子图像
云粒子在采样过程中由于仪器自身原因、外界环境原因、粒子自身原因或者粒子与仪器共同作用的原因会导致非自然粒子出现,包括破碎粒子、条纹状粒子、线状粒子和空白粒子等。为了保证云粒子图像准确计算特征值和滤除伪粒子图像,引入形态学处理闭合操作以保证结果的准确性。
闭合操作是一种先膨胀后腐蚀的操作。其中膨胀是指用结构元素扫描图像中的每一个像素,用结构元素中的每一个像素与其覆盖的像素做“与”操作,如果都为0,则该像素为0,否则为1;腐蚀是指用结构元素扫描图像中的每一个像素,用结构元素中的每一个像素与其覆盖的像素做“与”操作,如果都为1,则该像素为1,否则为0。图3为利用结构A对结构B进行闭合操作,利用该操作能填充图像内细小空洞的优点,可将云粒子图像内部细小的空洞进行填充,然后连接相邻像素点,实现云粒子内部和边界的平滑。
图3 形态学处理闭合操作
Holroyd特征值常用来判断云粒子形状,其参数如图4所示。规定x为飞机飞行方向;y为光学阵列方向;Nx、Ny分别为x、y方向上的最大像素点数;d为粒子跨越长度(像素点数);w为粒子宽度(像素点数);r为相关系数;A为方向角度。此外,还有一些关键参数未在图中标出,包括a为粒子图像的面积(像素点数);p为粒子图像的周长(像素点数);F为特定参数,定义为:F=pda(无量纲量);Ntotal为粒子所有像素点数,Nedge为x方向上图像左、右边缘的像素点数。S为特定参数(用于识别霰状粒子),定义为x方向上连续排满的像素点数与Ntotal的比值。
图4 Holroyd特征参数
在云粒子图像中,找出某些点连接成一个多边形,使得这个多边形能把云粒子所有像素点都包含在内,这个凸多边形就叫凸包。采用Graham扫描法求取云粒子图像中的最小凸包,其算法步骤如下:
步骤1 将云粒子图像放置在2D坐标系中,选取云粒子图像轮廓上纵坐标最小点记为A0,通过移动使A0为原点。
步骤2 计算轮廓上各点相对于A0的夹角β。
步骤3 按照从小到大对各点进行顺序排列。若β相同时,则距离A0近的那个点排在前面。
步骤4 1)将排序中的第一个点A0和第二个点A1存入栈中。2)连接栈顶的两个点,得到直线L。3)如果当前点在直线L的左边或在直线L上,就把当前点入栈;如果当前点在直线L的右边,则将栈顶的点出栈,此时重新连接栈顶的两个点,得到新的直线L。4)重复3)直到当前点入栈,然后回到2)。
步骤5 连接栈上所有像素点即可得到云粒子图像的凸包,如图5所示。
图5 云粒子图像的凸包
根据求得的凸包和Holroyd特征值计算表3中可用于云粒子形状识别的相关特征值。
表3 特征值计算公式表
表中:a为粒子图像的面积;p为粒子图像的周长;Ta为凸包面积;Tp为凸包周长;Nx、Ny分别为x、y方向上的最大像素点数。
基于CIP数据的云粒子图像回放及特征值提取软件借助Matlab GUI实现。软件界面主要分为两个部分,分别实现云粒子图像回放和云粒子图像特征值计算的功能。软件的系统框架如图6所示。
图6 云粒子回放及特征值提取软件系统框图
软件运行界面如图7所示。首先读取CIP数据文件,根据弹出的对话框选择任意CIP数据文件,当数据文件读入后可以在显示框内看到与粒子图像文件相关的信息,此时可根据自身需求选择单帧或多帧的云粒子图像进行回放,在对应的文本框内输入帧数并点击按钮即可进入不同模式。在连续回放模式中,软件按照一定的速度自动回放粒子图像并以1帧为单位依次显示。若需进行特征值计算,点击特征值计算按钮即可。在云粒子特征值计算后,粒子图像信息可自动存储生成Excel表格,可供后续的科研需求和数据再加工处理。同样在单帧模式下也可完成特征值计算和存储。
图7 云粒子回放及特征值提取软件界面
本文通过Matlab软件的GUI界面开发了一种云粒子图像回放及特征值提取软件。该软件针对以光电二极管阵列为传感元件的机载云粒子成像仪(CIP)所测云粒子图像,不仅可以实现云粒子图像回放及显示采集过程中的基础信息,如粒子数、粒子到达时间及粒子索引等,还可以提取云粒子图像的特征值(如Holroyd特征值、凸包等相关特征值计算),并引入形态学处理闭合操作实现云粒子内部和边界的平滑,保证图像的完整性。除此之外还能存储云粒子图像及相关信息,以辅助后续的相关云降水物理的科学研究和形状识别相关工作。