舰船科学技术  2021, Vol. 43 Issue (9): 102-107    DOI: 10.3404/j.issn.1672-7649.2021.09.020   PDF    
基于神经网络的水下对接引导算法
冯晓晨1, 葛彤1, 王小丹2     
1. 上海交通大学 船舶海洋与建筑工程学院,上海 200240;
2. 自然资源部北海局,山东 青岛 266061
摘要: 针对水下机器人对接过程中近距离引导定位的问题,为实现准确可靠的水下对接,设计了一种基于神经网络的水下对接引导算法。算法主要分为两部分:1)检测部分,该检测算法区别于传统的图像处理,基于YOLOv3的神经网络,加入DenseNet思想,实现了一种鲁棒性强,可靠以及准确率高的目标检测算法。区分了目标物与无关背景信息,用于提供水下对接站在二维图像下的位置信息。2)位姿估计部分,用于恢复水下机器人与中继器之间的相对位置信息,从而能够根据相对位置信息,完成近距离的水下对接引导。经过实验对比分析,验证了算法的可行性,并证明了改进的目标检测算法能够更精确地完成对中继器的位置检测,提高了对位姿估计的准确率。
关键词: 水下机器人     水下对接     神经网络     特征点提取     位姿估计    
Design of underwater docking guidance algorithm based on neural network
FENG Xiao-chen1, GE Tong1, WANG Xiao-dan2     
1. School of Naval Architecture, Ocean and Civil Engineering, Shanghai Jiao Tong University, Shanghai 200240, China;
2. North China Sea Branch, Ministry of Natural Resources, Qingdao 266061, China
Abstract: Aiming at the problem of short-range guidance and positioning in the docking process of underwater robots, in order to achieve accurate and reliable underwater docking, this paper designs an underwater docking guidance algorithm based on neural network. The algorithm consists of two parts: 1. The detection module, which is different from traditional image processing, is based on the yolov3 neural network, and joins the DenseNet idea to achieve a robust, reliable and accurate target detection algorithm. The algorithm is used to provide the location information of the underwater docking station and obtain the docking station information under the two-dimensional image. 2. The pose estimation module is used to restore the relative position information between the underwater robot and the docking station, so that the underwater docking task can be completed according to the relative position information. Experimental comparison and analysis have verified the feasibility of the algorithm and proved that the improved neural network detection algorithm can be more effectively applied to the position detection of the docking station, which improves the accuracy of the pose estimation.
Key words: underwater robot     underwater docking     neural network     feature point extraction     pose estimation    
0 引 言

作为水下资源探索的一个重要工具,水下机器人需要承担各种各样的科研任务。由于自身携带能源的限制以及对数据传输的要求,需要及时回到母船补充能源,这种方式需要花费大量的人力和物力[1]。而且,目前大多数的AUV作业在各个流程操作方面,基本都是依赖于人员的操作。而水下对接技术能够实现对水下机器人进行充电,数据传输和扩大活动范围的功能,减少人力物力,因此如何发展自主的水下对接回收技术成为关键。

目前,在水下对接过程中,水下机器人所采用的传感器方式主要分为4种:1)电磁传感方式,2)声学传感方式,3)光学传感方式,4)视觉传感方式[2]。对于声学和电磁学导引方式,一般是用于距离较长、精度要求不是特别高的过程。光学和视觉的导引方式相对于上述2种传感器,作业的范围有限,通常在几十米的距离之内,但视觉的导引精度很高,抗外界干扰能力、鲁棒性较强,适用于多变的水下环境,常常用于短距离的水下对接[3]。基于视觉的水下对接系统主要包括对接站、安装在水下机器人上的摄像机和对接算法。国内外已经有很多科研机构对自主航行器视觉引导进行了研究、试验:1)Li et al.(2015)在一个圆锥体形状的对接台边缘放置了4个540 mm的绿灯,实现了良好的水下绿灯传播[4]。2)Maki等(2015)利用3盏绿灯和1盏红灯的三维地标进行水下对接。

图 1 水下对接方案 Fig. 1 Underwater docking system

