刘雪亚,吴振华,吴 瑀,张晓箐,吴少石
(中国飞行试验研究院,西安 710089)
在飞行试验中,机载测试记录的数据主要包括机载二进制数据和机载视频数据[1],机载二进制数据反映飞机飞行过程中设备的工作状态,记录试飞员的操作情况。机载视频[2]是直接抽引的机上各个显示屏的显示结果,由于现有测试设备的限制,机载视频的时间码是在飞行过程中将GPS时间印在视频帧中,实际的视频中不含有时间码。事后数据处理是将机载数据的二进制码转换为工程量数据,课题人员根据各参数的变化趋势以及机载视频该时刻的显示来判断飞机的工作情况。
由于视频时间码难以和工程量结果中时间匹配,因此课题人员在查看数据是只能一边查看文本文件,一边查看视频数据,人工根据时间码将两个软件根据时间对齐来查看各个时刻的飞行数据。由于单架次飞行参数量大,采样率高,以至于最终的结果数据量大。单纯的人工对齐时间增加了数据处理耗时,加大了人工工作量,将目标检测与识别技术应用于飞行试验数据处理,是信息化、智能化建设的主流[3]。
为解决试飞数据处理的问题,本文研究一种视频时间码提取方法,将Canny算子[4]和数学形态学[5-6]中的腐蚀、膨胀操作相结合,能够有效识别机载视频中的时间码,为自动对齐[7]视频数据与工程量结果数据打下基础。
由于机载视频中信息量大,时间码只占据图像帧的一小部分,因此首先要对图像进行灰度化、二值化[8]、分割[9]等预处理操作,然后用Canny算子获取图像的边缘信息,再选择合适的模板大小和形状对图像做腐蚀膨胀操作,分割单个的字符和预先构造的数据集进行匹配[10],选择匹配最高的字符为最终的时间码结果。具体的流程如图1所示。
图1 时间码提取算法流程框图
本文先对视频进行解帧处理转化为单帧的图像,然后将彩色图像转化为灰度图。考虑到机载视频时间码在图像中的固定位置,根据固定的位置来截取视频中的时间码区域。由于图像中时间码区域在边界区域,图像帧的时间码区域与图像内容的交界处较为模糊,有附带影响后续边缘检测的白色线条。如图2所示,红色框中为边界区域。因此在分割时间码的过程中采用最小边界的原则,在分割之后根据现实情况给分割图像的上下边界手动添加几个像素的宽度。通过这一系列操作使得后续边缘检测结果最优。
图2 原始图像(红框为边界区域)
考虑机载视频时间码识别是试飞数据处理中的应用场景,故构建自己的识别数据集。数据集包含0~9十个数字与“:”的二值图,单个数字为27×28的矩阵,整个数据集为37×28×11的三维矩阵。显示如图3所示。
图3 待匹配数据集
传统的边缘检测算子在图像经过高斯滤波[11]后,计算梯度和幅值方向,如式(1)所示,I(x,y)为原始图像,R(x,y)为高斯平滑后图像,δ为标准差,G(x,y)与θ分别为平滑后图像的梯度幅值和方向。
(1)
在过滤了非最大值后,需要人为设定固定的上下阈值,过高或者过低的阈值会导致检测结果丢失边缘信息或者检测出一些虚假边缘。考虑本文时间码分割图像的高对比度,故本文采用基于Otsu方法[12-13]自动确定阈值来完成边缘检测过程。
由于图像中时间码位置的固定性,在分割图像中人为确定图像前景与背景区域,故将图像分割为前景灰度集合C1= {l1,l2,…,lm}和背景灰度级和C2= {l1,l2,…,ln},分别求得前景和背景的灰度中值Ca和Cb,以此作为Otsu算法的上下界。对于选定的阈值{k,Ca (2) (3) 其中pi=ni/MN值为ni的像素在整个图像中的概率。两个类的平均灰度值如式(4)、式(5)所示,整个图像的灰度值如式(6)所示。 (4) (5) (6) 图像背景和目标的类间方差定义为 σ2(k)=P1(k)(m1(k)-mG)2+P2(k)(m2(k)-mG)2 (7) 最佳阈值k*计算如式(8)所示,取常规Canny边缘检测的上下阈值分别为k*和0.5k*来进行双阈值连接。图4是选取最佳阈值进行边缘检测的结果,可以看到清晰的图像边缘。 图4 边缘检测结果图 (8) 形态学方法主要有腐蚀、膨胀[14]、开运算[15]、闭运算4种操作,用膨胀操作可以填充图像中的空像素区域,扩大图像的前景,腐蚀操作可以去掉图像中的毛刺,缩小图像的前景区域。开运算和闭运算是对图像进行腐蚀和膨胀的组合操作(图5)。本文中采用边长为6个像素的正方形B1为核对图像进行闭运算操作后再采用边长为3像素的正方形B2为核对图像进行腐蚀操作,如式(9)所示。经过一系列膨胀腐蚀操作,得到清晰的时间码图像,如图5所示。 图5 形态学滤波结果图 II=((Ic⊕B1)⊖B1)⊖B2 (9) 经过上述的边缘检测与形态学识别,得到最终的时间码序列,按照时间码图像在垂直方向的投影直方图计算图像中各个数字的中心位置以及字符宽度,图5的投影直方图如图6所示。 图6 图5的竖直方向直方图 图6中纵坐标为0的位置是时间码各个字符之间的背景区域,可以看出一共有15个字符,按照字符宽度将图像分为单个的字符。计算各个字符与数据集中模板字符的残差值,则残差最小的值为最终识别字符。如式(10)和式(11)所示,Im(x,y)与Gn(x,y)分别表示分割的第m个字符与模板第n个字符。 (10) (11) 本文实验是基于Window 7操作系统下的Matlab 2015来完成的,数据来源于飞行试验过程中机载抽引视频。通过解帧视频后识别每一帧的固定位置的时间码。接下来依次展现单帧图像识别结果、视频序列图像识别结果以及识别正确率情况。 单帧图像识别结果如图7和图8所示。图7中每一行分别代表分割出来的每个字符与数据集中字符的残差值,从第一列到11列分别是数字1~9,0,“:”这11个字符。图7中每一行为一个字符的识别结果,其中红色框内的数据是待识别字符与该模板字符匹配时的残差最小值,每一行都有一个最小值为最终的识别结果。 图8是筛选之后输出的每个字符的识别结果,识别结果不包括冒号。识别结果为315∶09∶50∶14∶01,即本年度第315天的上午9点50分14秒1毫秒。 图8 单帧视频时间码识别结果图 针对试飞过程中的记载视频数据,首先对视频进行解帧,获得单帧的图像。飞行试验中机载视频帧率为30 FPS,实际处理数据的工程量结果采样率往往比视频帧率高。为满足工程实际应用,更好的展示试验结果,本文对视频进行逐帧解析,并逐帧识别图像帧的时间码。 采用本文的方法遍历所有视频帧,对序列图像依次进行图像预处理、分割、识别等结果。由于一般飞行试验的视频往往在1 h到8 h不等,数据量大。故本文实验结果中截取5 min视频对应的9 000帧图像展示识别结果。为直观定量的展示实验结果,我们将从视频中识别到的时间码的毫秒、秒、分、时各部分依次转换为以毫秒并画出序列图像。实验结果如图9、图10所示。 图9 识别结果毫秒部分(a)和局部放大图(b)曲线 图9(a)是9 000帧图像的识别结果的毫秒部分的展示结果,图9(b)是图9(a)红色框中部分的局部放大结果。从图9(b)中可以看出,曲线部分以30为一周期变化,单个周期内呈直线增长,与视频帧30 FPS的帧率相吻合。图10(a)是9 000帧图像的毫秒、秒以及分转换为毫秒的结果曲线图,图9(b)是红框中部分的局部放大图,可以看出左图整体呈增长趋势,而图9(b)局部放大部分大约以3 ms或者4 ms的增量增长,与视频帧30FPS的帧率相吻合。 图10 识别结果毫秒、秒以及分部分(a)和局部放大图(b)曲线 图11是序列视频帧识别结果的部分展示,分别为日期、时、分、秒、毫秒。由于只能展示部分结果,故日期、时、分、秒部分相同,只有毫秒部分以3或者4的增量增长。与实际视频中结果相同。 图11 序列视频帧时间码识别结果部分展示界面 由于试飞数据对应的帧数量比较大,故在统计正确率的过程比较复杂。为使得统计结果可靠,实际过程中依次比较相邻五帧视频的天、时、分、秒、毫秒部分,并对时、分、秒在59,毫秒在96、97、98、99时作特殊处理,得到识别不正确的帧的数目。 表1中展示了部分实验中视频长度、总帧数、误识别帧数以及正确率的统计结果。可以看出识别的正确率达97%以上,可以满足飞行试验数据处理要求。 表1 识别正确率统计表 本文采用改进的Canny边缘检测算子结合传统的数学形态学滤波来进行飞行试验视频中时间码的识别。采用简化版的Otsu分类方法避免了传统Canny 边缘检测中阈值选取不合适引起的边缘漏检及冗余信息检测等问题。实验结果可以看出,本文的方法识别结果可靠,有效解决了试飞视频中时间码的提取,可为解决视频数据与工程量数据同步问题提供参考。不足之处在于,针对单张图像的识别速度很快,但应用于视频图像,分割方法需要自适应性,识别速度有待于提高。后续将优化识别算法,以匹配视频的播放速度。2.4 数学形态学滤波
2.5 时间码分割与识别
3 实验结果与分析
3.1 单帧图像识别结果
3.2 视频图像识别结果
3.3 识别正确率
4 结论