姜苗苗 史国友 许拴梅 江行 张恒
摘要:針对内河船舶监管过程中对船舶干舷的测量还需人工巡航,增加了海事部门管理成本问题,提出一种不借助船舶水尺标志检测船舶干舷的方法。对采集的图像进行中值滤波预处理,去除孤立点、降低噪声敏感性;考虑图像颜色特性,应用自适应K均值聚类算法识别船舶区域;联合Canny边缘检测和霍夫直线检测的方法,标记船舶吃水线和甲板边线,并利用数学形态学方法提高检测准确性;基于标定相机和双目测距原理建立图像坐标与世界坐标转换关系,找到甲板中间位置,取其与水面的距离作为船舶实际干舷值。用相机拍摄内河船舶进行检测,结果表明,该方法可以对内河船舶的吃水线和船舷线进行检测并计算干舷值,用于判断船舶是否超载并及时发出预警,满足海事部门的监管需求。
关键词: 船舶干舷; 自适应K均值聚类; Canny边缘检测; 霍夫变换
中图分类号: U698.3;TP391.4
文献标志码: A
收稿日期: 2020-05-31
修回日期: 2020-09-23
基金项目: 国家自然科学基金(51579025);中央高校基本科研业务费专项资金(3132020134,3132020139)
作者简介:
姜苗苗(1995—),女,山东菏泽人,硕士研究生,研究方向为交通运输工程,(E-mail)jiangmiaomiao2010@qq.com;
史国友(1968—),男,安徽桐城人,教授,博士,研究方向为航海科学技术安全保障、船舶智能避碰,(E-mail)sgydmu@dlmu.edu.cn
Ship freeboard visual detection based on adaptive
K-means clustering and Hough transform
JIANG Miaomiaoa,b, SHI Guoyoua,b, XU Shuanmeia,b,
JIANG Xinga,b, ZHANG Henga,b
(a.Navigation College; b.Key Laboratory of Navigation Safety Guarantee of Liaoning Province,
Dalian Maritime University, Dalian 116026, Liaoning, China)
Abstract:
In view of the problem that the measurement of ship freeboard needs manual cruise in the process of inland river ship supervision, which increases the management cost of maritime departments, a method of detecting ship freeboard without the aid of ship water gauge marks is put forward. The collected image is preprocessed by the median filter to remove isolated points and reduce noise sensitivity; considering the image color characteristic, the adaptive K-means clustering algorithm is adopted to identify the ship area; the Canny edge detection and Hough line detection are combined to mark the waterline and deck edge of the ship, and the mathematical morphology method is used to improve the detection accuracy. The transformation relationship between the image coordinate and the world coordinate is established based on the calibration camera and the principle of binocular ranging to find the middle position of the deck, and the distance between the middle position of the deck and the water surface is taken as the actual freeboard value of the ship. Using the cameras to shoot inland ships for inspection, the results show that this method can detect the waterline and the side line of an inland ship and calculate the
freeboard value, which can be used to judge whether a ship is overloaded and give early warning in time, and meets the supervision needs of maritime departments.
Key words:
ship freeboard; adaptive K-means clustering; Canny edge detection; Hough transform
0 引 言
近年来,我国航运业持续处于低迷状态。为减少运输成本、谋取最大利益,船舶经营人不顾安全追求利润,造成内河船舶运输超载、超吃水现象越来越严重,给水上交通安全及生态环境带来严重威胁。往年统计数据显示,舟山海域2017年有3起自沉事故都与超吃水有关,2019年因超载被江苏海事局查处而滞留的船舶在所有滞留的船舶中占比近40%。因此,急需对船舶载重状态进行规范化管理。为贯彻落实交通强国建设战略部署,2020年5月29日发布的《交通运输部关于印发〈内河航运发展纲要〉的通知》指出,到2035年基本建成人民满意、保障有力、世界前列的现代化内河航运体系,到2050年全面建成人民满意、保障有力、世界前列的现代化内河航运体系的发展目标。
水尺计量是在当今内河船舶监管中计算船舶吃水和判断船舶状态的重要方法之一。随着人工智能和计算机视觉的发展,视频监测因其具有监测设备安装简便、监测视野开阔、获取信息全面且方便等优点,已经被广泛应用于智能交通方面。彭将辉等[1]采用融合数学形态学与Canny算子的算法先检测吃水线,再根据水面边缘线与水迹线之间的相对最小距离是否变化获得准确吃水线。刘仁金等[2]运用纹理谱的相关知识对船舶水尺图像进行分割,获取船舶吃水值。以上两种船舶吃水线检测方法都是针对只包含水尺线和水面的图像的。借助机器视觉和图像处理方法,王炎龙等[3]提出一种基于类Haar特征和Gentle AdaBoost算法的吃水线检测方法,根据像素分布规律找到船舷线,但船舶干舷值计算结果会受到吃水线附近干扰的影响。赵永富等[4]基于激光传感器扫描船舶,重构三维立体模型,测算船舶干舷高度。闫寒香[5]基于激光传感器技术处理并提取船舶甲板位置数据,检测计算出干舷高度。
鉴于传统边缘检测算法去噪能力差、边缘检测效果不理想,且在船舶磨损、破旧以及摄像头角度有偏差的情况下得到的视频图像中可能没有水尺线,想要通过水尺刻度检测船舶状态有些困难的现状,本文提出一种不借助船舶水尺标志检测船舶干舷的方法。先采用自适应K均值聚类算法找到船舶区域;再通过改进Canny算法进行边缘检测描绘出船舶轮廓;最后利用霍夫变换检测出船舶吃水线和船舷线,结合双目测距原理计算干舷值。具体算法流程见图1。
1 自适应K均值聚类算法
从具有复杂水天背景的船舶图像中提取船舶特征时,因为船舶周围杂波噪声较多,船舶边缘检测效果可能不佳。如果对图像进行中值滤波预处理,对某些类型的随机噪声进行降噪,则可以较好地保存边界信息,同时使船舶边缘更加清晰。
1.1 中值滤波
中值滤波就是对滑动窗口(含有奇数点)内的所有像素灰度值进行排序,用中值代替该点像素值,以实现噪声抑制。为获得较好的聚类效果,用中值滤波对样本图像进行预处理,以达到去除孤立点、降低噪声敏感性的效果。
1.2 颜色特征提取
Lab颜色模型具有不依赖设备、色域宽广的优点,理论上包括人眼能看到的所有颜色。选用Lab颜色模型通过水面区域视觉特征量化来感知船舶目标在图像中的位置,从而使聚类分割效果更好。由于图片像素点的RGB空间颜色不能直接转换到Lab颜色模型中,需要借助XYZ假原色色度空间转换到Lab空间。RGB与XYZ空间的关系如下:
TrTgTb=
0.412 40.357 60.180 5
0.212 60.715 20.072 2
0.019 30.119 20.950 5
RGB
式中:R、G和B分别为图像红色、绿色和蓝色三通道值,取值范围为[0,255];Tr、Tg和Tb分别为RGB空间中红色、绿色和蓝色三色刺激值。为使Tr、Tg、Tb与R、G、B有相同的取值范围[0,255],借助XYZ空间将颜色转换到Lab空间:
L=116f(Tg)-16
a=500f(Tr/0.95-Tg)
b=200f(Tg-Tb/1.09)
f(t)=
t1/3, t>6293
132962t+429, 其他
式中:L为Lab空间的像素亮度;a和b分别为Lab空间像素红绿色和黄蓝色色度值。
1.3 船舶目标区域分割
水天线将船舶目标分成两部分。构建一种自动确定聚类数量K和初始聚类中心的自适应K均值聚类算法[6-7],在不同参数下对水面、船舶目标、天空颜色特征进行分割,以欧氏距离作为样本数据间相似性度量标准,通过迭代过程把不同颜色特征的数据划分为不同类别的数据集,使准则函数达到最优,图片分割区域船舶目标更突出。
1.3.1 聚类数量和初始聚类中心确定
完成Lab空间轉换的图像,在二维的a、b通道建立图像像素点作为样本。假设给定数据集X={
x1,x2,…,xn},其中n为样本数量(即像素点数),图像像素点xi与xj(i,j=1,2,…,n)之间的相似性用两者之间的欧氏距离[8]d(i,j)表示:
d(i,j)=xi-xj
为自适应确定聚类数量和聚类中心,计算像素点间的临界距离d1:
d1=2n(n-1)ni=1nj=i+1d(i,j)
d(i,j)越小,像素点xi与xj越相似,像素颜色越相近;d(i,j)越大,
像素点xi与xj差异越大,像素颜色差别越大。以每个像素点为中心点,以d1为临界距离对像素点进行分组,得出每组像素点的数量。设包含像素点最多的组的中心像素点为第一聚类中心;若组内像素点数量次多且该组中心像素点与第一聚类中心间的距离大于2d1,则设该组中心像素点为第二聚类中心;以此类推,自适应生成聚类数量和聚类中心。
1.3.2 聚类模型预测结果评价
自适应K均值聚类算法选择误差平方和作为准则函数,评价聚类收敛性优劣。给定数据集X,假设在确定聚类数量和聚类中心后,X包含ao个聚类子集X1,X2,…,Xao,各聚类子集中的样本数量分别为q1,q2,…,qao,各聚类簇中均值代表点分别为v1,v2,…,vao,则误差平方和准则函数计算式为
E=aou=1p∈Xu
p-vu2
计算样本数据与选取的各聚类中心的距离,将数据分配到距离其最近的聚类簇中。子集中的均值为新的聚类中心,重新计算样本数据与各聚类中心的距离,对样本数据进行新一轮的聚类,直到新的聚类中心趋于稳定。当准则函数值与上一轮的准则函数值相差某一设定值时迭代过程结束。最终目标是在内河船舶图像中定位与提取船舶目标区域,消除水波对船舶边缘检测的影响。
2 霍夫直线检测
2.1 Canny边缘检测
传统的边缘检测算法有Roberts、Prewitt、Sobel[9]等,但这些算法没有充分利用边缘梯度方向。Canny边缘检测[10]采用插值法拟合梯度方向的边缘强度,能更好地去除噪声,保留图像边缘信息。Canny边缘检测的算法步骤如下:
(1)高斯平滑滤波卷积降噪。Canny边缘检测是一阶微分算子边缘检测,对噪声敏感,故选用5×5的高斯滤波器先对图像平滑去噪。高斯函数为
H(x,y)=12πδ2exp-x2+y22δ2
式中:δ是高斯函数二项分布的标准差。若原始图像为f(x,y),则滤波平滑后的输出图像为
G(x,y)=f(x,y)H(x,y)
式中:“”代表卷积运算。
(2)运用Sobel算子平滑后计算梯度幅值和方向角。基于卷积运算的边缘检测算法[11],比如Sobel、Prewitt等,只是对边缘强度做简单的归一化处理,没有利用梯度方向计算每个位置的梯度角,输出边缘二值图。Canny边缘检测利用原始图像I分别与Sobel算子水平方向上的卷积核
hSobel=10-1
20-2
10-1
和垂直方向上的卷积核
eSobel=121
000
-12-1
卷积,得到各位置水平方向卷积值h和垂直方向卷积值e:
h=IhSobel, e=IeSobel
利用h和e计算边缘强度w:
w=h2+e2
计算梯度方向g:
g=arctan 2(h,e)
即对每一个位置(r,s),g(r,s)=arctan 2(h(r,s),e(r,s))。
(3)非极大值抑制处理。梯度幅值应用非极大值抑制[12]在邻域内定位出梯度方向上的邻域,通过比较邻域的值找出图像梯度中局部极大值点,将非局部极大值点置零进行抑制,达到图像边缘细化的效果。非极大值抑制突出了极大值,插值法拟合更准确地描述了梯度方向信息,对边缘强度图进行了细化。
(4)双阈值的滞后阈值处理。使用高阈值和低阈值,按照3个规则进行边缘阈值处理。先确定边缘强度值大于高阈值的点为边缘点;再删除小于低阈值的那些边缘点;处在低阈值与高阈值之间的那些点,如果能与确定的边缘点按某一路径相连,就可以作为边缘点被接受。
2.2 霍夫变换
边缘检测过程容易受噪声和光照不均等因素影响,因此很多边缘点不连续。霍夫变换是一个能检测间断点边界形状的技术,它利用图像空间的点在参数空间有唯一方程的思想,通过点-线对偶性进行变换[13]。
点的霍夫变换[14]可以这样描述:
经过点(x,y)的直线在直角坐标系中都可以表示為
y=mx+c (1)
式中:m为直线的斜率,c为截距。同时上式又可以改写为
c=-xm+y (2)
式(2)可以看作参数平面m-c中的一条直线,其中-x为直线斜率,y为截距,m和c为变量。图像空间直线上的点在参数空间各自都对应一条直线,并且参数空间的直线都将相交于一点。反过来,参数空间直线相交的点在图像空间都有共线的点对应。
根据变换原理,给定图像边缘检测的边缘点,通过霍夫变换找到这些点确定的直线方程。在计算过程中,首先建立累加器,每增加一个元素,累加器就加一,累加统计完成则计算结束,参数空间的峰值所对应的即是图像中共线点数量最多的直线方程;接着计算次峰值,它对应于原图中共线点数量次多的直线。
当用直角坐标系表示一条垂直于横坐标轴或几乎垂直于横坐标轴的直线时,直线的斜率无限大,采用式(1)在参数平面内无法表示。为解决这一问题,可以将式(1)替换为Duda和Hart提出的直线极坐标方程:
ρ=xcos θ+ysin θ
式中:ρ为直线与原点的距离;θ为x轴与直线垂线的夹角,取值范围为[-90°,90°]。累加器的计算与直角坐标系中的相同,最终得到累加器最大值所对应的ρ和θ。与直角坐标系表示不同的是,极坐标系中的一条直线从图像空间映射到参数空间后是一条正弦曲线。
由于霍夫直线检测会不可避免地受环境、建筑物、岸堤等因素影响,图像中会存在一些小短线和噪声,图像空间可能存在伪峰值点,所以在直线检测时可能出现近似直线误检。基于传统霍夫变换在实际应用情境下对其进行改进:首先对聚类分割提取的船舶RGB图像采用自适应阈值Canny边缘检测,根据船舶特征创建3组平坦的线型结构元素;然后利用imdilate()函数将边缘检测二值图和线型结构进行膨胀处理。处理后边缘扩大,船舶边缘或内部的坑被填掉,从而使得在用霍夫变换寻找峰值点时出现“假”直线的可能性降低,误检率降低。运用houghpeaks()函数找到2个峰值点,houghlines()函数根据峰值检测结果提取直线,最终定位目标区域船舶吃水线和甲板线。
3 根据双目测距原理计算干舷值
双目测距原理可以应用于如图2所示情景。在图2中桥梁的两侧布设平行双目相机[15],相机安装时采用“张氏标定法”,即采用张正友提出的黑白棋平板标定法进行位置标定。建立左、右相机对于世界坐标系的旋转向量和平移向量,利用三维重建原理得到物点世界坐标与图像坐标间的投影关系,见图3。
假定左、右相机焦距相等,内部参数也相等,且左、右相机的光轴和Y轴均平行,左、右相机的X轴重合。指定左相机的坐标系为世界坐标系,根据几何相似关系求得物点Q的世界坐标(X,Y,Z)。X、Y、Z可以表示为
X=TT-d(uR-u0)a=TT-d(x-cx)
Y=TT-d(vR-v0)a=TT-d(y-cy)
Z=TfT-((u0-uR)-(uL-u0))a=
TfT-d
式中:T为左、右相机之间的距离;(uL,vL)、(uR,vR)分别为物点在左、右相机中的投影像素;
(x,y)为物点的尺寸坐标;a为像素的物理尺寸;d为左、右相机的视差;f为相机焦距;(u0,v0)为相机的主点像素坐标;
(cx,cy)为主点的尺寸坐标。
由于图片中物体倾斜或扭曲会导致很难重建坐标系中观测物体的空间位置,所以选用拟牛顿法求解非线性优化问题,对坐标系的旋转角度进行优化。设定目标函数,在变换过程中得到旋转矩阵,然后根据几何平均误差,使目标函数尽量减小到设定阈值,从而使相机坐标系与水面坐标系尽量重合。经过一系列的翻转、平移得到水面的实用化测量坐标系统。
首先拍摄内河船舶照片,然后从照片中提取船舶区域并检测船舶吃水线和船舷线,最后运用双目测距原理进行计算,得到船舷线与吃水线之间的高度差。针对内河船舶主要运输货物的特点,取船舶甲板中间位置与水面之间的距离作为船舶实际干舷值,对船舶的航行状态进行判断。若实际干舷值超过最低干舷值标准,对船舶发出预警,并进行有效监管。
4 实验结果与分析
取分辨率为800×600的图片进行目标检测实验。测试平台为MATLAB R2015b,计算机配置为Windows 10系统、Intel Core处理器、主频1.60 GHz、4 G内存。
图4和5分别为运用本文算法检测船舶吃水线和船舷线的2个例子。图4a和5a为通过相机获取的船舶照片。首先对两张船舶照片进行中值滤波预处理以减少噪声,然后用自适应K均值聚类算法按照颜色特性进行分割,提取船舶所在区域,效果见图4b和5b。由图4b和5b可知,采用自适应K均值聚类算法能提取出船舶区域,并有效去除水波纹、倒影等杂波影响,减少船舶边缘检测的干扰因素。对聚类后图像进行改进Canny边缘检测操作,得到船舶的点线边缘信息,见图4c和5c。对检测后的图像创建3组平坦的线型结构元素(长度参数分别为3、4、3,角度分别为30°、40°、30°),将边缘检测图和线型结构进行膨胀处理,然后进行霍夫直线检测以有效减少直线误检,即可得到船舶吃水线和船舷线,结果见图4d和5d。
通常情况下,内河船舶出港必须满足稳性要求,以确保不会产生过大的倾角,因此在内河航行的船舶较少出现横倾状态。多数船舶在航行时可能会出现首倾、尾倾等不同姿态,但甲板在水线面以上,甲板两
端点的连线与船舶吃水线不会相交。在计算船
舶干舷值时,在甲板两端分别取点,确定甲板中间位置,以此位置与水面的距离作为船舶干舷值。图5中船舶干舷值的确定见图6。
将计算出的内河船舶干舷值与标准干舷值比较,若计算出的船舶干舷值小于标准干舷值,则发出预警,并进行监管。
5 结束语
针对内河船舶干舷高度需人工测算的问题,提出一种不借助船舶水尺标志检测船舶干舷的方法。先采用自适应K均值聚类算法分割出船舶所在区域,然后通过Canny边缘检测和霍夫变换提取船舶边缘特征信息,检测出船舶吃水线和船舷线。在机器视觉的启发下,運用双目测距原理,测出图片中的干舷高度实际值。实验结果表明:算法能定位船舶所在位置,提取船舶信息;当船舶周边环境复杂、含有大量的边缘间断点时,实验效果更好;通过检测出的船舶吃水线和船舷线计算船舶干舷高度,为判断船舶吃水状态及发出预警提供了依据。
本文方法对环境要求较高,对夜航船舶的干舷检测有一定的局限性,这方面还需进一步研究。
参考文献:
[1]彭将辉, 冉鑫. 基于图像处理的船舶吃水线检测方法[J]. 中国水运, 2012, 12(6): 66-67.
[2]刘仁金, 高远飙, 郝祥根. 船舶吃水线定位分析及算法研究[J]. 皖西学院学报, 2009, 25(5): 1-4.
[3]王炎龙, 陶青川. 基于计算机视觉的运砂船超载状态检测[J]. 现代计算机, 2014(11): 49-54. DOI: 10.3969/j.issn.1007-1423.2014.32.011.
[4]赵永富, 葛鸣明, 刘善成. 基于激光扫描的船舶超载超吃水自动监测系统[J].计算机系统应用, 2017, 26(6): 40-45. DOI: 10.15888/j.cnki.csa.005811.
[5]闫寒香. 船舶甲板位置检测模型研究[D]. 哈尔滨: 哈尔滨工业大学, 2016.
[6]张红霞, 章银娥. 基于Lab空间的K均值聚类彩色图像分割方法[J]. 赣南师范大学学报, 2019(6): 44-48. DOI: 10.13698/j.cnki.cn36-1346/c.2019.06.011.
[7]ZHANG Xin, WANG Kangwei, WANG Yan, et al. Rail crack detection using acoustic emission technique by joint optimization noise clustering and time window feature detection[J]. Applied Acoustics, 2020, 160: 107141. DOI: 10.1016/j.apacoust.2019.107141.
[8]KARRAR A M A, SUN Jun. Segmentation and measurement of medical image quality using K-means clustering algorithm[J]. American Journal of Neural Networks and Applications, 2019, 5(1): 36-44. DOI: 10.11648/j.ajnna.20190501.16.
[9]陈浩. 图像经典边缘检测算子的研究与比较[J]. 电脑编程技巧与维护, 2019(12): 150-152. DOI: 10.16184/j.cnki.comprg.2019.12.057.
[10]李寶芸, 范玉刚, 高阳. 基于OTSU和Canny算子的红外图像特征提取[J]. 陕西理工大学学报(自然科学版), 2019, 35(6): 33-40.
[11]NAUSHEEN N, SEAL A, KHANNA P, et al. An FPGA based implementation of Sobel edge detection[J]. Microprocessors and Microsystems, 2018, 56: 84-91. DOI: 10.1016/j.micpro.2017.10.011.
[12]MADIREDDY S, CHUNG D W, LOEFFLER T, et al. Phase segmentation in atom-probe tomography using deep learning-based edge detection[J]. Scientific Reports, 2019, 9: 20140. DOI: 10.1038/s41598-019-56649-8.
[13]呼超, 汪杰, 冯玉松. 基于改进Hough变换的夜间内侧车道线检测[J]. 公路与汽运, 2019(6): 1-3, 8.
[14]安培源, 张华. 基于边缘检测和Hough变换的圆定位算法[J]. 浙江理工大学学报(自然科学版), 2018, 39(5): 593-598. DOI: 10.3969/j.isnn.1673-3851(n).2018.05.012.
[15]符杨, 荣帅昂, 刘恩圻, 等. 架空输电通道图像监测中大场景双目测距的方法及校正算法[J]. 高电压技术, 2019, 45(2): 377-385. DOI: 10.13336/j.1003-6520.hve.20190130004.
(编辑 贾裙平)