[0005] 本发明针对现有技术的不足,提出了一种基于深度学习的集装箱角件识别方法。
[0006] 本发明结合同场景下彩色相机的高分辨率彩色图片与深度相机采集到的深度图、强度图,利用YOLO‑v3神经网络和主成分分析法检测出集装箱角件在现实世界中的坐标,以及角件所在平面与相机所在平面的夹角。具体步骤是:
[0007] 步骤(1)使用彩色相机获取一张集装箱所在区域的高分辨率彩色图像记为C,使用深度相机获取集装箱所在区域内的深度图记为D、强度图记为I;
[0008] 步骤(2)使用YOLO‑v3神经网络检测彩色图片中的集装箱与角件;具体如下:
[0009] ①将彩色图像输入训练好的YOLO‑v3神经网络中;神经网络会自动对输入图像进行特征提取,然后利用提取出的特征对目标物体在彩色图像中的坐标进行预测,最后经过对多个可能的坐标进行筛选,输出可能性最大的坐标,精确到像素;其中YOLO‑v3的检测目标为集装箱和角件,最后会输出三个结果,分别是集装箱与两个角件;
[0010] ②判断网络输出是否有效;通过对两个角件的坐标是否位于集装箱坐标内来判断网络结果的正确性,只有正确才进入下一步;具体方式如下:
[0011]
[0012] 其中,flag表示结果是否有效,xbox_min,xbox_max,ybox_min,ybox_max分别是集装箱在彩色图中的横纵坐标范围,i,j分别是角件的横纵坐标;
[0013] 步骤(3)将彩色图片中集装箱所在区域转换为灰度图,记为G;使用SURF算子检测灰度图G与强度图I中的关键点,并用FLANN算法匹配两张图片的描述算子,并且计算两者关键点之间的距离;根据距离的值域选择阈值,小于阈值则作为匹配的关键点;对匹配的关键点进行透视变换,得到变换矩阵H,并在强度图中框出所有的匹配点,将这个区域认定为深度相机中集装箱的坐标,并将位于G中角件位置的关键点在I中对应的关键点作为角件的坐标;
[0014] 步骤(4)根据集装箱在深度图中的位置,提取出集装箱平面的三维坐标数据;因为上一步的集装箱的深度区域并不只是角件所在平面,所以,需要对集装箱角件平面所在区域进行筛选;具体筛选步骤如下:
[0015] 设两个角件的深度图坐标分别为(x1,y1)和(x2,y2),则区域内的点(m,n)应符合以下条件:
[0016]
[0017] 对满足以上条件的点进行建模,来获得集装箱角件平面与相机平面的夹角;具体步骤如下:
[0018] 对平面建立平面模型:
[0019] Ax+By+Cz+D=0
[0020] 其中A、B、C、D为平面的参数,x、y、z为平面上点的坐标值;
[0021] 根据深度相机的置信度图,将每个三维坐标对应的置信度与阈值进行比较,当置信度达到要求,才将其计入计算点集中,反之则丢弃;
[0022] 利用主成分分析算法求解平面法向量的参数,计算方法如下:
[0023] (a)求解平面上所有点的协方差矩阵;公式为:
[0024] Σ=E(hhT)‑E(h)E(hhT)
[0025] (b)求解协方差矩阵的特征向量与特征值,其中最小特征值对应的特征向量就是平面对应的法向量,也就是平面方程中的参数A、B、C;
[0026] (c)将集装箱平面的三维坐标数据中的所有有效数据代入方程,求得多个D值,对D值求平均,得到一个较为准确的D;
[0027] (d)在获得了角件平面在深度相机坐标系的方程后,利用立体几何中的方法,计算出深度相机所在垂直平面与角件平面的夹角;使用公式如下:
[0028]
[0029] 其中,θ为两平面之间的夹角, 和 分别为相机垂直于地面平面的法向量与角件平面的法向量;
[0030] 利用步骤(1)‑(4),获得角件所在平面与相机平面的夹角与角件的三维坐标。
[0031] 本发明的有益效果:本发明方法利用了神经网络强大的拟合能力,检测出目标物体在图像中的具体位置,再将目标物体的彩色图片作为样本,来找到深度图中物体的对应位置,避免了深度相机与彩色相机繁琐的转换过程,得到的集装箱角件位置准确,平面夹角估计准确。
[0032] 具体实施步骤
[0033] 步骤(1)使用彩色相机获取一张高分辨率彩色图像记为C,使用深度相机获取集装箱所在区域内的深度图记为D、强度图记为I。
[0034] 步骤(2)使用YOLO‑v3神经网络检测彩色图片中的集装箱与角件。具体如下:
[0035] ①将彩色图像输入训练好的YOLO神经网络中。神经网络会自动对输入图像进行特征提取,然后利用提取出的特征对目标物体在彩色图像中的坐标进行预测,最后经过对多个可能的坐标进行筛选,输出可能性最大的坐标,精确到像素。本发明中,YOLO的检测目标为集装箱和角件,最后会输出三个结果(分别是集装箱与两个角件)。
[0036] ②判断网络输出是否有效。通过对两个角件的坐标是否位于集装箱坐标内来判断网络结果的正确性,只有正确才进入下一步。具体方式如下:
[0037]
[0038] 其中,flag表示结果是否有效,xbox_min,xbox_max,ybox_min,ybox_max分别是集装箱在彩色图中的横纵坐标范围,i,j分别是角件的横纵坐标。
[0039] 步骤(3)将彩色图片中集装箱所在区域转换为灰度图,记为G。使用SURF算子检测灰度图G与强度图I中的关键点,并用FLANN算法匹配两张图片的描述算子,并且计算两者关键点之间的距离。根据距离的值域选择合适的阈值,阈值用来筛选匹配的关键点。对关键点进行透视变换,得到变换矩阵H,并在强度图中框中所有的匹配点,将这个区域认定为深度相机中集装箱的坐标,并将位于G中角件位置的关键点在I中对应的关键点作为角件的坐标。
[0040] 步骤(4)根据集装箱在深度图中的位置,提取出集装箱平面的三维坐标数据(点云)。因为上一步的集装箱的深度区域并不只是角件所在平面,所以,需要对集装箱角件平面所在区域进行筛选。具体筛选步骤如下:
[0041] 设两个角件的深度图坐标分别为(x1,y1)和(x2,y2),则区域内的点(m,n)应符合以下条件:
[0042]
[0043] 对满足以上条件的点进行建模,来获得集装箱角件平面与相机平面的夹角。具体步骤如下:
[0044] 对平面建立平面模型:
[0045] Ax+By+Cz+D=0
[0046] 其中A、B、C、D为平面的参数,x、y、z为平面上点的坐标值。
[0047] 利用主成分分析算法求解平面法向量的参数,计算方法如下:
[0048] (a)求解平面上所有点的协方差矩阵。公式为:
[0049] Σ=E(xxT)‑E(x)E(xT)
[0050] (b)求解协方差矩阵的特征向量与特征值,其中最小特征值对应的特征向量就是平面对应的法向量,也就是平面方程中的参数A、B、C。
[0051] (c)将点云中的所有有效数据代入方程,求得多个D值,对D值求平均,得到一个较为准确的D。
[0052] 通过主成分分析算法,可以得到一个较为准确的平面方程,但是,因为深度相机采集到的数据存在大量噪声,对平面方程准确性存在较大影响,需要对原始数据进行预处理。具体方法为:
[0053] 根据深度相机的置信度图,将每个三维坐标对应的置信度与阈值进行比较,当置信度达到要求,才将其计入计算点集中,反之则丢弃。
[0054] (d)在获得了平面在深度相机坐标系的方程后,利用立体几何中的方法,计算出深度相机所在垂直平面与角件平面的夹角。使用公式如下:
[0055]
[0056] 其中,θ为两平面之间的夹角,和 分别为相机垂直于地面平面的法向量与角件平面的法向量。
[0057] 利用以上4个步骤,可以获得角件所在平面与相机平面的夹角与角件的三维坐标。