基于单目相机与K均值聚类分割的船舶航行环境地图深度构建

2023-01-03 04:44付洪宇史国友冉洋高邈刘姿含
上海海事大学学报 2022年4期
关键词:关键帧像素点水域

付洪宇, 史国友, 冉洋, 高邈, 刘姿含

(1. 大连海事大学 a. 航海学院; b. 辽宁省航海安全保障重点实验室, 辽宁 大连 116026;2. 天津大学海洋科学与技术学院, 天津 300072)

0 引 言

基于船载设备的海上航行环境感知是构建海上空间信息的关键一步。空间信息系统通过感知设备对所处环境中动态、静态物体深度、角度的获取,实现对自身运动状态和周围环境的记录。如果将智能化交通感知设备与人类的感官作类比,那么环境感知技术就是通过感知设备的“嗅觉”“视觉”“听觉”实现对环境的“闻”“看”“听”。

目前,视觉即时定位与地图构建(simultaneous localization and mapping, SLAM)的研究主要集中于机器人和无人驾驶车辆等领域。KLEIN等[1]提出将视觉并行追踪与制图(parallel tracking and mapping,PTAM)分为前端和后端的算法(前端采用图像特征跟踪,后端以非线性优化为基础),开启了视觉SLAM的先河。MUR-ARTAL等[2]基于PTAM提出ORB-SLAM2算法,该算法能有效避免在运行中产生累积误差,并能迅速找回丢失的跟踪路标。LEUTENEGGER等[3]提出组合后端非线性优化与提取关键帧的惯导SLAM算法,该算法首先提出后端采用滑动窗口进行位姿优化。GRIFFXTH等[4]提出一种室外水面视觉SLAM算法,用来抵抗水面环境光照的不断变化,并在实验中采用无人船实验平台观察法国梅斯湖岸环境在季节中的变化。康俊民等[5]基于机器学习的环境特征分类方法,通过对城市环境障碍物进行分类来提高感知准确度。高云程[6]对水面机器人感知与避障系统的总体架构进行设计,以双体船模为实验平台,完善了水面机器人的感知系统。张啸尘等[7]基于YOLOv3算法采用双目相机对目标进行识别跟踪,实现了对水面目标的距离测量和位置估计。黄志坚等[8]结合YOLOv2特征提取层和YOLOv3的特征金字塔网络,解决了船舶图像与视频检测算法识别率低、实时性差的问题。邹雄等[9]对船舶靠泊环境图像特征进行了分析,提出基于水岸线的水域环境去除方法,实现了对船舶航迹的估计。

在感知设备方面,三维激光雷达[10]能够较好地实现对环境的精确感知,但其价格昂贵、测量范围较小,不适合检测远距离目标,难以在海上实现较好的感知效果。红外热像仪[11]的测量范围广,但获取的图像存在分辨率差、对比度低、信噪比低、画面模糊等问题,无法满足视觉层面感知需求。双目相机[12]可获取图像深度,但其测量范围窄、噪声大、视野小、易受日光干扰,不适合在海面使用。传统船用雷达[13]对船舶目标感知效果好,但是对环境的感知还原效果差。单目相机[14]结构简单、成本低,便于标定和识别,更宜用于水面视觉感知。然而,单目相机感知会因水面光照反射、海上环境缺少参照物等原因存在失真、实时性不佳等问题。

本文提出基于单目相机与K均值聚类分割的船舶航行环境深度图构建方法,首先对近岸航行环境图像进行分割预处理,对处理后的水域部分聚类完善。改进视觉SLAM算法中特征点提取与匹配部分,解算船舶运动位姿变化并感知船舶航行环境。提出的方法可有效提升船舶定位精度,构建航行环境深度地图,为船舶全面立体感知海上航行环境提供研究基础,对保障船舶近岸航行安全及降低航行风险有重要意义。

1 模型设计与基础原理

设计一种以单目相机作为视觉传感设备的感知模型,见图1。该模型将HSV(hue, saturation, value)颜色空间与K均值聚类算法组合对图像进行预处理,对完成预处理的图像依据本文设计的改进算法筛选特征点并完成匹配,求得相机运动过程中的变换矩阵,绘制船舶自身的运动轨迹以及点云和深度图。图1中,RANSAC(random sample consensus)算法指随机抽样一致算法。