水下对接引导算法主要承担检测和位置估计的作用[5],传统的水下对接检测算法主要分为两大类:1)基于二值化。Park等首先通过预先定义的固定阈值对图像进行二值化,然后使用卷积去除噪声;2)基于特征。Li等[6]以基于特征的检测方法为例,首先采用Meanshift算法提取光源面积,然后利用该算法对轮廓特征进行识别。相对于上文提到的手动或者依赖先验知识的算法,基于深度学习的目标检测算法相较于其他算法适用性更广,效果更好。所以提出一种基于卷积神经网络的目标检测算法用于水下对接,相对于传统方法,具有准确度高、鲁棒性强的优点,对对接效率来讲也有一定性的提升。水下对接引导算法的创新性如下:

1)设计一个基于神经网络的目标检测框架,用于水下对接过程。首先使用神经网络目标检测算法检测物体,获取物体的大致位置,得到感兴趣区域,然后通过分割算法得到特征点的位置,最后通过位姿估计获得对接站与水下机器人之间的相对位姿。

2)改进了YOLOv3算法的特征提取网络以及检测层,能够提高计算精度,以及准确度。

设计的水下对接引导算法流程如图2所示。

图 2 水下对接算法流程图 Fig. 2 Underwater docking algorithm flow chart
1 基于神经网络的目标检测算法 1.1 YOLOv3目标检测模型

YOLO算法是通过将检测任务看作是回归问题来进行处理[7]。这种思想的好处是对物体的检测速度很快,算法效率高,而且能够有效的区分背景、学习物体的泛化特征。所以本文设计了一种基于YOLOv3改进的水下中继器目标检测算法,作为水下对接导引的目标检测模型。

1.2 改进型YOLOv3水下对接目标检测算法

在神经网络训练过程中,由于卷积和降采样操作的存在,特征信息会丢失,借鉴DenseNet[10]的思想,在DarkNet-53的基础上将ResNet替换成DenseNet,可以缓解由于层数过多而导致的梯度消失问题,提升网络性能。DenseBlock结构如图3所示。

图 3 DenseBlock结构 Fig. 3 The structure of DenseBlock

图中, ${X_0}$ 是输入特征,第 $n$ 层的输入不但和它前一层的输出相关,而且将前面的所有输出作为这一层的输入,公式表示为:

${X_n} = {Y_n}\left( {\left[ {{X_0},{X_1}, \cdots {X_{n - 1}}} \right]} \right)\text{。}$ (1)

式中: $[]$ 表示将第 $0$ 层到第 $n - 1$ 层输出的 ${X_0}$ ${X_{n - 1}}$ 特征进行通道拼接作为第 $n$ 层的输入;非线性变换 ${Y_n}$ 表示将得到的特征输入进行批量归一化操作、 $ReLU$ 激活函数和卷积操作;最后得到 ${X_n}$ 。这种方法相比ResNet结构可实现特征重用。采用DenseNet网络的改进目标检测算法模型如表1所示。

表 1 改进的YOLOv3神经网络 Tab.1 Improved YOLOv3 neural network

表1可以看出,改进的算法首先将输入的 $416 \times $ $ 416 \times 3$ 的图片进行2次卷积,得到 $104 \times 104$ 的特征图,然后利用DenseBlock和Transition层交替进行提取特征,密集块的增长率设置为32,密集块中每一层的操作为: $BN + ReLU + conv1 \times 1 + BN + ReLU +conv3 \times 3$ ,其中 $1 \times 1$ 卷积层的卷积核数量为 $4 \times 32$ $3 \times 3$ 卷积层的卷积核数量为32。 $1 \times 1$ 卷积层的作用在于降低特征数量,提高效率。Transition层的具体操作为 $BN + ReLU + $ $ 1 \times 1conv + 2 \times 2average\;pooling$ ,该层的作用主要是降低特征图的尺寸。

通过特征网络后,分别得到 $13 \times 13$ $26 \times 26$ 的特征图,以及 $53 \times 53$ 特征图,3个检测层,能够很好的检测大中小物体,对中继器从远到近的对接过程有更好的保障。例如,对于分辨率为 $13 \times 13$ 的特征图,采用2倍上采样的方式,与提取出的 $26 \times 26$ 特征图进行融合,更好地提取特征,增强特征表达能力[11]。预测方法与YOLOv3相似,回归来生成每个类的边界框坐标和概率。以 $13 \times 13$ 特征图为例,网络首先将输入图片分为 $13 \times 13$ 个单元格,如果带检测目标的中心落在某个单元格,那么该单元格负责预测这个目标,每个单元格预测 ${\rm{B}}$ 个边界框,根据与真实框交并比的值选择边界框,选择交并比最大的边界框。

