2. 桂林电子科技大学 机电工程学院,广西 桂林 541004;
3. 桂林电子科技大学 计算机信息与安全学院,广西 桂林 541004
2. College of mechanical and electrical engineering, Guilin University of Electronic Technology, Guilin 541004, China;
3. School of Computer Science and Information Security, Guilin University of Electronic Technology, Guilin 541004, China
为了满足大型散货船、运输船的通航和系泊安全性,航道和港口对通航船体的吃水深度有明确的规定,防止航道和港口出现船舶搁浅等事故。港口和航道管理部门通过采集船舶的吃水线获取船舶吃水深度,传统的采集方法是人工水尺测量,这种方法效率低,精度差。
本文建立一种大型船舶水线面视觉图像检测系统,利用计算机视觉技术和图像处理技术,高效、准确的获取船体的吃水深度[1]。
1 大型船舶水线面视觉图像准确检测系统的整体设计本文搭建的船舶水线面视觉图像检测系统主要由硬件系统和软件系统构成,结构如图1所示。
硬件部分包括线激光发射器、光源控制器、工业相机、控制板、编码移动单元等。
1)线激光发射器
线激光发射器负责向船体与水面的结合部分发射等宽线状激光,激光发射的方向、宽度和强度由光源控制器来确定。
2)工业相机
工业相机的选择不仅直接决定了船舶水线图像采集的分辨率、图像质量等,也直接决定了检测图像的工作模式。本文在设计时选用数字工业相机,视频制式为PAL制,相机分辨率为1000pixcel(像素),帧率在10帧/s。
3)编码移动单元
由于船舶不论是在航道还是在港口中,始终处于不停的运动过程中,因此,在设计硬件系统时采用编码移动单元,该单元通过采集被测船体与工业相机的相对运动,根据系统的空间位姿信息、标定信息进行姿态调整,提高检测系统的工作精度。
船舶水线面视觉图像检测系统的软件部分主要功能包括深度图像生成、图像处理、异常检测等。
1)深度图像生成
深度图像是指检测系统通过工业相机捕捉的吃水线图像,并根据系统的标定信息进行图像区域的三维信息的计算,图像三维等信息的核算采用单位时间内的信息完成。
2)图像处理
图像处理的作用包括噪声的过滤、吃水线图像的增强、吃水线特征的提取等,在搭建检测系统的软件程序时,需要配置图像滤波器等应用程序[2]。
3)异常检测
异常检测功能是指软件程序识别系统的运行状态信号,及时发现系统运行过程的故障问题,并触发报警装置。
2 大型船舶水线面视觉图像准确检测系统设计 2.1 船舶水线面图像的获取和标定船舶吃水线面的图像采集是一种空间的图像转换过程,将三维空间的坐标转移到二维像素坐标系中,因此,研究图像采集过程的空间关系转换、图像标定有助于提高图像的采集精度。
建立检测系统视觉图像的空间坐标系如图2所示。
图中,世界坐标系为o-xyz,相机坐标系为O-XYZ,目标物体从世界坐标系转换至相机坐标系的公式为:
$ \left[ {\begin{array}{*{20}{c}} {{x_c}} \\ {{y_c}} \\ {{z_c}} \\ 1 \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} {\boldsymbol{R}}&{\boldsymbol{T}} \\ 0&1 \end{array}} \right]\left[ {\begin{array}{*{20}{c}} {{x_w}} \\ {{y_w}} \\ {{z_w}} \\ 1 \end{array}} \right],$ |
其中:R为旋转矩阵,是一个3阶矩阵;T为平移矩阵,也是3阶矩阵。
由于图像坐标系的轴与相机坐标系的O-XY平行,根据线性投影关系可得:
$ \left[ \begin{gathered} {x_i} \hfill \\ {y_i} \hfill \\ \end{gathered} \right] = \frac{{{d_0}}}{{Zc}}\left[ \begin{gathered} {X_C} \hfill \\ {Y_C} \hfill \\ \end{gathered} \right]。$ |
式中:
定义工业相机的焦距为
$ \left[ {\begin{array}{*{20}{c}} {{x_i}} \\ {{y_i}} \\ 1 \end{array}} \right] = \frac{1}{{{z_c}}}\left[ {\begin{array}{*{20}{l}} f&0&0&0 \\ 0&f&0&0 \\ 0&0&1&0 \end{array}} \right] ,$ |
经过上述变换过程,三维空间的点P已经转换为二维平面的点
$ \left[ {\begin{array}{*{20}{c}} {{x_p}} \\ {{y_p}} \\ 1 \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} {\dfrac{1}{{dx}}}&0&{{u_0}} \\ 0&{\dfrac{1}{{dy}}}&{{v_0}} \\ 0&0&1 \end{array}} \right]\left[ {\begin{array}{*{20}{c}} {{x_i}} \\ {{y_i}} \\ 1 \end{array}} \right]。$ |
式中:
船舶吃水线面的图像采集时,真实模型与理论模型往往存在一定偏差,图像的径向畸变用下式计算:
$ \left\{ {\begin{array}{*{20}{l}} {{x^\prime } = x\left( {1 + {k_1}{r^2} + {k_2}{r^4} + {k_3}{r^6}} \right)} ,\\ {{y^\prime } = y\left( {1 + {k_1}{r^2} + {k_2}{r^4} + {k_3}{r^6}} \right)} ,\end{array}} \right. $ |
图像的切向畸变用下式表示:
$ \left\{ {\begin{array}{*{20}{l}} {{x^\prime } = x + 2{p_1}xy + {p_2}\left( {{r^2} + 2{x^2}} \right)} ,\\ {{y^\prime } = y + 2{p_2}xy + {p_1}\left( {{r^2} + 2x{y^2}} \right)} 。\end{array}} \right. $ |
其中:
检测系统在使用工业相机进行吃水线面图像采集时,受到海浪和船舶的晃动的影响,图像采集的精度会下降,本文使用动态模板配准方法提高图像采集的精度[3],其原理图如图3所示。
图像的动态模板配准主要分为2个环节:
1)模板图像帧的获取
从工业相机采集的船舶吃水线面图像中选取某一个像素域,记为
2)动态模板帧的匹配
选取图像帧
3)计算相似度
像素相似度计算公式如下:
$ S(i,j) = Max\left( {\sum\limits_{m = 1}^m {\sum\limits_{n = 1}^n {{{\left[ {{S_{ij}}(m,n) - {T_{ij}}(m,n)} \right]}^2}} } } \right) ,$ |
对图像的第二帧
$ {f_2}(i,j) = {f_1}\left( {i - \left( {{x_1} - {x_0}} \right),j - \left( {{y_1} - {y_0}} \right)} \right) 。$ |
4)重复上述步骤,直至完成第k+1个模板的动态匹配,实现图像的配准。
2.3 舰船吃水线面图像的灰度平滑处理研究图像灰度的平滑处理有利于提高图像识别和特征提取的准确度,灰度平滑处理技术包括平均值平滑、中值平滑、高斯平滑等,本文使用高斯平滑技术进行船舶吃水线面图像的灰度平滑处理[4]。
二维灰度图像的高斯平滑算子为:
$ G(x,y) = {e^{ - \frac{{{x^2} + {y^2}}}{{2{\sigma ^2}}}}} 。$ |
其中:
$ G(x,y) = \frac{1}{{2\text{π} {\sigma ^2}}}{e^{ - \frac{{{x^2} + {y^2}}}{{2{\sigma ^2}}}}}。$ |
图4为某像素区域的高斯平滑处理示意图。
图像分割可以将含有目标物体的图像选取出来,降低图像处理的工作量,常用的图像分割方式是阈值分割法,又细分为整体阈值法、动态阈值法等。本文使用整体阈值法进行图像分割,过程如下:
由于彩色图像的每一个像素均由红(R)、绿(G)、蓝(B)3个分量组成[5],将彩色图像进行加权平均,得到像素的灰度值,如下式:
$ g(i,j) = \frac{{{{{W}}_{{R}}} \times {{R}}(i,j) + {{{W}}_{{G}}} \times {{G}}(i,j) + {{{W}}_{\text{B}}} \times {{B}}(i,j)}}{3} 。$ |
式中:
定义图像的灰度离散函数为:
$ p\left( {{r_k}} \right) = \frac{{{n_i}}}{n},k = 0,1,\cdots ,L ,$ |
式中:
定义图像灰度直方图的变换函数为:
$ f = \int_{0}^{T} {p\left( w \right)} {\rm{d}}w,$ |
该变换函数在定义域内单调递增,当定义域为
定义图像灰度阈值为:
$ {P_s}(s) = {\left. {{P_r}(r) \cdot \frac{{{\rm{d}}r}}{{{\rm{d}}s}}} \right|_{r = f(s)}}。$ |
根据图像灰度阈值进行图形的灰度直方图计算,并得到灰度直方图的分割结果。
图5为基于灰度阈值算法的图像分割示意图。
使用Microsoft Visual Studio 2018作为开发工具,开发船舶吃水线面视觉图像的准确检测系统,系统使用的图像处理库为Opencv2.8,包含大量的C函数和图像接口,能够实现人机互动、图像处理等功能,同时也能兼容多种类型的工业相机。
船舶吃水线面视觉图像的准确检测系统的人机界面采用MFC类库[6],为用户提供各类API控件,图6为系统的工作流程。
图7为船舶吃水线面视觉图像检测系统的识别效果图。
本文主要解决的问题是大型船舶在港口和航道的吃水线检测问题,介绍吃水线面视觉图像检测系统的整体设计,分别针对吃水线面视觉图像检测的图像标定、图像动态矫正、图像分割、灰度平滑处理等进行详细描述,并基于VS2018平台开发了相应的软件程序。
[1] |
王红英, 张奇志, 周亚丽. 基于视觉的藻类图像识别系统的设计与实现[J]. 信息通信, 2016(1): 3. |
[2] |
彭将辉, 冉鑫. 基于图像处理的船舶吃水线检测方法[J]. 中国水运:下半月, 2012(6): 2. |
[3] |
陈紫鹏, 李威, 卢文超, 等. 基于机器视觉的带钢表面缺陷检测系统中图像处理方法设计研究[J]. 南方农机, 2020, 51(22): 2. |
[4] |
张方超, 董振, 张栋, 等. 基于图像视觉的垃圾分类机器人识别控制系统算法设计[J]. 电子测量技术, 2019, 42(20): 5. |
[5] |
孟特, 李富才, 刘邦彦, 等. 基于RGB-D图像的视觉SLAM算法研究[J]. 青岛大学学报:自然科学版, 2022, 35(1): 7. |
[6] |
张俊杰, 丁淑艳, 李伦波, 等. 基于视觉显著性的无人车图像检测及分割方法 2017年2月14日[J]. 计算机工程与应用, 2017.
|