1.1 图像预处理

如果想在计算机系统中使用人眼所观察到的色彩,需经过特定的数学公式进行映射变换,映射变换所用的数学公式就是颜色空间。依据组合原理的不同,大致可以将颜色空间分为两类:RGB(red、green、blue)颜色空间、亮度与色彩分开的HSV颜色空间[15]。本文采用HSV颜色空间来降低水面光照反射的影响。

图1 基于单目相机的运动与环境感知模型设计

因为光照反射,HSV阈值分割预处理无法将图像中水域部分完全清除,所以本文采用K均值聚类算法对分割后的图像像素进行聚类,清除分割后残留的水域。首先将被筛选出的像素点作为聚类样本数据集,两个像素点之间的相似程度用像素点之间的欧氏距离[16]表示,以每个像素点为中心,依据距离对所有像素点分组,得出每组像素点的数量;以此生成聚类数量和聚类中心,以子集中各像素点间欧氏距离的均值确定新的聚类中心,重新计算像素点与各聚类中心的距离,对样本数据进行新一轮的聚类,直到新的聚类中心趋于稳定。当准则函数值与上一轮迭代准则函数值的差值小于设定阈值时,迭代过程完成。

1.2 ORB算法

ORB算法由快速特征点提取(oriented FAST)和特征点描述(rotated BRIEF)两部分组成。特征点的方向性和旋转不变性两种关键性质由灰度质心法判定。首先对图像的像素点灰度进行预处理,将选取的特征点(中心像素点)灰度值设为1。当边缘像素点灰度值低于中心像素点灰度值时,该像素点的灰度值被设为0。当边缘像素点灰度值高于或近似等于中心像素点灰度值时,该点的灰度值被设为1。圆上如果有9个以上的点的灰度值连续等于1或0,则该中心像素点被判定为特征点。

1.3 视觉里程计与构建感知图

视觉里程计是利用单个或多个相机的输入信息估计物体运动信息的。在提取图像特征点后,将特征点进行匹配,依据匹配的特征点解算出单目相机的运动变化矩阵,进而求得相机运动位姿变化。首先需要对相机进行标定获取相机的内参矩阵和畸变系数并对图像进行校正,以便获得更加准确的图像信息。对校正的图像采用ORB算法提取特征点。按照图像顺序对特征点进行匹配。如果产生错误的匹配结果,需用RANSAC算法[17]对匹配结果进行筛选。

如图2所示,O1、O2为相机光心,I1、I2为相机所拍摄的两帧邻近图像的成像平面,特征点P与相机光心的连线与成像平面相交的两点分别为p1、p2。p1和p2可分别视为点P在I1和I2平面上的投影。设点P的坐标为(XP,YP,ZP),点p1和p2的坐标分别为(Xp1,Yp1,Zp1)和(Xp2,Yp2,Zp2),可知两点的位置分别为

(1)

式中:K为单目相机内参矩阵;R和T分别为相机运动的旋转矩阵和平移矩阵。进一步解算可以得到p1与p2的关系:

(2)

式中:E为相机运动的本质矩阵;T∧为T的反对称矩阵;T∧R为外积运算;(KT)-1EK-1为对本质矩阵的归一化处理。依据p1、p2与本质矩阵之间的关系可以进一步求解相机运动的R和T,获得E。根据已经解得的E,恢复出相机运动的R和T。由E的奇异值可分解得出:

(3)

图2 特征点匹配后成像平面示意图

2 改进ORB算法

在ORB算法中,判定一个像素点是否为特征点,需对该像素点周边16个像素点进行对比。这种判断方法较为烦琐,效率也较低。本文提出一种基于灰度延展性的像素对比方法进行改进。

2.1 考虑灰度延展性的ORB特征点判断方法

传统ORB算法判断特征点的方法如图3a所示。当有9个以上连续的点的灰度值同时比中心点的低或高时,该中心点被判定为特征点。参考像素点区域灰度延展的特性(如图3b所示),在16个点中,当每隔3个点选取1个点时,至少有3个点的灰度值与中心点的灰度值的差值的绝对值是大于设定阈值的。例如,当点5与点13灰度值都比中心点P的低,而点1与点9灰度值比点P的高时,可以判定点P是错误特征点,也就是噪点。