${\rm{B}}$ 边界框:边界框由 $({x_{i,b}},{y_{i,b}},{w_{i,b}},{h_{i,b}})$ 组成, $i$ 表示第 $i$ 个网格, ${\rm{b}}$ 表示第 ${\rm{B}}$ 个边界框,其中 $({x_{i,b}},{y_{i,b}})$ 表示中心点的坐标值, $\left( {{w_{i,b}},{h_{i,b}}} \right)$ 表示所预测边界框的宽度值以及高度值。

改进的YOLOv3的损失函数为:

$l\left( \theta \right) = {\lambda _1}{l_1}\left( \theta \right) + {\lambda _2}{l_2}\left( \theta \right) + {\lambda _3}{l_3}\left( \theta \right)\text{,}$ (2)

损失函数主要包括坐标误差和置信度误差,主要可以为3部分,第1部分为坐标误差,具体公式为:

$\begin{split}{l_1}\left( \theta \right) =& \mathop \sum \limits_{i = 1}^{{G^2}} \mathop \sum \limits_{b = 1}^B l_{i,b}^{dock}\left[{\left({x_{i,b}} - \widehat {{x_{i,b}}}\right)^2} + {\left( {{y_{i,b}} - \widehat {{y_{i,b}}}} \right)^2}\right] +\\ &\mathop \sum \limits_{i = 1}^{{G^2}} \mathop \sum \limits_{b = 1}^B l_{i,b}^{dock}\left[{\left(\sqrt {{w_{i,b}}} - \sqrt {\widehat {{w_{i,b}}}} \right)^2} + {\left(\sqrt {{h_{i,b}}} - \sqrt {\widehat {{h_{i,b}}}} \right)^2}\right]\text{,}\end{split}$ (3)

式中 ${G^2}$ 代表网格单元的个数, $B$ 为每个单元格所预测的边界框个数, $l_{i,b}^{dock}$ 的取值为1或0,即表示第 $i$ 个单元格的第 $b$ 个边界框是否存在检测目标,是则取值为1,否则取值为0。其中 $({x_{i,b}},{y_{i,b}},{w_{i,b}},{h_{i,b}})$ 表示预测的边界框中心坐标、高度和宽度, $\left(\widehat {{x_{i,b}}},\widehat {{y_{i,b}}},\sqrt {\widehat {{w_{i,b}}}} ,\sqrt {\widehat {{h_{i,b}}}}\right) $ 是指实际的边界框大小。

第2部分和第3部分为置信度误差:

${l_2}\left( \theta \right)\!=\! - \!\!\mathop \sum \limits_{i = 1}^{{G^2}}\!\! \mathop \sum \limits_{b = 1}^B l_{i,b}^{dock}\!\left[\widehat {{C_i}}\log ({C_i}) \!+\! \left(1 \!-\! \widehat {{C_i}}\right)\log \left(1 \!-\! \widehat {{C_i}}\right)\right]\text{,}$ (4)
${l_3}\left( \theta \right)= - \mathop \sum \limits_{i = 1}^{{G^2}} \mathop \sum \limits_{b = 1}^B l_{i,b}^{nodock}\left[\widehat {{C_i}}\log \left({C_i}\right) + \left(1 - \widehat {{C_i}}\right)\log \left(1 - \widehat {{C_i}}\right)\right]\text{。}$ (5)

式中: $ {l}_{2}\left(\theta \right)$ ${l_3}\left( \theta \right)$ 为置信度误差; ${C_i}$ 表示是否含有目标的真实值; $\widehat {{C_i}}$ 表示预测值; $l_{i,b}^{dock}$ 表示边界框中含有物体; $l_{i,b}^{nodock}$ 表示边界框中不含有物体。因为对于采集到的中继器图像来说,大部分的区域中是不含有中继器目标物的,所以为了能够更好地表示每部分的重要性,需要设置比例系数。 ${\lambda _1}$ $ {\lambda }_{2}$ $ {\lambda }_{3}$ 分别表示3部分所占的不同权重。检测模块的流程如图4所示。

