1.一种基于视觉扫描的船槽定位方法,包括集装箱船槽舱位扫描、船槽舱位图像拼接、图像预处理与数学形态学船槽边缘检测、船槽舱位边缘直线检测、船槽舱位分段及船槽定位,所述集装箱船槽舱位扫描:当需要进行集装箱装卸时,首先使用已标定完成的双目视觉系统,以集装箱船靠岸一侧为起点,逐渐移动吊具并不断拍摄船槽舱位图像,直到吊具到达船体另一侧为止,结果得到一组有序的船槽舱位图像f={fi|i=1,2,…n},其中n为图像数量,fi表示第i张图像;
所述船槽舱位图像拼接:实时在移动吊具拍摄船槽舱位图像的过程中,图像拼接算法实时地拼接相邻的两张图像,最后得到一组双目摄像头的完整的船槽舱位图F1;
所述图像预处理与数学形态学船槽边缘检测:对经过图像拼接得到的船槽舱位图像F1进行图像灰度化处理、图像去噪声处理、图像锐化处理以及图像高斯平滑处理,进一步利用数学形态学边缘检测方法对图像F1进行边缘检测,根据式子(1),得到边缘图像G:其中0≤ρ≤1,ΔG=Gmax-Gmin,Gmax=max{G1,G2},Gmin=min{G1,G2},e1、e2和e3表示形态学检测用到的结构元素,“Θ”表示腐蚀操作, 表示膨胀操作,“ο”表示开运算操作,“·”表示闭运算操作;
所述船槽舱位边缘直线检测:利用霍夫变换直线检测方法对船槽舱位边缘图像G进行直线检测,得到直线集合L={Lj|j=1,2,…,m},m为检测的直线总数;进一步对直线集合L进行直线过滤,分别得到船槽舱位边缘水平线Lh和船槽舱位边缘垂直线Lv1和Lv2,计算水平直线和垂直直线的交点,结果得到P={P1,P2},其中P1为直线Lh和直线Lv1的交点,P2为直线Lh和直线Lv2的交点,重复船槽舱位图像拼接、图像预处理与数学形态学船槽边缘检测及船槽舱位边缘直线检测步骤,得到另外一组双目摄像头的船槽舱位图像F2中的船槽舱位水平边缘直线和垂直边缘直线,进一步得图像F2中的直线交点P3和P4,其中点P3与点P1对应,点P4和点P2对应,这四个点构成了船槽舱位的整体边缘轮廓;
所述船槽舱位分段及船槽定位:根据船槽安装工艺的标准,量出船槽的实际宽度为length,根据式(2),利用船槽舱位的四个顶点P1、P2、P3、P4计算出船槽舱位的长度D:其中|P1P2|为点P1到P2的距离,|P3P4|为点P3到点P4的距离,得到的四个顶点用于标识船槽的具体位置,即能定位船槽。
2.根据权利要求1所述的一种基于视觉扫描的船槽定位方法,其特征在于所述船槽舱位图像拼接具体步骤如下:
步骤1.1:当船槽舱位图像序列f中有两张船槽舱位图像时,就启动图像拼接算法;
步骤1.2:从图像序列f中获取相邻的两张船槽舱位图像f1和f2,再分别利用SIFT算法提取图像的SIFT特征;
步骤1.3:利用K-D Tree和BBN算法,对步骤1.2提取的两张船槽舱位图的SIFT特征匹配点进行查询;
步骤1.4:利用RANSAC算法筛选步骤1.3所查询的特征匹配点并计算变换矩阵H,该变换矩阵表示两张图像的重叠区域;
步骤1.5:利用步骤1.4得到的变换矩阵H、图像f1和f2进行图像拼接,得到拼接图F1,并将图像拼接过程分为三部分:(1)取图像f2经变换矩阵H变换生成一张新图像作为拼接图F1的初始图像;(2)取图像f1和图像f2重叠区域的加权平均作为拼接图像F1的中间部分;(3)取图像f1去掉重叠区域的剩余部分作为拼接图像F1的左边部分,其中加权平均的权重选择根据图像f1和f2重叠区域的宽度以及重叠区域中的点到重叠区域左边界和右边界的距离来计算重叠区域的像素值PixelF,具体见式(3):其中d1为图像重叠区域
中的点到左边界的距离,d2为图像重叠区域中的点到右边界的距离, 为重叠区域中的点在图像f1中的像素值, 为重叠区域中的点在图像f2中的像素值。
3.根据权利要求1所述的一种基于视觉扫描的船槽定位方法,其特征在于所述船槽舱位边缘直线检测具体步骤如下:
步骤2.1:对船槽边缘的水平线进行检测,首先通过判断直线Lj的斜率,过滤直线斜率不满足|K|≤0.087的直线,得到直线候选集合Lsh={Lshk|k=1,2,…,Nh},Nh为过滤后直线的总数;其次把直线候选集合Lsh中斜率相同的且平行直线之间的距离d满足d≤4的直线聚为一类,得到直线聚合类Lch={Lchr|r=1,2,…,Qh},Lchr表示第r个直线聚合类,Qh为直线聚合类的数量;再利用最小二乘法分别对每个直线聚合类中的直线进行拟合,结果得到一个直线集合Lfh={Lfhr|r=1,2,…,Qh},Qh为直线拟合后的直线总数,Lfhr表示由直线聚合类Lchr拟合得到的直线;最后利用在图像F1区域内直线Lfhr所经过的像素点灰度值构成集合并计算该集合的方差,进一步得到直线集合Lfh对应的灰度值方差集合Var,获取Lfh中灰度值方差最小的直线即为船槽舱位水平边缘直线Lh;
步骤2.2:对船槽舱位边缘垂直线进行检测,首先通过判断直线Lj的斜率,保留直线斜率满足|K|≥11.43的直线,进一步得到直线候选集合Lsv={Lsvk|k=1,2,…,Nv},Nv为过滤后直线的总数;其次把直线候选集合Lsv中斜率相同的且平行直线之间的距离d满足d≤4的直线聚为一类,得到直线聚合类Lcv={Lcvr|r=1,2,…,Qv},Lcvr表示第r个直线聚合类,Qv为直线聚合类的总数,再利用最小二乘法分别对每个直线聚合类的直线进行拟合,结果为直线集合Lfv={Lfvr|r=1,2,…,Qv},Qv为直线拟合后的直线总数,Lfvr表示由直线聚合类Lcvr拟合得到的直线;进一步利用Lfvr在图像F1中的位置,过滤图像中间区域内的垂直线,结果得到直线集合Lbv={Lbvr|r=1,2,…,Tv},Tv为过滤垂直线后的直线总数;最后利用在图像F1区域内直线Lbvr所经过的像素点灰度值构成集合并计算该集合的方差,进一步得到直线集合Lbv对应的灰度值方差集合Var,获取Lbv中灰度值方差最小的两条直线即为船槽舱位垂直边缘直线Lv1和Lv2;
步骤2.3:利用步骤2.1和步骤2.2检测到的船槽舱位边缘水平直线Lh以及垂直直线Lv1和Lv2,分别计算水平直线和垂直直线的交点,结果得到P={P1,P2},其中P1为直线Lh和直线Lv1的交点,P2为直线Lh和直线Lv2的交点;
步骤2.4:重复步骤2.1-2.3,得到另外一组双目摄像头的船槽舱位图像F2中的船槽舱位水平边缘直线和垂直边缘直线,进一步得图像F2中的直线交点P3和P4,其中点P3与点P1对应,点P4和点P2对应,这四个点构成了船槽舱位的整体边缘轮廓。
4.根据权利要求1所述的一种基于视觉扫描的船槽定位方法,其特征在于船槽舱位分段按照船槽宽度进行分段,具体步骤如下:
步骤3.1:首先将点P1和点P3的坐标保存到第一个船槽E1中,其次从坐标点P1开始,在对应的直线P1P2上找到第一个和点P1之间的距离等于船槽宽度length的点A,同理,从坐标点P3开始,在对应的直线P3P4上找到第一个和点P3之间的距离等于船槽宽度length的点B,同时保证直线AB和直线P1P3的斜率相同;
步骤3.2:将步骤3.1找到的点A和点B保存到第一个船槽E1中,则在船槽实体E1中包含点P1、P3、A、B,这四个点标识了第一个船槽的位置,再将E1保存到船槽队列E={Ei|i=1,2,…,K}中,其中K为船槽的总个数;进一步将点A和点B保存到第二个船槽E2中,再按照步骤3.1的方法,找到属于第二个船槽的另外两个顶点,循环整个过程,直到点P2和点P4为止,最后得到一个船槽队列E,船槽队列中的每个船槽包括四个顶点,这四个顶点标识船槽的具体位置,即可定位船槽。