a)传统算法

b)改进算法

将对比16个点缩减为对比4个点,虽然能够提升计算效率,但是得到噪点的概率增加了。本文提出一种考虑灰度延展性的方法来减少噪点的产生。以中心点P为圆心分别作半径为4像素和5像素的圆,得到除点A、B、C、D之外的E、F、G、H、W、X、Y、Z等8个像素点,见图4。

当点P被判定为特征点时,点P与周边的像素点的灰度值必然存在一定的差值,且周边像素点的灰度值有着相对的延展性,当像素点A的灰度值小于中心点P的灰度值时,像素点E的灰度值应同样低于中心点P的灰度值。依据这种灰度的延展性,如果点E的灰度值高于点P的灰度值,那么点P就是噪点。由此将对比次数由16次降为8次,计算效率有所提升,但是噪点的出现概率仍然比对比次数为16次的高。为进一步降低噪点的出现概率,提高检测效率,延伸出点W、X、Y、Z,对这4个点同样做延展的灰度值对比,见图4。相对于只对比8个像素点,虽然计算效率有所下降,但是噪点的出现概率明显降低。

a)改进算法

b)噪点情景

2.2 改进的RANSAC算法

采用K最近邻算法[20]对特征点进行快速匹配,会产生大量误匹配。基于欧氏距离对特征点进行粗匹配,误匹配的数量同样会影响感知结果,这就需要采用RANSAC算法对结果进行提纯。RANSAC算法的总迭代次数是根据内点比例动态变化的,内点占比越高,参数估计就越快,迭代次数也就越少。

对RANSAC算法进行改进,在迭代结束前在样本中重新添加新的特征点。添加新特征点的步骤如下:

(1)在视觉里程计估算变换矩阵的过程中,若迭代次数达到10次或者内点数量趋于稳定,就可以判断该变换矩阵T相对准确。从内点集合中随机选择两对匹配点,从基准图像中这两点的延长线上随机选取一点a。通过变换矩阵T计算出点a在待匹配图像中的位置b。

(2)验证新特征点。若位置b在待匹配图像中两点的延长线上,或者偏移足够小,就把点a和点b作为新特征点,并放在内点集合中,否则就重新选择特征点。

(3)在每次迭代过程中只添加3对特征点,添加太多会导致总迭代次数过多。重复步骤(1)和(2),当内点数量稳定或达到迭代次数时停止添加特征点。新的特征点是用内点作延长线得到的,而且保证每次都在重叠区域选择点,通过验证保证新特征点的准确性。通过这种方式提高内点占比,提高RANSAC算法的效率,减少迭代次数。

2.3 改进的关键帧选择

随着程序的运行,有些场景移出视线,能够跟踪成功的特征点的数量越来越少。当该数量下降超过阈值时,则需选择一个新的关键帧。如果关键帧过于密集,则不仅会影响程序的运行速度,还会增加三角测量的不确定性。故在选择关键帧时,既希望它们之间有尽可能多的相机运动,又需要它们之间有足够高的匹配度。对关键帧的选择方法进行修改,使其在更好地还原相机运动的基础上完成足够多的特征点匹配。

初始关键帧通常选用数据图像的第一个关键帧K1,进行聚类分割去除水面区域,然后提取L0个特征点,采取持续跟踪的方式选择第二个关键帧K2,使得在K1与K2之间至少存在L1个匹配点,然后选择第三个关键帧K3,使得在K1与K3之间至少有L2个匹配点。初始化过程在初始关键帧中实现,其步骤如下:

步骤1得到3个初始关键帧K1、K2、K3,在去除水面之后,K1与K2、K1与K3之间分别有L1、L2个对应特征点。

步骤2设定K1为全局坐标系,在改进的RANSAC算法框架下分别计算K1与K2之间和K1与K3之间的相对位姿。

步骤3基于本质矩阵E(K1与K3),得到K3相对于全局坐标系的旋转矩阵R和平移矩阵T。

