一种基于深度学习算法的船舶水尺图像自动读数方法
技术领域
本发明属于船舶水尺读数自动测量技术领域,特别是涉及一种基于深度学习算法的船舶水尺图像自动读数方法。
背景技术
水尺计重是目前海运大宗散货运用最多,最频繁的一种计量方式,主要适用于一些价值不高或不易用衡器计量的海运散装固态商品计重,如煤炭,矿石等。水尺计重是通过在装船或卸船前后两次测定船舶水尺,船上淡水,压舱水,以及燃油量,同时前后两次测定船边水的密度,然后根据排水量表,静水力曲线图表,水油舱计量表和矫正表等计算出船舶载运货物的重量。与其他计量方式相比,水尺计重的成本低,简单易操作,耗时短,但由于方法自身的原因,观测人员的技术水平,所代表的利益方不同,会存在测量的误差。由于人眼观测水尺存在主观因素,观测水尺过程中数据无法详细记录,观测点数据少,缺乏客观性,容易导致船方,港方,以及第三方之间对水尺读数产生争执。故提高船舶水尺读数的客观性,精确度,科学性一直都是水尺计重领域的难点问题。
目前绝大多数的船舶水尺都是人工参与读数的,而基于图像处理算法的船舶水尺自动读数研究相对较少,基于深度学习算法的船舶水尺自动读数研究尚未有相关文献报道。船舶水尺图像中的数字由于长期浸泡在水中,腐蚀严重;船体与拖船碰撞也会在数字上留下划痕;船底部数字表面上甚至会有污泥和海草,这都使得基于图像处理算法的数字识别和定位变得很困难。另外由于船舶种类繁多,船体颜色各不相同;现场光线,船体颜色,水质浑浊度等条件纷繁复杂,水体颜色也各不相同;因此船舶水尺图像中船体与水体交界处的水线识别更加困难。除此之外,摄像机视线与船体数字表面垂线有水平方向或垂直方向较大角度时,图像中数字会产生较大畸变,这会对数字的准确识别造成影响,也会对水尺读数计算带来困难。
发明内容
本发明为了解决现有的技术问题,提出一种基于深度学习算法的船舶水尺图像自动读数方法。该方法实现了复杂情况下数字和水线图像识别定位,水尺自动读数,读数效果可靠。
本发明的目的通过以下技术方案实现:一种基于深度学习算法的船舶水尺图像自动读数方法,包括以下步骤:
步骤1、数字识别定位和位置矫正:对采集到的水尺视频取帧,对单帧水尺图像利用FasterRCNN算法对图像中的数字进行识别得到数字数值和数字的矩形边框的四个顶点坐标,对数字矩形边框设计了精确数字外边框算法得到精确数字边框四个顶点坐标;
步骤2、组合同一行数字:根据步骤1中得到的船舶水尺图中所有数字数值和其边框坐标,设计基于人眼读数原理的组合数字算法组合同一行数字,并联系上下行的整米数,使同一行的单独的数字组合成一个拥有整米和分米的数;
步骤3、不同船体颜色背景下水线识别:对单帧水尺图像判断水尺图像光照情况和船体背景颜色,若是红色或黑色船体情况则选择快速水线识别方法,采用RGB三通道像素前向差分得到水线坐标信息,其他情况采用FasterRCNN算法对图像中的水线识别得到水线坐标;
步骤4、长度基准计算:利用步骤2中得到的船舶水尺图中每行数字数值和其边框坐标求出水线相邻行数字像素间距相对于实际长度的基准;
步骤5、倾斜数字与水线间距修正:计算水线到数字的间距与相邻两个数字间距的比例,若数字是倾斜排列,修正数字与水线间距后得到水线到数字的间距与相邻两个数字间距的比例;
步骤6、计算水尺读数:利用步骤5得到的水线到数字的间距与相邻两个数字间距的比例和步骤4得到的长度基准得到水线到相邻数字的长度,再利用步骤2得到的水线上最近行的数,计算出单帧图像水尺读数,重复计算视频剩余帧图像读数,计算所有帧图像水尺读数平均值即为该视频水尺读数。
进一步地,所述步骤1具体为:利用FasterRCNN算法对船舶水尺图像中的数字进行识别得到数字数值和数字的矩形边框的四个顶点,即A,B,C和D;A,B,C,D分别是矩形左上,右上,右下,左下四个顶点;
1)遍历矩形边框内的灰度图像素点,像素点总数为Sp,将所有像素值按升序排序,设定比例系数α,选择第α*Sp位的像素点的像素值Vp为数字像素值阈值Vt;
2)遍历上边框A-B上的像素点;若A-B上像素值Vp没有大于Vt,则上边框向下移动1个像素,继续遍历新的上边框,若Vp仍没有大于Vt,上边框继续向下移动1个像素,直到上边框上像素值Vp大于Vt,记录此时新上边框的端点位置A1,B1;然后上边框连续4次向下移动1个像素,遍历检验4次边框上像素值Vp是否都存在大于Vt的像素点,若存在则A1,B1为新上边框的端点位置,若不存在,则上边框继续向下移动1个像素后遍历像素值,直到满足上述要求,此时新上边框的端点位置A1,B1;
若A-B上存在像素值Vp大于Vt,则上边框向上移动1个像素,继续遍历新的上边框,若仍存在Vp大于Vt,上边框继续向上移动1个像素,直到上边框上所有像素值Vp都小于Vt,记录此时新上边框的端点位置A1,B1;
3)按照2)的方式,依次矫正右边框B1-C,得到新边框B2-C1;矫正下边框C1-D,得到新边框C2-D1;矫正左边框D1-A1,得到新边框D2-A2,至此,数字边框矫正完毕,新边框的四个顶点为A2,B2,C2和D2。
进一步地,所述步骤2具体为:
1)计算图中所有数字的高度hi,然后计算数字的平均高度
2)将所有数字按右下点竖坐标yi升序排列,设定一个比例系数β,读取第一个数字右下点竖坐标y1,将第一个数字分配序号1,读取第二个数字右下点竖坐标y2,若|y2-y1|小于则将第二个数字分配序号1,否则将第二个数字分配序号2,读取第三个数字右下点竖坐标y3,若|y3-y2|小于则将第三个数字分配为前一个数字的序号,否则将第三个数字分配为前一个数字的序号加上1后的序号,按照上述的规律将所有数字分配好序号,序号总数为j;
3)从序号1开始依次读取所有同一序号的数,该序号的数的总数为i,将同一序号的数按右下点横坐标xi降序排序,将字母M视为数字0,同一行数字组合后的数值为N,同一序号的数按顺序依次为n1,n2,…,ni,则同一行数字组合后的数值为N计算公式为:
将数值N和n1的坐标信息保留,记为该序号下唯一的数;
4)将N1,…,Nj按序号升序排列,j为序号总数;依次读取4个数N1,N2,N3,N4,若4个数都存在十位或都不存在十位,则计算完毕;若4个数中存在一个数有十位,该数序号为k,则该4个数加上十位后的实际数值计算公式为:
若序号总数不足4,则读取所有的数;若依次读取4个数后剩下的数的个数不足4个,则读取最后的4个数。
进一步地,所述步骤3具体为:
1)识别水尺图像光照强度,遍历图像底部,长为图像长,宽为图像宽的1/4的矩形区域像素点,求出所述矩形区域像素值的平均值大于100时,记为光线暗情况,否则记为光线亮情况;
2)识别船体背景颜色,遍历图像顶部,长为图像长,宽为图像宽的1/4的矩形区域像素点,求出所述矩形区域像素值的平均值小于50时,记为黑色船体,将彩色图像分为RGB三通道图像,分别遍历三通道图像顶部,长为图像长,宽为图像宽的1/4的矩形区域像素点,求出RGB三通道所述矩形区域像素值的平均值分别为若则记为红色船体;
3)将彩色图像分为RGB三通道图像,分别处理三通道图像;读取红色通道图像,按数字右下点拟合直线向下遍历线上的像素点,记录这一列像素值Vp1,,…,Vpn;设计一大小为20×1的中值滤波器,对该列数据进行滤波,消除高频噪声;RGB三通道结果分别为VpR,VpG,VpB;
若船体颜色是红色,则设定一个比例系数γ,求出红色与绿色通道像素值之差VpR-G;
VpR-G=VpR-γ*VpG
然后对差值VpR-G求前向差分:
DVpR-G(i)=VpR-G(i+1)-VpR-G(i),0<i<n
DVpR-G中最小的负数所对应坐标就是水线的位置,按上述原理,每隔10像素向右平移拟合直线5次,每隔10像素向左平移拟合直线5次,分别向下遍历线上的像素点,将所得的11个水线坐标信息拟合出一条曲线,所述曲线为红色船体图像数字邻近的水线;
若船体颜色是黑色,则对VpR求前向差分:
DVpR(i)=VpR(i+1)-VpR(i),0<i<n
DVpR中最小的负数所对应坐标就是水线的位置,按上述原理,每隔10像素向右平移拟合直线5次,每隔10像素向左平移拟合直线5次,分别向下遍历线上的像素点,将所得的11个水线坐标信息拟合出一条曲线,所述曲线为黑色船体图像数字邻近的水线。
进一步地,所述步骤4具体为:
1)水尺图像若是平视图像,遍历组合数字N'i,组合数字总数为n,计算相邻数字右下点竖坐标差值;
ΔN′i=N′i+1-N′i,1<f<n
将ΔN'i按升序排列,则20厘米长度基准对应的像素长度L20cm为:
2)水尺图像若是俯视图像,遍历组合数字N'i,组合数字总数为n,计算相邻数字右下点竖坐标差值;
ΔN′i=N′i+1-N′i,1<i<n
将数据(i,ΔN'i)拟合出一条直线y=k*x+b,其中k为斜率,b为数字框框高,认为ΔN'i随着i变大呈现等差数列递增的变化,若水线位于组合数字N'm以下或N'm+1以上,则20厘米长度基准对应的像素长度L20cm为:
L20cm=k*m+b
3)水线位于组合数字N′m以下或N′m+1以上,则20厘米长度基准对应的像素长度L20cm为ΔN′m-1;
4)水线位于组合数字N′m以下或N′m+1以上,组合数字字长为Lm,若数字实际字长为10厘米,则L10cm=Lm,若数字实际字长为5厘米,则L5cm=Lm。
进一步地,所述步骤5具体为:
计算水线到数字的间距与相邻两个数字间距的比例,便可计算出水线的数值,数字如果是竖直排列的,数字间距为Ln2n,水线到最近数字间距为Ln2w,则数字间距与数字到水线间距比例为Ln2n/Ln2w;数字若是倾斜排列的,倾斜数字与水线间距会存在偏差,记数字倾斜间距为Ln2n,数字竖直间距为L′n2n,水线到最近数字右下点倾斜间距为Ln2w,水线到最近数字右下点竖直间距为L′n2w,两个数字右下点拟合直线斜率为k;
1)若k>0,拟合直线与竖直方向夹角为θ,k=cosθ/sinθ,水线到数字的间距与相邻两个数字间距的比例P计算方法如下:
数字和数字框右下点倾斜距离记为Δl,数字和数字框右下点竖直距离记为Δl′;
数字长宽比为k1,设数字字长c,字高k1*c,则
其中b是数字框框高,a是数字框框长,则水线到数字的间距与相邻两个数字间距的比例P为:
2)若k<0,拟合直线与竖直方向夹角为θ,k=cosθ/sinθ,水线到数字的间距与相邻两个数字间距的比例P计算方法如下:
数字和数字框右下点倾斜距离记为Δl,数字和数字框右下点竖直距离记为Δl′;
数字长宽比为k1,设数字字长c,字高k1*c,则
其中b是数字框框高,a是数字框框长,则水线到数字的间距与相邻两个数字间距的比例P为:
本发明的有益效果在于:基于深度学习算法的数字识别系统可以满足环境光线变化大,数字污损严重,拍摄图像拉伸等情况下数字的识别需求,提高识别准确率,并且可以通过训练学习的方法让识别准确率进一步提升。针对深度学习的数字识别定位设计了一种精确数字识别定位的算法,可以让边框逼近数字边缘,消除误差。组合数字算法可以将图中单个数字按行组合,上下拼接为每行正确的读数。针对不同船体颜色背景设计不同的基于颜色的水线检测方法,可以快速检测水线,适用于对耗时要求严格的场景。长度基准计算和倾斜数字与水线间距修正算法在提取数字边框基础上设计了一种长度与像素换算基准的计算方法和精确计算水尺读数的计算方法,消除了数字外竖直边框坐标直接计算水尺读数带来的计算误差,保证了水尺读数的准确性。
附图说明
图1是数字边框矫正示意图;其中1为没有矫正的图像,2为矫正第一步骤后图像,3为矫正第二步骤后图像,4为矫正第三步骤后图像,5为矫正完后图像;
图2是拟合直线斜率k>0情况下,水线到数字的间距与相邻两个数字间距计算示意图;
图3是拟合直线斜率k<0情况下,水线到数字的间距与相邻两个数字间距计算示意图;
图4是船舶水尺视频自动读数流程图。
具体实施方式
下面将结合本发明实施例中的附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
随着国民经济的快速发展,船舶运输业也日益旺盛,在海运大宗散货交易中,测量船舶的载重量是其重要的一环。目前,在测海运大宗散货载重量中运用最多,最频繁的计量方式是水尺计重,这种计量方式主要适用于一些价值不高或不易用衡器计量的海运散装固态商品计重,如煤炭,矿石,化肥等。水尺计重的流程中有一项是在装船或卸船前后两次测定船舶水尺,目前绝大多数的船舶水尺都是人工参与读数的,由于人眼观测水尺存在主观因素,观测水尺过程中数据无法详细记录,观测点数据少,缺乏客观性,很容易导致船方,港方,以及第三方之间对水尺读数产生争执。提高船舶水尺读数的客观性,准确度,科学性一直是水尺计重领域的难点问题,故研究船舶水尺自动读数算法具有理论意义和现实意义。将机器视觉算法引入水尺计重领域,可以充分利用计算机处理的客观性,只与处理视频有关,不受观测人员主观因素影响;机器观测数据是人眼观测数据量20倍以上,且观测过程中数据可记录,水尺读数更科学,准确;同时在大风浪天气人眼无法准确读数情况下,机器可以无差别读数,适应范围更广。现有的船舶水尺数字识别算法基本上采用模板匹配算法,主要对拍摄清晰,不太倾斜的数字实现识别,但大多船舶水尺图像中的数字由于长期浸泡在水中,腐蚀掉漆严重;船体与拖船碰撞也会在数字上留下划痕;船底部数字表面上甚至会有污泥和海草,基于常规图像处理的数字识别算法无法正常识别。另外由于船舶种类繁多,船体颜色各不相同;现场光线,船体颜色,水质浑浊度等条件纷繁复杂,水体颜色也各不相同;因此船舶水尺图像中船体与水体交界处的水线识别更加困难。本发明设计了一种船舶水尺图像数字与水线识别和位置矫正方法,能有效识别,精准定位复杂环境下的数字和水线。在进行船舶水尺数字和水线识别定位基础上,本发明设计了一种基于人眼读数原理的组合数字算法并将水尺图像中的像素长度和实际长度换算,对倾斜数字与水线间距进行了修正,实现船舶水尺图像的自动读数。
考虑到船舶水尺图像中数字识别和水线识别的复杂性,水尺读数计算的困难性,本发明提出了一种基于深度学习算法的船舶水尺图像自动读数方法,该方法利用FasterRCNN算法对船舶水尺图像中的数字和水线进行识别,得出数字的具体数值和在图像中的坐标以及水线在图像中的坐标,并对图像坐标进行修正;利用图中数字排列的规律,联系上下的整米数,将每行的单个数字组合成完整的数;根据每行倾斜的数的位置坐标和水线的位置坐标,通过倾斜数字矫正算法计算出水线与数字的实际像素距离,求出水线与数字像素距离占实际长度基准的百分比,得到船舶水尺图像的读数,以同样的算法对船舶水尺录像逐帧计算后,将得到的一组读数去除偏差过大的数据后取平均,得到该录像的最终水尺读数。该方法实现了复杂情况下数字和水线图像识别定位,水尺自动读数,读数效果可靠。
结合图1-图4,本发明提出一种基于深度学习算法的船舶水尺图像自动读数方法,包括以下步骤:
步骤1、数字识别定位和位置矫正。对采集到的水尺录像取帧,对单帧水尺图像利用FasterRCNN算法对图像中的数字进行识别得到数字数值和数字大概的矩形边框的四个顶点坐标,对数字矩形边框设计了精确数字外边框算法得到精确数字边框四个顶点坐标。
步骤2、组合同一行数字。步骤1中得到的船舶水尺图中所有数字数值和其边框坐标,设计基于人眼读数原理的组合数字算法组合同一行数字,并联系上下行的整米数,使同一行的单独的数字组合成一个拥有整米和分米的数。
步骤3、不同船体颜色背景下水线识别。对单帧水尺图像判断水尺图像光照情况,船体背景颜色,若是红色,黑色船体情况选择快速水线识别方法,采用RGB三通道像素前向差分得到水线坐标信息,其他情况采用FasterRCNN算法对图像中的水线识别得到水线坐标。
步骤4、长度基准计算。利用步骤2中得到的船舶水尺图中每行数字数值和其边框坐标求出水线附近相邻行数字像素间距相对于实际长度的基准。
步骤5、倾斜数字与水线间距修正。计算水线到数字的间距与相邻两个数字间距的比例,若数字是倾斜排列,修正数字与水线间距后得到水线到数字的间距与相邻两个数字间距的比例。
步骤6、计算水尺读数。利用步骤5得到的水线到数字的间距与相邻两个数字间距的比例和步骤4得到的长度基准得到水线到相邻数字的长度,再利用步骤2得到的水线上最近行的数,计算出单帧图像水尺读数,重复计算视频剩余帧图像读数,计算所有帧图像水尺读数平均值即为该视频水尺读数。
1.对单帧水尺图像进行数字识别定位和位置矫正
由于大多船舶水尺图像中的数字长期浸泡在水中,腐蚀掉漆严重;船体与拖船碰撞会在数字上留下划痕;船底部数字表面上甚至会有污泥和海草,基于常规图像处理的数字识别算法无法正常识别。本发明采用FasterRCNN算法对船舶水尺图像中的数字建立数字数据集,人工标定数据,以“图像中心矩”的选取样本的策略来训练FasterRCNN网络,每一批量的图像是由很多单一的图像构成的,而这些单一的图像都包含标注为1和0的锚点(分别记为正样本、负样本),这样能得到较小的残差值。利用上述训练好的FasterRCNN网络对船舶水尺图像进行识别得到数字数值和数字大概的矩形边框的四个顶点(A,B,C,D),如图1所示,A,B,C,D分别是矩形左上,右上,右下,左下四个顶点。精确数字外边框步骤如下:
(1)遍历矩形边框内的灰度图像素点,像素点总数为Sp,将所有像素值按升序排序,设定比例系数α,选择第α*Sp位的像素点的像素值Vp为数字像素值阈值Vt。
(2)遍历上边框A-B上的像素点。若A-B上像素值Vp没有大于Vt,则上边框向下移动1个像素,继续遍历新的上边框,若Vp仍没有大于Vt,上边框继续向下移动1个像素,直到上边框上像素值Vp大于Vt,记录此时新上边框的端点位置A1,B1。然后上边框连续4次向下移动1个像素,遍历检验4次边框上像素值Vp是否都存在大于Vt的像素点,若存在则A1,B1为新上边框的端点位置,若不存在,则上边框继续向下移动1个像素后遍历像素值,直到满足上述要求,此时新上边框的端点位置A1,B1。
若A-B上存在像素值Vp大于Vt,则上边框向上移动1个像素,继续遍历新的上边框,若仍存在Vp大于Vt,上边框继续向上移动1个像素,直到上边框上所有像素值Vp都小于Vt,记录此时新上边框的端点位置A1,B1。
(3)按照(2)的思路,依次矫正右边框B1-C,得到新边框B2-C1;矫正下边框C1-D,得到新边框C2-D1;矫正左边框D1-A1,得到新边框D2-A2,至此,数字边框矫正完毕,新边框的四个顶点为(A2,B2,C2,D2)。
2.组合图中同一行数字
按照步骤1对单帧水尺图像进行数字识别定位和位置矫正,可以得到图中所有数字数值和其精确边框坐标,组合图中同一行数字,并联系上下的整米数,使同一行的单独的数字组合成一个拥有整米和分米的数。本发明设计了组合同行数字算法,具体原理为:
(1)计算图中所有数字的高度hi,然后计算数字的平均高度
(2)将所有数字按右下点竖坐标yi升序排列,设定一个比例系数β,读取第一个数字右下点竖坐标y1,将第一个数字分配序号1,读取第二个数字右下点竖坐标y2,若|y2-y1|小于则将第二个数字分配序号1,否则将第二个数字分配序号2,读取第三个数字右下点竖坐标y3,若|y3-y2|小于则将第三个数字分配为前一个数字的序号,否则将第三个数字分配为前一个数字的序号加上1后的序号。按照这样的规律将所有数字分配好序号,序号总数为j。
(3)从序号1开始依次读取所有同一序号的数,该序号的数的总数为i,将同一序号的数按右下点横坐标xi降序排序,将字母M视为数字0,同一行数字组合后的数值为N,同一序号的数按顺序依次为n1,n2,…,ni,则同一行数字组合后的数值为N计算公式为:
将数值N和的n1的坐标信息保留,记为该序号下唯一的数。
(4)将N1,…,Nj按序号升序排列,j为序号总数。依次读取4个数N1,N2,N3,N4,若4个数都存在十位或都不存在十位,则计算完毕。若4个数中存在一个数有十位,该数序号为k,则这4个数加上十位后的实际数值计算公式为:
若序号总数不足4,则读取所有的数;若依次读取4个数后剩下的数的个数不足4个,则读取最后的4个数。
3.不同船体颜色背景下水线识别
船舶水尺图像中船体在空载情况下大多为红色,满载时为黑色,水体颜色大多为绿色,不同光照情况下,红色和绿色深浅不同。对单帧水尺图像判断水尺图像光照情况,船体背景颜色,若是红色,黑色船体情况选择快速水线识别方法,采用RGB三通道像素前向差分得到水线坐标信息,其他情况采用FasterRCNN算法对图像中的水线识别得到水线坐标。快速水线识别方法步骤如下:
(1)识别水尺图像光照强度,由于水尺图像中上部分是船体,下部分是水体,水体颜色相对受光照强度的影响更大,遍历图像底部,长为图像长,宽为图像宽的1/4的矩形区域像素点,求出这个区域像素值的平均值大于100时,记为光线暗情况,否则记为光线亮情况。
(2)识别船体背景颜色,遍历图像顶部,长为图像长,宽为图像宽的1/4的矩形区域像素点,求出这个区域像素值的平均值小于50时,记为黑色船体。将彩色图像分为RGB三通道图像,分别遍历三通道图像顶部,长为图像长,宽为图像宽的1/4的矩形区域像素点,求出RGB三通道这个区域像素值的平均值分别为若则记为红色船体。
(3)将彩色图像分为RGB三通道图像,分别处理三通道图像。读取红色通道图像,按数字右下点拟合直线向下遍历线上的像素点,记录这一列像素值Vp1,,…,Vpn。设计一大小为20×1的中值滤波器,对此列数据进行滤波,消除高频噪声。RGB三通道结果分别为VpR,VpG,VpB。
若船体颜色是红色,则设定一个比例系数γ,求出红色与绿色通道像素值之差VpR-G。
VpR-G=VpR-γ*VpG
然后对差值VpR-G求前向差分:
DVpR-G(i)=VpR-G(i+1)-VpR-G(i),0<i<n
DVpR-G中最小的负数所对应坐标就是水线的位置,按上述原理,每隔10像素向右平移拟合直线5次,每隔10像素向左平移拟合直线5次,分别向下遍历线上的像素点,将所得的11个水线坐标信息拟合出一条曲线,就是红色船体图像数字附近的水线。
若船体颜色是黑色,则对VpR求前向差分:
DVpR(i)=VpR(i+1)-VpR(i),0<i<n
DVpR中最小的负数所对应坐标就是水线的位置,按上述原理,每隔10像素向右平移拟合直线5次,每隔10像素向左平移拟合直线5次,分别向下遍历线上的像素点,将所得的11个水线坐标信息拟合出一条曲线,就是黑色船体图像数字附近的水线。
4.长度基准计算
利用步骤2中得到的船舶水尺图中每行数字数值和其边框坐标求出水线附近相邻行数字像素间距相对于实际长度的基准。长度基准计算方法如下:
(1)水尺图像若是平视图像,遍历组合数字N′i,组合数字总数为n,计算相邻数字右下点竖坐标差值。
ΔN′i=N′i+1-N′i,1<i<n
将ΔN′i按升序排列,则20厘米长度基准对应的像素长度L20cm为:
(2)水尺图像若是俯视图像,遍历组合数字N′i,组合数字总数为n,计算相邻数字右下点竖坐标差值。
ΔN′i=N′i+1-N′i,1<i<n
将数据(i,ΔN′i)拟合出一条直线y=k*x+b,近似认为ΔN′i随着i变大呈现等差数列递增的变化,若水线位于组合数字N′m以下,N′m+1以上(或m=n,没有N′m+1),则20厘米长度基准对应的像素长度L20cm为:
L20cm=k*m+b
(3)水线位于组合数字N′m以下,N′m+1以上(或m=n,没有N′m+1),则20厘米长度基准对应的像素长度L20cm为ΔN′m-1。
(4)水线位于组合数字N′m以下,N′m+1以上(或m=n,没有N′m+1),组合数字字长为Lm,若数字实际字长为10厘米,则L10cm=Lm,若数字实际字长为5厘米,则L5cm=Lm。
5.倾斜数字与水线间距修正
计算水线到数字的间距与相邻两个数字间距的比例,数字如果是竖直排列的,数字间距为Ln2n,水线到最近数字间距为Ln2w,则数字间距与数字到水线间距比例为Ln2n/Ln2w。数字若是倾斜排列的,倾斜数字与水线间距会存在偏差,记数字倾斜间距为Ln2n,数字竖直间距为L′n2n,水线到最近数字右下点倾斜间距为Ln2w,水线到最近数字右下点竖直间距为L′n2w,两个数字右下点拟合直线斜率为k。
(1)若k>0,拟合直线与竖直方向夹角为θ,k=cosθ/sinθ。如图2,水线到数字的间距与相邻两个数字间距的比例P计算方法如下。
数字和数字框右下点倾斜距离记为Δl,数字和数字框右下点竖直距离记为Δl*。
数字长宽比为k1,设数字字长c,字高k1*c,则
其中b是数字框框高,a是数字框框长,则水线到数字的间距与相邻两个数字间距的比例P为:
(2)若k<0,拟合直线与竖直方向夹角为θ,k=cosθ/sinθ。如图,水线到数字的间距与相邻两个数字间距的比例P计算方法如下。
数字和数字框右下点倾斜距离记为Δl数字和数字框右下点竖直距离记为Δl*。
数字长宽比为k1,设数字字长c,字高k1*c,则
其中b是数字框框高,a是数字框框长,则水线到数字的间距与相邻两个数字间距的比例P为:
6.计算水尺读数
利用步骤5得到的水线到数字的间距与长度基准的比例P和步骤2得到的水线上最近行的数N,计算出单帧图像水尺读数Nd为N-0.2*P,重复计算视频剩余帧图像读数,计算所有帧图像水尺读数平均值即为该视频水尺读数。
以上对本发明所提供的一种基于深度学习算法的船舶水尺图像自动读数方法,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。