姜 鑫,陈武雄,聂海涛,朱 明,郝志成
(1. 中国科学院 长春光学精密机械与物理研究所,吉林 长春 130033;2. 重庆嘉陵华光光电科技有限公司,重庆 400700)
在风云变幻的今天,适应世界海洋形势变化,洞察海洋安全发展趋势,提升海洋环境的监视能力,对于我国经略海洋事业,显得尤为重要[1]。卫星等航天遥感手段已经在海洋环境监测中发挥了重要的作用,但其却难以满足对于时间响应要求快速的应急动态海洋监测任务[2]。航空遥感因其具备机动快速的响应能力,特别适合于海洋生态环境和突发事件的监测[3]。因此,实现航空遥感影像的实时舰船目标检测具有重要的实际应用价值。
舰船目标检测主要包括两个步骤:海陆分割和舰船检测[4]。首先,舰船目标属于海上目标,因此当遥感影像中出现陆地区域时,为避免由于陆地环境结构复杂,影响后续舰船目标检测的准确率,造成虚警,需要对遥感影像进行海陆分割的预处理操作,分离海洋区域和陆地区域,减弱环境的影响。之后,仅在海洋区域内进行舰船检测,并输出最终的检测结果,如舰船目标在遥感影像中的坐标位置,面积大小,长度和宽度等信息。
传统的海陆分割方式利用先验已知的海岸数据库,首先根据地理坐标信息找到遥感影像相对应的陆地模板,再利用模板匹配技术将遥感影像中的陆地区域与陆地模板进行匹配,最终完成海陆分割[5]。这种方案对于特定地理位置、特定场合的海陆分割可以实现较为理想的效果,但是在实际工程应用中,人工采集标定陆地模板难度巨大,且面对突发事件时,侦察飞机飞入新的区域,其海域、陆地模板难以获得,利用模板匹配来进行海陆分割更加具有不可操作性。目前,阈值分割法因其简单、高效的特点,在工程中得到了广泛的应用。
舰船检测大体上可以分为基于传统特征的检测方法和基于深度学习的检测方法,其中传统特征包括灰度特征、纹理特征、形状特征等,该类方法实现起来快速,简单,容易实现,但鲁棒性差[6];基于深度学习的检测方法不需要人工定义特征,但其事先需要预知大量的舰船训练数据库,实际检测时如果出现未被标定过的舰船,容易被错误分类;同时,深度神经网络参数较多,检测速度较慢,难以满足实时处理系统的要求[7]。
实际工程应用中,实时舰船目标检测应综合考虑航空遥感影像的数据特点和应用场景等多方面因素,来选择合适的算法[8]。目前航空遥感相机大多已经配备了光电传感设备,由于要满足数据存储和实时图像处理等多方面需求,采集的目标图像往往是数据量相对较小的灰度影像。基于此,受机上实时处理软硬件限制,在不进行航空遥感图像精确几何校正的情况下,本文重点针对航空遥感灰度影像,对海陆分割和舰船检测两大问题展开了研究,利用灰度信息对遥感影像进行自适应阈值分割,结合形态学算子和孔洞填充技术,实现海陆分割;利用舰船几何结构特征进行直线段检测,结合K均值密度聚类技术,完成舰船目标检测,算法可以满足机上实时处理的自动、准确、快速的需求。
将遥感影像中的陆地区域和海洋区域进行分割,屏蔽或去除陆地区域,将检测范围限定在海洋区域,称为海陆分割过程。精准的海陆分割至关重要,可以有效地缩小后续目标检测范围,简化检测复杂度,提高检测的速度和效率。
阈值分割法作为传统的图像分割方法,在海陆分割任务上也得到了广泛应用,如直方图谷底法[9]、最大类间方差法[10]等,该类方法从海面区域和陆地区域具有不同的灰度、纹理等特征的角度出发,确立分割阈值,经过二值化处理,实现海陆分割。但这些阈值分割法自适应性较差,比如对于最大类间方差分割法来说,其要求海洋和陆地的灰度直方图具有双峰特性,通过计算直方图的波谷阈值,再将一幅遥感影像分割成海洋和陆地两大块。但实际应用中,航空相机采集图像时受光照、环境、噪声等多方面因素的影响,很难保证采集的影像具有双峰特性;同时,最大类间方差分割法会对每幅图像都进行分割,当航空相机采集的影像中全为海洋区域或全为陆地区域时,最大类间方差分割法并不适用。因此,本文充分考虑了海洋区域和陆地区域在灰度特征上的差异,提出了一种根据图像灰度特征变化的自适应阈值分割方法,并结合形态学算子和孔洞填充技术,实现了航空遥感影像的海陆分割。海陆分割的具体流程如图1所示。
图1 海陆分割流程图Fig.1 Flow chart of land sea segmentation
在航空遥感影像中,相较于陆地区域,海洋区域最显著的特征就是表面灰度分布均匀,即从遥感影像局部统计特性的角度来讲,海洋区域的统计均值与方差,在其局部区域内具有相似性[11]。从数学上讲,灰度均值表示了局部范围内像素点的亮暗程度,灰度方差表示了局部范围内像素点灰度值变化的剧烈程度。灰度均值大,表示局部区域内亮度大;
灰度均值小,代表局部区域亮度小;灰度方差大,代表局部区域内波纹抖动大,变化较大;灰度方差小,表示局部区域内波纹抖动小,比较平静[12]。因此,对于陆地区域来说,区域内环境错综复杂,区域的灰度方差值较大,区域内不同像素点的灰度均值也会体现出一定的差异;对于海洋区域来说,区域内具有局部相似性,区域的灰度方差值较小,区域内所有像素点的灰度均值也会具有一致性。基于此,本文考虑利用灰度均值与灰度方差两个变量,根据图像本身的灰度信息自适应调整海陆分割阈值,完成海陆的粗分割。具体操作步骤如下:
对遥感影像中的每个像素点(x,y),以其为中心取大小为d×d的滑动窗口H={(m,n)|x-d/2≤m≤x+d/2,y-d/2≤n≤y+d/2},计算该滑动窗口内所包含像素点的灰度均值和方差,并将计算结果当作像素点(x,y)的灰度均值和方差,并依次遍历遥感影像中的每个像素点。记像素点(x,y)的灰度均值和方差计算结果分别为Ave(x,y)和Var(x,y),计算公式如下:
(1)
(2)
其中:F(m,n)表示像素点(m,n)的灰度值。接着,计算整幅影像的灰度方差均值Varave,公式如下:
(3)
其中:M和N分别表示影像的垂直分辨率和水平分辨率。对于影像中的像素点(x,y),如果该点的灰度方差值大于整幅影像的灰度方差均值,同时存在该点的灰度均值与周围邻域像素点的灰度均值相差较大,则将该点判定为陆地区域,否则判定为海洋区域,数学上表示为满足以下两个条件:
Var(x,y)>Varave,
(4)
(5)
依次遍历遥感影像中的每个像素点,依据上述准则将像素点判定为海洋区域或陆地区域,完成海陆的粗分割。
完成海陆粗分割后,影像中的海洋区域和陆地区域均会出现一定的断裂和空洞情况,因此本文利用形态学算子和孔洞填充技术完成连接和填补。
利用形态学中的膨胀操作连接分散的陆地,将陆地区域连接成一个或几个大的连通区域。本文利用3×3的结构元素,扫描影像中的每一个像素点,用结构元素与其覆盖的二值图像做“或”操作,使得边界完成了向外部的扩张。
陆地中也存在具有局部相似性的区域,比如小型湖泊、田地、草原等[12],这些区域在进行海陆粗分割时往往被误认为是海洋区域,因此本文考虑利用区域生长的方法填充陆地孔洞。
区域生长方法是根据事先定义的准则,将相似或同类像素点聚合成一个大区域的过程[13]。其生长过程是从一个像素点开始,将与该生长点性质相似的相邻像素点进行合并,并形成新的生长点,重复此过程直到不能继续生长为止[14]。本文考虑将属于海洋区域的像素点进行区域生长,具体的生长步骤如下:
(1)扫描整幅影像,找到第一个属于海洋区域的像素点,记为(x0,y0);
(2)以(x0,y0)为中心,考虑(x0,y0)的8邻域像素(x,y),若(x,y)为海洋区域的像素点,则将(x,y)与(x0,y0)合并,同时将(x,y)压入堆栈;
(3)从堆栈中取出一个像素点,将其视为(x0,y0)返回步骤(2);
(4)当堆栈为空时,返回步骤(1);
重复步骤(1)~步骤(4),直到图像中所有属于海洋区域的像素点均有归属,生长结束。
接着,统计生长过后各个独立联通区域的像素点数目,结合图像分辨率的大小和先验信息设定一个像素点数目的阈值,将小于该阈值的独立联通区域归为陆地区域,完成陆地孔洞填充。
通过膨胀操作连接分散的陆地区域后,需要执行一定次数的腐蚀操作,以完成海岸线的刻画,保证海岸线的精度不受影响。类似地,本文利用3×3的结构元素,扫描影像中的每一个像素点,用结构元素与其覆盖的二值图像做“与”操作,完成边界向内部收缩的过程,同时还可以消除小且无意义的区域。值得注意的是,腐蚀操作的次数可以略少于膨胀操作的次数,一是可以减低算法的复杂度,提高运算速度和效率,二是可以人为地适当扩大陆地区域,以减少海岸边由于水纹、杂波等因素对后续舰船目标检测时提取特征造成的影响。
与陆地区域类似,海洋区域内舰船、小岛等目标不具有局部相似性,因此在进行海陆粗分割时易被误认为是陆地区域[9]。同样地,本文考虑利用区域生长的方法填充海洋的孔洞,具体生长过程与前文一致。之后,对于像素点少于一定数目的独立联通区域判定为海洋区域,完成海洋孔洞填充。
至此,完成了海陆分割的所有操作流程,可去除陆地区域,将后续的舰船目标检测范围限定在海洋区域中。
随着航空遥感影像分辨率的逐渐提高,影像中目标的几何结构特征也变得更加丰富、清晰,比如机场、桥梁、港口等典型目标,均具备明显的直线段特征。同时,与纹理、颜色等特征相比,几何结构特征受相机拍摄环境的影响较小,无论在何种光照、角度下拍摄,一个典型目标的几何基元结构都不会发生变化,因此几何结构特征也逐渐成为遥感影像中目标检测和识别的重要依据[15]。
对于舰船目标而言,舰首多为尖形结构,舰尾多为梯形、方形结构,两舷平直[16],其独特的长条形状是区分舰船目标与其他海面目标一个十分基础且重要的几何结构特征。基于此,本文利用舰船目标的几何结构特性,首先对其进行直线段检测;之后,对检测出的直线段进行K均值密度聚类;接着,根据每个类内的直线段数目,完成对有效类的最小外接矩形画框,并最终输出检测后的舰船目标信息。舰船目标检测的具体流程如图2所示。
图2 舰船检测流程图Fig.2 Flow chart of ship detection
舰船目标具有明显的几何结构特征,比较容易用直线段对其进行描述;而海面的岛屿、杂波、水纹等背景不具有明显的形状特征,因此其直线段分布是十分随机的。基于此,本文中利用经典的LSD (Line Segment Detector)直线段检测方法[17],来完成对舰船目标的直线段检测,该方法能够在较短的时间内获得较高精度的直线段检测结果。
LSD直线段检测算法首先计算图像中所有点的梯度大小和方向,然后将梯度方向变化小且相邻的点作为一个连通域,接着根据每一个域的矩形度判断是否需要按照规则将其断开以形成多个矩形度较大的域,最后对生成的所有的域做改善和筛选,保留其中满足条件的域,即为最后的直线检测结果。该算法的优点在于检测速度快,而且无需参数调节,利用错误控制的方法,提高直线检测的准确度。LSD算法对舰船目标的直线段检测结果如图3所示。
图3 直线段检测示意图Fig.3 Schematic diagram of line segment detection
如图3所示,进行直线段检测后,舰船目标区域往往会出现较为密集分布的多条直线段,基于此,本文利用K均值密度聚类算法[18],来对检测出的直线段进行区域聚类。K均值密度聚类算法应用简单,收敛速度快,聚类效果好,因此在工程中得到了广泛的应用。本文应用K均值密度聚类算法的具体实施步骤如下:
(1)从检测出的所有直线段中随机选择出一条直线段,将该直线段的中心点作为初始聚类的中心点;
(2)随机选择一条直线段,计算该直线段中心与当前所有聚类中心点的距离,根据最小距离原则找到与其最近的聚类,当该距离小于预先设定的距离阈值时,将该直线段划分到该聚类中,并重新计算该聚类的中心点,新的中心点即为类内所有直线段的中心;否则,重新创建一个聚类,并将该直线段的中心点作为新聚类的中心点;
(3)依次遍历检测出的直线段,重复步骤(2),直至所有直线段均有所归属的聚类,聚类结束。
其中,距离阈值可以根据影像的分辨率大小、舰船目标的尺寸大小以及先验知识综合设定,以使舰船检测效果达到最佳。
聚类结束后,统计每个类内所包含的直线段数目,当直线段数目大于预先设定的数目阈值后,判定其为有效类,并画出该类所有直线段的最小外接矩形。对图3中检测出的直线段进行K均值密度聚类、有效类画框后,结果如图4所示。
图4 有效聚类画框示意图Fig.4 Effective clustering frame diagram
有效聚类画框后,将有重叠区域的矩形框进行合并,并刻画出重叠矩形框的最小外接矩形作为最终的检测框,结果如图5所示。
图5 舰船检测结果Fig.5 Results of ship detection
最终,将所刻画的检测框作为舰船目标信息进行输出,包括了目标在影像中的坐标位置、目标长度、目标宽度、目标面积等信息。
本文所提出的海陆分割算法和舰船目标检测算法已经应用在某型号航空相机任务上,算法实现平台为嵌入式数字信号处理器TMS320C6455,针对1 920×1 080分辨率大小的航空遥感灰度影像,海陆分割算法实现时间约9 ms,舰船目标检测算法实现时间约11 ms,实现了30 FPS的机上实时处理要求。为了验证本文算法的有效性,选取了300张典型实际飞行拍摄的遥感影像进行对比测试,所构建的测试图像集场景复杂且丰富,汇集了岛屿、海浪、薄云、近岸等各种区域背景条件下和不同光照条件下的舰船目标。由于相关航空遥感图像较为敏感,不便于展示,本文仅列举几组能够配套的影像对海陆分割效果和舰船目标检测效果进行展示。
图6 海陆分割实验结果Fig.6 Experimental results of land sea segmentation
为了验证海陆分割算法的有效性,本文与文献[19]和文献[20]中的海陆分割算法进行比较。文献[19]通过改进指数加权平均比率算子进行边缘强度检测,而后利用小波变换进行二次边缘提取,实现海陆分割;文献[20]提出了一种分策略粗精结合海陆分割方法,进行基于梯度积分图的边界分割。本文采用如下参数来分析算法性能[5]:
(6)
陆地检测错误率=
(7)
陆地检测正确率=
(8)
不同海陆分割算法的比较结果如表1所示。从表中可以观察出,本文提出的海陆分割算法陆地检测率为95.8%,陆地检测错误率为5.7%,陆地检测正确率为94.4%,海陆分割效果较为理想。图5为海陆分割的实验结果,为便于观察,对图像进行了二值化处理,陆地区域用黑点表示,海洋区域用白点表示。实验结果显示文献[19]中的海陆分割算法在海陆边界处受海洋阴影干扰较大,易将海洋区域错划为陆地区域;文献[20]中的分割算法海岸线轮廓刻画较为粗糙,易将海陆交界处的海洋区域划分到陆地区域;本文算法分割后陆地区域边缘连接较完整,未出现边缘断裂情况,海岸线轮廓与原始图像基本保持一致,分割算法对噪声的敏感度较低,分割结果较为准确,鲁棒性好。
表1 海陆分割算法结果比较
为了验证舰船目标检测算法的有效性,本文与文献[21]和文献[22]中所提出的检测方法进行比较,评价指标选用准确率和虚警率。文献[21]根据舰船目标特性对方向梯度直方图进行了改进,将其与其他形状特征组成特征向量,最后通过分类器完成目标确认。文献[22]通过引入空间金字塔池化结构,结合密集连接对现有的YOLO-v3检测算法进行了改进。其中,准确率和虚警率的定义为:
(9)
(10)
舰船目标检测结果对比如表2所示。从表中的对比结果可以看出,本文提出的舰船检测算法准确率为94.1%,虚警率为3.9%,检测准确率高,虚警率低,检测效果较为理想,该检测精度指标已基本满足绝大多数航空遥感影像舰船目标检测任务的精度要求,同时可以满足工程任务中的实时舰船目标检测需求。文献[22]中基于深度学习的舰船目标检测算法实现了较高的检测准确率,但其实现需要预知大量的目标样本数据库;同时,深度神经网络参数较多,检测速度慢,受机上软硬件的限制,难以满足机上实时处理的任务需求。另外,可以观察到本文检测算法的虚警率较低,这是因为在舰船检测前已经进行了海陆分割,后续仅在海面区域上进行舰船目标检测,避免陆地上复杂景物对检测造成的影响,由此也体现了海陆分割+舰船检测这一方法的优势。
表2 舰船目标检测算法结果比较
图7是舰船目标检测的实验结果示意图,文中分别给出了在平静海面、海面杂波、海面薄雾、强碎浪海况、薄云覆盖、云层干扰、小岛干扰、陆地干扰等多种不同情况下的检测结果。从图中可以看出,在不同情况下,舰船目标检测结果准确、稳定,受外界干扰小,鲁棒性强。
图7 舰船目标检测实验结果Fig.7 Experimental results of ship target detection
作为海洋监视任务中的关键一环,开展有关航空遥感影像的舰船目标检测研究具有重要意义。本文重点对海陆分割和舰船检测两个问题进行了研究,利用影像灰度信息实现了自适应阈值分割,结合形态学算子和孔洞填充技术,较好的完成了海陆分割任务;利用舰船目标的几何结构特征,结合LSD直线段检测技术和K均值密度聚类技术,实现了舰船目标的有效检测。实验结果表明:针对海陆分割任务,算法的陆地检测率为95.8%,陆地检测错误率为5.7%,陆地检测正确率为94.4%;针对舰船检测任务,目标检测准确率为94.1%,目标检测虚警率为3.9%。本文算法能够准确地实现海洋和陆地的自适应分割,并能够提取出影像中舰船的数量、尺寸和位置信息,在检测时间和检测精度上都能够满足实际工程的需求。