步骤4使用K3的相机位姿和对应的特征点,先三角化得到三维点,再利用其与K2对应的特征得到K2的相机位姿。

步骤5在这3个关键帧中,通过场景点在图像中的投影位置构建重投影误差:

(4)

式中:Rk和Tk分别为第k帧图像对应的相机旋转矩阵和平移矩阵;Xj为其对应的三维场景点坐标;xk,j为第k帧图像中的第j个特征点坐标。

初始化完成后,位姿估计算法的过程为:①对于每帧图像,判断其是否为关键帧,如果不是关键帧,则重新选取新的图像进行关键帧判断;②解算相机位姿的初值,三角化得到场景点,将该帧加入窗口;③在窗口中构建重投影误差,采用步骤②中的初值进行优化,并返回步骤①。

3 实验部分

实验分为水域分割实验、改进ORB算法验证、船舶航行环境感知实验等3部分,实验硬件条件为:单目相机采用工业相机(200万像素,3.2 μm像素尺寸),图像获取速度为30帧/s,分辨率为1 280×720。PC配置为Ubuntu操作系统,Intel Core i5-9300HCPU @ 2.40 GHz*4处理器。实验数据为2020年南宁海事局执法船使用单目相机拍摄的进港和靠泊视频数据,GPS数据和IMU数据分别采用执法船携带的GPS和惯性导航(简称惯导)系统记录,相机位置均为近岸侧船舷距船首三分之一船长处。实验优先选用近岸航行环境图像数据。相比于大洋航行环境图像数据,近岸航行环境图像数据中的环境信息更丰富,更有助于验证算法的可行性和优越性。

3.1 水域分割实验

选取两组图像:第一组图像水域占比较小,岸上景物复杂,在水域清除时可能将景物与水域混淆;第二组图像水域占比大,可能因倒影的存在而不能将水域部分完全清除。图5为原始图像的HSV分割与聚类过程。阈值设置如下:H为35~77,S为43~255,V为46~255。经过阈值分割后水域仍有部分未被清除(图5b中的未分割部分较为明显),经过聚类完善后水域基本被清除。采用聚类后的图像能够为后续特征点提取以及位姿估计提供较好的条件。

a)训练基地图像

b)近岸航行环境图像

为验证经过聚类分割后的图像对提取特征点的改进效果,对分割前后的第一组图像和第二组图像,对比传统ORB算法与尺度不变特征变换(scale-invariant feature transform,SIFT)算法的提取效果。把图像边缘5像素以内的点定义为边缘点。由表1可以发现,分割后图像特征点提取速度明显加快且边缘点比例有所下降。图6为对分割前后的第二组图像的特征点提取对比图,分割前图像中的水面倒影被提取了特征点,分割后的图像则未发生这种情况。

表1 HSV分割效果对比

图6 分割前后图像的特征点提取效果

3.2 改进ORB算法验证

采用两组分割后的图像,第一组环境复杂度较高且环境细节较多,第二组环境复杂度较低且环境细节较少。对比本文算法与SIFT、SURF(speeded-up robust features)、ORB等3种经典算法提取特征点的耗时和边缘点比例。其中,SIFT是一种基于尺度空间的,对图像缩放、旋转、仿射变换保持不变性的图像局部特征描述算法,SURF是一种稳健的局部特征点检测和描述算法。对每组图像各提取1 000、5 000个特征点。把图像边缘5像素以内的点定义为边缘点,边缘点大概率是噪点。提取特征点所消耗的时间与所提取特征点数量呈正相关关系。由表2可知,使用本文算法在提取5 000个特征点时,不仅速度比传统ORB算法的快,而且边缘点的数量大大减少了。

表2 不同算法特征点提取效果对比

采用关键帧算法选取关键帧,并对两组图像进行特征点提取展示,特征点提取数量L0和匹配数量L1、L2分别设置为1 000、750、720。滑动窗口中的窗口大小M和最新关键帧N分别取8和4。图7为训练基地图像选取关键帧的水域清除和特征点提取效果。图8为近岸航行环境图像选取关键帧的水域清除和特征点提取效果。由图7和8可知,选取的关键帧均保持着较好的水域清除和特征点提取效果。