图 4 目标检测算法流程图 Fig. 4 Flow chart of target detection algorithm
2 位姿估计 2.1 特征点提取

在第1部分中,解释了如何利用改进的YOLOv3算法得到对接站在二维图像中的位置。在这一部分,提供一种方法用来恢复水下机器人和对接站之间的三维位置,实现对水下机器人的定位。

第1部分利用目标检测算法可以得到感兴趣区域,在提取出中继器的大致位置之后,为了进一步进行位姿估计,需要得到导引灯的坐标位置,为此采用基于阈值分割的方法进行特征点提取,阈值分割法是图像分割中最常用的办法,它是通过设定特定的阈值把图像中的像素分为若干个等级,利用需要提取的目标与背景之间的阈值差异,来进行提取目标的方法[12]。由于点光源的中心灰度值较高,其他位置的灰度值随点光源的距离增大而减少。如果图像进行分割后,恰好有4个连通域,说明满足要求。如果阈值过小,会使得连通域小于4,然后可逐步增大阈值,使条件满足。流程如图5所示。

图 5 自整定分割[13] Fig. 5 Adaptive threshold segmentation

利用自适应分割方法成功的得到了4个连通域。但进行下一步位姿转换时,需要用到导引灯圆心坐标。基于形态学的角度来分析导引灯,可以得到结论:从特征点(导引灯中心)向外延伸的导引灯连通域,基本是成圆形。所以为了准确的得到圆心位置,可以把边界的统计矩作为检测边界,利用形态学方法求取[14]

2.2 坐标转换

将特征点由图像坐标系转换到世界坐标系的过程,需要用到3个坐标系:1)图像坐标系,2)相机坐标系,3)世界坐标系。转换关系为:

$\left[ {\begin{array}{*{20}{c}} u \\ v \\ 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 \\ y \\ 1 \end{array}} \right]\text{。}$ (6)

式中: $\left( {u,v} \right)$ 为图像坐标系原点在像素坐标系中的坐标; $dx$ $dy$ 是像素在图像平面 $x$ $y$ 方向上的物理尺度。

相机坐标系{ $c$ }:坐标原点建立在摄像机的光心处,摄像机固定在水下机器人身上,只考虑刚体运动。用( ${X^c}$ ${Y^c}$ ${Z^c}$ )表示。

世界坐标系{ $t$ }:( ${X^t},{Y^t}$ )建立在引导灯对接口确定的平面上, ${Z_t}$ 轴垂直于该平面向外, ${X_t}$ 指向对接站右舷, ${Y_t}$ 向下。用( ${X^t}$ ${Y^t}$ ${Z^t}$ )表示。

图 6 坐标系 Fig. 6 Coordinate system

接下来,解释在相机坐标系和目标坐标系之间的转换,图像坐标和相机坐标之间的转换关系为:

${Z^c}\left[ {\begin{array}{*{20}{c}} x \\ y \\ 1 \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} f&0&0&0 \\ 0&f&0&0 \\ 0&0&1&0 \end{array}} \right]\left[ {\begin{array}{*{20}{c}} {{X^c}} \\ {{Y^c}} \\ {{Z^c}} \\ 1 \end{array}} \right]\text{,}$ (7)

${Z^c}\left[ {\begin{array}{*{20}{c}} u \\ v \\ 1 \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} {{k_x}}&0&{{u_0}}&0 \\ 0&{{k_y}}&{{v_0}}&0 \\ 0&0&1&0 \end{array}} \right]\left[ {\begin{array}{*{20}{c}} {{X^c}} \\ {{Y^c}} \\ {{Z^c}} \\ 1 \end{array}} \right]\text{。}$ (8)

其中: ${k_x} = {a_x}f$ $X$ 轴方向的放大系数; ${k_y} = {a_y}f$ $Y$ 轴方向的放大系数。 $({u_0},{v_0})$ 为相机的光轴中心点,也称相机镜头的光心。相机坐标系与目标坐标系的转换关系为:

$\left[ {\begin{array}{*{20}{c}} {{X^c}} \\ {{Y^c}} \\ {{Z^c}} \\ 1 \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} R&t \\ {{0^T}}&1 \end{array}} \right]\left[ {\begin{array}{*{20}{c}} {{X^t}} \\ {{Y^t}} \\ {{Z^t}} \\ 1 \end{array}} \right]\text{,}$ (9)

其中 $R$ $3 \times 3$ 的旋转矩阵,有 ${R^{\rm T}}R = R{R^{\rm T}} = I$ $\det \left( R \right) = + 1$ 的性质。

所以图像坐标到世界坐标之间的转换关系为:

${Z^c}\left[ {\begin{array}{*{20}{c}} u \\ v \\ 1 \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} {{k_x}}&0&{{u_0}}&0 \\ 0&{{k_y}}&{{v_0}}&0 \\ 0&0&1&0 \end{array}} \right]\left[ {\begin{array}{*{20}{c}} R&t \\ {{0^T}}&1 \end{array}} \right]\left[ {\begin{array}{*{20}{c}} {{X^t}} \\ {{Y^t}} \\ {{Z^t}} \\ 1 \end{array}} \right]\text{。}$ (10)

求解姿态矩阵 $ \left[R,t\right]$ ,有相机标定可以得到内参数矩阵,所以上式中有9个未知量,所以根据前文求得的4个导引灯的坐标信息可以得到8个方程,又因为 是旋转矩阵,所以便求得姿态矩阵。根据本文设计的目标检测与分割算法,可以提取出位于4个导引灯的二维图像坐标信息以及已知的导引灯所在的世界坐标信息,从而转换为共面的P4P问题,所以采用PnP问题中的L-M迭代算法求解位姿矩阵[15]。求解后便能够根据特征点在二维图像中的坐标进行转换,进而估计中继器的位姿[16]

3 实验验证与分析 3.1 目标检测算法实验

为了对水下对接引导算法进行验证,设计了标定板以及引导光源作为对接装置的模拟,并在此基础上制作了DOCK数据集,用于对目标检测算法的训练、验证。按照VOC格式制作数据集。数据集分为训练集和测试集,其中训练集816张,测试集200张。如表2所示。

表 2 数据集 Tab.2 Date set

对接模拟装置如图7所示,在矩形板4个角上布置LED灯模拟引导灯方案[16]。对改进的YOLOv3目标检测网络进行训练,软件配置为:GTX1050Ti,intel i5CPU,64GB内存,操作系统win10。模型训练的超参数为:批次大小为6,本次训练的迭代轮数为1500。通过选定 ${\lambda _1}$ $ {\lambda }_{2}$ $ {\lambda }_{3}$ 等参数值,观察损失函数训练曲线,并参考原始YOLOv3网络参数,得到训练效果如图8所示。

图 7 对接模拟装置 Fig. 7 Docking simulator

图8可知,在训练过程中,一开始损失值(loss)较高,不断波动,随着训练过程进行,损失值不断减小。到了200个epoch的附近,损失值趋于收敛,中间有小部分波动,最后loss值趋于稳定。

图 8 改进的神经网络训练过程 Fig. 8 Improved Neural network training process

表 3 实验结果 Tab.3 Experimental result

选取200张模拟水下环境的模拟对接版的照片,进行检测,可以看出提出的改进YOLOv3模型检测准确率达到了91.5%,能够较好完成水下对接导引过程中的检测任务。而且,从图9的检测结果可以看出,检测算法对于对接模拟板有很好的检测结果。

图 9 目标检测结果 Fig. 9 Target detection results
3.2 特征点提取实验

为了验证水下对接引导算法的可行性,以及改进后的目标检测算法的有效性,通过模拟水下机器人与中继器从远到近的对接过程,采集模拟标定板的图片,进行自整定阈值分割算法处理,并进行与传统算法的特征点提取准确率对比。

自整定分割的效果图如图10图11所示。可以看出能够较准确分割出特征点在图像中的位置,进而进行坐标转换,从而减少后续位姿估计的误差,并选取20张照片进行特征点提取准确率试验验证。由表4的特征提取准确率可以看出,基于YOLOv3改进的水下对接视觉引导方案能够更好减少背景信息的干扰,在准确性方面能够很好完成任务,提高特征点提取的准确率。所以设计的水下对接引导算法能够很好的应用到水下对接。