a)关键帧1

b)关键帧2

c)关键帧3

d)关键帧4

a)关键帧1

b)关键帧2

c)关键帧3

d)关键帧4

3.3 船舶航行感知

3.3.1 自身运动记录

图9a为GPS与ORB-SLAM算法记录轨迹的对比图,图9b为GPS与改进ORB-SLAM算法记录轨迹的对比图。在改进ORB-SLAM算法记录的轨迹中,由于初始状态特征点追踪效果不佳,故记录轨迹与GPS轨迹存在一定的偏差。当船舶进行转向时,由于部分特征点丢失,所记录的轨迹同样出现了偏差。当算法稳定运行时,ORB-SLAM算法、改进ORB-SLAM算法与GPS所记录轨迹的偏差折线图见图10,其中:ORB-SLAM算法与GPS所记录轨迹的最大偏差为7.382 m,平均偏差为5.441 m;改进ORB-SLAM算法与GPS所记录轨迹的最大偏差为4.400 m,平均偏差为2.845 m。

a)ORB-SLAM算法轨迹

b)改进ORB-SLAM算法轨迹

图10 ORB-SLAM算法和改进ORB-SLAM算法与GPS所记录轨迹的偏差对比

图11a为惯导系统记录的位姿角变化情况。图11b为改进ORB-SLAM算法根据单目相机拍摄图像所记录的位姿角变化情况。改进ORB-SLAM算法相比于惯导系统,在初始状态特征点追踪未稳定的情况下,所记录的轨迹存在较大误差。在转向过程中,部分特征点丢失,误差增加。当改进ORB-SLAM算法稳定运行时,其累积误差比惯导系统的大,但精度满足定位要求。

3.3.2 周围环境记录

选取执法船训练基地靠泊与近岸航行的深度图与点云图进行对比。靠泊运动过程有水域面积占比变化大、运动速度慢、方向指向视野内、复杂景物多等特点;近岸航行运动过程存在水域面积占比变化小、运动速度快、方向为横向、复杂景物少等特点。在记录靠泊运动图像时,水域面积大小的改变需要算法对其多次清除修正,提取噪点的概率高;运动速度慢、复杂景物多的特点有利于提取特征点,提高运动估计准确度。在记录近岸运动图像时,水域面积占比变化小,算法能将水域稳定清除,提取噪点的概率低;运动速度快、复杂景物少的特点使得提取特征点的难度加大,易造成部分特征点丢失。

a)惯导系统

b)本文算法

图12a和12b分别为训练基地靠泊的点云图和深度图,虽然水域发生变化但图像中水域部分未出现错误点云,验证了水域清除算法的有效性。图12c和12 d分别为为近岸航行环境的点云图和深度图,运动速度快且未造成图像缺失或图像畸形,验证了改进算法的有效性。

a)训练基地靠泊点云图

b)训练基地靠泊深度图

c)近岸航行点云图

4 结 论

本文提出一种基于单目相机的海上航行环境感知模型。针对感知过程中水面光照反射影响感知效果的问题,采用基于HSV颜色空间的阈值分割对环境图像进行预处理,并结合K均值聚类分割对残留的水域进行清除,减少水面光照反射影响。改进ORB特征点提取算法,减少提取特征点所需时间并减少了噪点的出现概率,使得在感知过程中所记录的船舶自身轨迹与位姿满足实际定位要求,并能够实时构建深度图。本文研究可为海上未知领域探索和海上空间信息基础设施构建提供理论基础。本文提出的算法对环境要求较高,对船舶夜间航行时的感知效果存在一定的局限性,需要进一步研究。

猜你喜欢
关键帧像素点水域
基于图像熵和局部帧差分的关键帧提取方法
图像二值化处理硬件加速引擎的设计
提升水域救援装备应用效能的思考
基于局部相似性的特征匹配筛选算法
抗疫,在三峡两坝船闸水域
自适应无监督聚类算法的运动图像关键帧跟踪
进博会水域环境保障研究及展望
柳江水域疍民的历史往事
基于块分类的矿井视频图像DCVS重构算法
基于像素点筛选的舰船湍流尾迹检测算法