图 10 自整定阈值分割 Fig. 10 Adaptive threshold segmentation

图 11 形态学求取坐标 Fig. 11 Calculate the coordinates

表 4 特征点提取成功率 Tab.4 Accuracy of feature point extraction

图 12 特征点提取效果图 Fig. 12 Feature point extraction effect drawing
4 结 语

为了更好减少无关的背景信息干扰,完成近距离水下对接,设计一种基于神经网络的水下对接引导算法。改进的YOLOv3目标检测算法很好地完成了对中继器在二维图像中的目标定位,准确分割了背景信息与感兴趣区域,具有更好的鲁棒性、准确性。然后通过特征点提取,坐标转换完成对对接板的位姿估计。实验以对接板模拟中继器,通过选取不同距离的参考点来验证方案的有效性。实验结果表明:1)基于神经网络的目标检测算法可以准确完成对中继器在二维图像中的目标提取。2)位姿估计方案能够有效准确完成特征点提取,坐标转换。未来的研究方向是基于提出的算法框架进行水下实际对接实验,并进行数据分析及算法改进,将该技术应用到实际工程中去。

参考文献
[1]
BELLINGHAM J. G. (2016) Autonomous underwater vehicle docking. In: Dhanak, M. R. and Xiros, N. I. (eds) Springer International Publishing, 387–406.
[2]
LI Y, JIANG Y, CAO J, et al. Auv docking experiments based on vision positioning using two cameras[J]. Ocean Engineering, 2015, 110: 163-173. DOI:10.1016/j.oceaneng.2015.10.015
[3]
MAKI T, SHIROKU R, SATO Y, et al. (2013) Docking method for hovering type auvs by acoustic and visual positioning[C]// In: 2013 IEEE International Underwater Technology Symposium(UT), Tokyo, Japan, 5–8 March 2013, 1–6.
[4]
H. SINGH, G. JAMES. Docking for an autonomous ocean sampling network[J]. IEEE Journal of Oceanic Engineering, 2001, 498-514.
[5]
ZENG A, YU Kuanting, SONG Shuran, et al. Multi-view self-supervised deep learning for 6d pose estimation in the amazon picking challenge[C]// IEEE International Conference on Robotics and Automation. Piscataway, NJ: IEEE Press, 2017: 1386−1383.
[6]
GIRSHICK R, DONAHUE J, DARRELL T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C]//IEEE Conference on Computer Vision & Pattern Recognition. IEEE Computer Society, 2014: 580−587.
[7]
GIRSHICK R B. Fast R-CNN[C]//The IEEE International Conference on Computer Vision (ICCV), 2015: 1440–1448.
[8]
DAI J, LI Y, HE K, et al. R-FCN: object detection via region-based fully convolutional networks[C]//Conference and Workshop on Neural Information Processing Systems, 2016: 379–387.
[9]
REDMON J, FARHADI A. YOLO9000: better, faster, stronger[C]//The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017: 7263−7271.
[10]
LIU W, ANGUELOV D, ERHAN D, et al. SSD: single shot multibox detector[C]//European Conference on Computer Vision. 2016: 21–37.
[11]
HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition[C]//IEEE Conference on Computer Vision and Pattern Recognition(CVPR). IEEE Computer Society, 2016: 770−778.
[12]
HUANG G, LIU Z, LAURENS V D M. Densely connected convolutional networks[C]//IEEE conference on Computer Vision and Pattern Recognition, 2017: 2261−2269.
[13]
王丙乾, 唐元贵. 面向ARV水下对接的视觉引导信息特征点匹配算法研究[J]. 海洋技术学报, 2018, 37(5): 9-15.
[14]
ZHANG Z. Flexible camera calibration by viewing a plane from unknown orientations[C]// Proceedings of the Seventh IEEE International Conference on Computer Vision. IEEE, 1999.
[15]
ZHANG Z. A flexible new technique for camera calibration[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2000, 22(11): 1330-1334. DOI:10.1109/34.888718
[16]
伊文康, 高宏伟. 基于视觉的水下机器人自主对接引导算法研究[D]. 沈阳: 沈阳理工大学, 2017.