基于机载视觉的铁路货运敞车车厢编号及装载状态识别方法
技术领域
本发明涉及一种基于机载视觉的铁路货运敞车车厢编号及装载状态识别的方法,属于机器视觉领域。
背景技术
煤炭作为火力发电厂的主要燃料,其运输仍旧以火车运输为主,为了对运煤车厢进行追踪和管理,需要对输煤火车车厢编号及装载状态进行识别和登记。运煤车厢是否装载煤炭直接影响煤炭运输管理。传统的运煤车厢装载状态判别主要依靠人工,工人走到车厢对应位置查看,然后记录车厢编号和装载状态。由于单次运煤车厢数量较多,人工记录容易出错,且劳动量大。
现用的车厢编号识别通常采用射频识别技术和图像处理技术。射频识别由贴于每节火车底部的电子标签,经过电磁感应后转换为电流信号,电流信号解码后得到车厢编号。但是,由于运煤车厢都是工作在露天环境,受到强风、大雪等恶劣天气的影响,容易出现电子标签丢失、粘污、损毁等,导致RFID射频识别车厢编号准确率低。图像处理方法则使用工业相机抓拍车厢的编号图片,经过图像处理,实现车厢编号识别。由于车厢使用时间不同,编号字符会出现不同程度的腐蚀与断裂,传统的字符识别方法,识别错误率高。另外,上述两种方法只能识别车厢编号,无法同时判定车厢是否装载。
目前,针对图像处理技术识别车厢编号,文献(学位论文(杨大治.基于图像处理的铁路货车车号识别及其应用[D].四川:西南交通大学,2010)提出基于颜色空间及灰度形态学的车号定位方法。学位论文(廖健.基于图像的铁路货车车号自动识别研究[D].四川:西南交通大学,2016)利用颜色空间和关键点密度定位车号位置。专利(夏曙光,林峰.一种车厢编号识别方法CN107918747A[P],2018)结合图像处理和频射技术得到的识别结果,按一定规则对识别结果进行决策。针对图像处理技术识别车厢装载状态,文献(中国铁道科学(于冬.铁路货车装载状态监视和超限检测系统的研究.天津:天津大学,2004)在图像处理与控制理论研究的基础上,开发铁路货车装载状态监视及超限检测系统。中国铁道科学(陈晓东. 基于图像分析的货运列车装载状态检测系统设计.安徽:上海铁路局淮南货运中心,2015)提出通过获取有关超限物体的图像,实时监视监控货运列车装载超限的状态。但是以上现有技术没有自动识别车厢的装载状态,仅仅识别车厢是否超载。综上所述,已有研究成果主要用于识别货运敞车车厢编号,无法同时判定车厢是否装载。基于此,本专利提出基于机载视觉的铁路货运敞车车厢编号及装载状态识别方法,能有效减少现场工作人员的工作量。
发明内容
发明目的:为了克服现有技术中存在的不足,本发明提出基于机载视觉的铁路货运敞车车厢编号及装载状态识别方法。无人机不受铁路沿线地形的限制,能够稳定飞行,并且可以搭载高清相机,对煤矿装车站车厢进行查看与登记。同时,构建CNN卷积神经网络对车厢编号进行识别,BP神经网络对车厢装载状态进行识别,在识别车厢编号的同时,实现装载状态识别,从而减少人工记录所导致的错误,大量减少工人的工作量,显著提高车厢管理的效率。
发明内容:为实现上述目的,本发明采用的技术方案为:
基于机载视觉的铁路货运敞车车厢编号及装载状态识别方法,包括步骤:
(1)构建基于机载视觉的铁路货运敞车车厢编号及装载状态识别系统,包括:地面站系统、数据处理服务器和至少一架搭载有高清相机的无人机;
(2)地面站系统向无人机发送遥控指令,控制无人机按照预先规划好的航迹设定的飞行高度和云台角度飞行,并在飞行过程中对处于装车站的货运敞车车厢进行图像数据采集;无人机将采集到的数据回传至地面站系统,地面站系统将收集的数据上传至数据处理服务器;
(3)数据处理服务器根据接收到的数据执行以下步骤:
(31)对采集的图像数据进行预处理,并进行倾斜校正;
(32)对倾斜校正后的图像,提取图像中车厢的轮廓信息,然后根据车厢编号字符宽/高与实体车厢宽/高的比例的先验知识从车厢图像中提取数字字符所在区域;
(33)采用投影法对字符所在区域进行分割,提取出单个字符图像,然后通过预先训练好的CNN卷积神经网络模型对分割后的单个字符图像进行逐一识别,得到车厢编号;
(34)对经过步骤(31)倾斜校正后的图像,提取车厢的边缘信息,获得车厢边界,进而得到车厢位置区域,设计网格特征,从车厢位置区域中分割出反映车厢容积的感兴趣图像区域;
(35)对提取出的感兴趣图像区域进行特征描述,得到用于表征车厢装载状态的特征向量;将特征向量输入预先训练好的BP神经网络,识别出车厢装载状态。
进一步的,所述步骤(31)的具体内容包括:
311)采用中值滤波和均值降采样,对高清相机采集的原始图像进行预处理,减小噪声,缩小图像容量;
312)将预处理后的图像从RGB图像格式转换为灰度图:
gray(x,y)=0.299R(x,y)+0.587G(x,y)+0.114B(x,y) (1)
其中,R(x,y),G(x,y),B(x,y)分别表示为RGB图像中坐标为(x,y)的红色、绿色、黄色三通道的像素值,gray(x,y)表示灰度图中坐标为(x,y)的像素值;
313)采用Canny算法对灰度图进行边缘检测,提取所有的边缘信息,得到相应的边缘图像;
314)采用霍夫直线变换,找出边缘图像中铁轨所在线段的两个端点P1,P2,并计算线段的倾斜角θ:
θ=tan-1(P1y-P2y)/(P1x-P2x) (2)
其中,(P1x,P1y),(P2x,P2y)表示P1,P2的坐标;
315)通过灰度图像中心点坐标和倾斜角θ计算出旋转矩阵M,并对灰度图像进行仿射变换,得到倾斜校正后的灰度图像。
进一步的,所述步骤(32)的具体内容包括:
321)采用大津法选取阈值,对倾斜校正后的灰度图进行阈值化处理,得到相应的二值图,使得符合字符颜色特征的像素值为255,不符合的为0;
322)对二值图进行形态学处理,得到其膨胀后的连通图,检测连通图中最外层的边缘轮廓;
323)计算每个轮廓的像素长度,记第i个轮廓的像素长度为li,则最长轮廓的像素长度为L=max(li);设置判定条件:
字符区域的轮廓长度与最长轮廓长度满足li/L≥0.2L;
根据判定条件对所有轮廓进行判定,剔除非字符区域的轮廓;
324)对字符区域轮廓,计算每个轮廓边界矩形的像素宽/高比例σ,设定字符区域轮廓边界矩形的宽/高比属于区间[σ1,σ2],其中σ1为车号区域中间字符数量为5时轮廓边界矩形的宽/高比,σ2为车号区域中间字符数量为4时轮廓边界矩形的宽/高比;对所有的字符区域轮廓进行判定,定位出字符所在的区域;
σ=rectw/recth (3)
其中,rectw表示矩形的宽度,recth表示矩形的高度。
进一步的,所述步骤33)的具体内容包括:
331)对字符所在区域做x和y轴的投影,根据投影得到的结果对图像进行从图像原点开始向x轴正方向的分割,得到有序的数字字符图像序列;
332)计算图像缩放的比例α,Wc表示缩放后的图像宽度,Hc表示缩放后的图像高度;缩放公式为:
α=Wc/max(W,H) (4)
其中,W表示原始图像宽度,H表示原始图像高度,max表示求最大值函数;
333)将图像按照比例α进行缩放:
W0=αW (5)
H0=αH (6)
其中,W0表示缩放后图像的宽度,H0表示缩放后图像的高度;
334)采用零对数字字符图像短边左右两侧进行填补,补零宽度ΔW为:
其中,min表示求最小值函数;
335)将缩放后的图像序列依次输入到训练好的CNN卷积神经网络模型进行识别,得到车厢编码。
进一步的,所述CNN卷积神经网络模型包括:卷积层、池化层、随机失活层、批归一化层和softmax函数层;CNN卷积神经网络模型的各层神经网络对输入数据进行以下处理:
令Fl表示当前层的二维特征映射图,Fl+1表示经卷积操作之后的特征映射图, Kl(m,n)表示尺寸为m*n的卷积核,bl表示偏差值,则卷积操作如下:
令m表示批尺寸,zi表示第i批特征映射图中的数据规模,表示批均值,表示批方差,γ和β为可学习参数,表示归一化后批数据,ui表示经过缩放和平移微调处理后的批数据,批归一化操作如下:
令pi表示像素点属于第i类的概率,fi表示模型预测像素点属于第i类的分数,softmax函数如下:
进一步的,所述步骤(34)的具体内容为:
341)对步骤(315)得到的倾斜校正后的灰度图像,采用霍夫直线变换,检测边缘图像中所有线段;计算每段线段的长度,并求出线段长度最大值,记为 max(ldi),ldi表示检测出的第i段线段的长度;以车顶边界线段的长度与最长线段长度满足ldi/max(ldi)≥0.5max(ldi)为判断条件,对所有线段ldi进行判定,剔除非车顶边界线段;
343)计算每段线段的倾斜角,剔除倾斜角不为零的线段;将剩余线段按照左端点纵坐标由小到大进行排序;取出左端点纵坐标最小的两条线段,记这两条线段左端点的纵坐标分别为Y1,Y2;根据线段的坐标信息即可找到车顶边界所在位置;
344)对灰度图像进行裁剪,W表示原始图像的宽度,按照左上角坐标为(0, Y1),右下角坐标为(W,Y2),从灰度图像中裁剪得到感兴趣区域;
进一步的,所述步骤(35)的具体内容为:
351)记感兴趣区域的宽度为W1,高度为H1,以坐标(x1,y1)为裁剪图像的左上角坐标,以坐标(x2,y2)为裁剪图像的右下角坐标,从感兴趣区域中裁剪图像,W2表示裁剪后图像的宽度,H2表示裁剪后图像的高度:
x2=W1-x1 (12)
y2=H1-y1 (13)
采用线性插值法,将裁剪后的图像缩放到尺寸大小为Wc1*Hc1,Wc1表示缩放后的图像宽度,Hc1表示缩放后的图像高度;
352)将缩放后的图像裁剪为n幅图像,每幅图像的大小为w0*h0,计算每幅子图像的像素均值,将n幅图像的像素均值组成特征向量P;其中,
n=(Wc1/w0)*(Hc1/h0) (14)
其中,w0表示图像的宽度,h0表示图像的高度,Wc1表示原图像宽度,Hc1表示原图像高度;
353)将特征向量P输入到BP神经网络进行识别,得出车厢的装载状态。
进一步的,所述BP神经网络包括:一层输入层、三层隐藏层、一层输出层; BP神经网络中每个节点之间的全连接公式为:
xk=f(Sk) (16)
其中,m表示输入层的节点数目,wik表示节点i和k节点之间的权值,xi表示每个节点的输出值,bk表示节点k的偏置,f为激活函数。
有益效果:采用上述方案,实现了铁路货运敞车车厢编号及装载状态的快速登记;相比于传统的人员查看的方法,本发明采用的图像数据采集时间短、速度快,适用于装车站或者铁路沿线的货运敞车车厢编号及其装载状态的识别。基于工业级无人机的实景图像获取系统图像数据采集时间短,且不需要安装固定的工业相机等装置,显著降低了人工查看的劳动量和成本,具有良好的可操作性。基于机载视觉的铁路货运敞车车厢编号及装载状态识别方法可以在识别车厢编号的同时,判定车厢的装载状态,CNN卷积神经网络的训练集经过数据增强,能够克服字符腐蚀与断裂对识别影响,也能满足装车站货运敞车厢编号及装载状态识别的时效性要求。在不损失登记准确率的情况下,缩短了记录车厢装载状态及编号的时间,解决了装车站运煤车厢管理与登记过程中工作量大、耗时长的问题,达到了本发明的目的。实现装车站运煤车厢编号及装载状态的快速识别,有效提高运煤车厢的管理,为智能储运管理与车厢管理提供指导依据。
附图说明:
图1是基于工业级无人机的货运敞车车厢图像获取系统示意图;
图2是货运敞车车厢编号及装载状态识别方法示意。
具体实施方式
下面结合附图和具体实施例对本发明做进一步描述。以下实施例仅用于更加清楚的说明本发明的技术方案,而不能以此来限定本发明的保护范围。
图1所示为基于工业级无人机的货运敞车车厢图像获取系统,包括搭载高清相机的工业级无人机、无人机地面站和数据服务器;地面站系统向无人机发送遥控指令,控制无人机按照预先规划好的航迹设定的飞行高度和云台角度飞行,并在飞行过程中对处于装车站的货运敞车车厢进行图像数据采集;无人机将采集到的数据回传至地面站系统,地面站系统将收集的数据上传至数据处理服务器;数据处理服务器根据采集的图像数据进行车厢编号和装载状态的识别。
图2所示为数据处理服务器进行货运敞车车厢编号及装载状态识别的流程图,包括以下步骤:
(1)对采集的图像数据进行预处理,并进行倾斜校正,具体步骤为:
11)采用中值滤波和均值降采样,对高清相机采集的原始图像进行预处理,减小噪声,缩小图像容量:
12)将RGB图像转换为灰度图:
gray(x,y)=0.299R(x,y)+0.587G(x,y)+0.114B(x,y) (1)
其中,R(x,y),G(x,y),B(x,y)分别表示为RGB图像中坐标为(x,y)的红色、绿色、黄色三通道的像素值,gray(x,y)表示灰度图中坐标为(x,y)的像素值;
13)采用Canny算法对灰度图进行边缘检测,提取所有的边缘信息,得到相应的边缘图像;
14)采用霍夫直线变换,找出边缘图像中铁轨所在线段的两个端点P1,P2,并计算线段的倾斜角θ:
θ=tan-1(P1y-P2y)/(P1x-P2x) (2)
其中,(P1x,P1y),(P2x,P2y)表示P1,P2的坐标;
15)通过灰度图像中心点坐标和倾斜角θ计算出旋转矩阵M,并对灰度图像进行仿射变换,得到倾斜校正后的灰度图像。
(2)对倾斜校正后的图像,提取图像中车厢的轮廓信息,然后根据车厢编号字符宽/高与实体车厢宽/高的比例的先验知识从车厢图像中提取数字字符所在区域;所述步骤(2)的具体内容为:
21)采用大津法选取阈值为90,对灰度图进行阈值化处理,得到相应的二值图,使得符合字符颜色特征的像素值为255,不符合的为0;
22)对二值图进行形态学处理,得到其膨胀后的连通图,检测连通图中最外层的边缘轮廓;
23)计算每个轮廓的像素长度,记为li,则最长轮廓的像素长度为L=max(li);字符区域的轮廓长度与最长轮廓长度需满足li/L≥0.2L;对所有轮廓进行判定,剔除非字符区域的轮廓;
24)计算每个轮廓边界矩形的像素宽/高比例σ,设定字符区域轮廓边界矩形的宽/高比属于区间[4.5,7],其中4.5为车号区域中间字符数量为5时轮廓边界矩形的宽/高比,7为车号区域中间字符数量为4时轮廓边界矩形的宽/高比,对所有的轮廓进行判定,定位出字符所在的区域;
σ=rectw/recth (3)
其中,rectw表示矩形的宽度,recth表示矩形的高度。
(3)采用投影法对字符所在区域进行分割,提取出单个字符图像,然后通过预先训练好的CNN卷积神经网络模型对分割后的单个字符图像进行逐一识别,得到车厢编号;所述步骤(3)的具体内容为:
31)对字符所在区域做x和y轴的投影;根据投影得到的结果对图像进行分割,从图像原点开始向x轴正方向进行分割,得到有序的数字字符图像序列;
32)计算图像的缩放比例α,由于运煤车厢数字字符不是正规的印刷体,直接缩放到224*224会存在比较大的形变,故采用以下公式进行缩放:
α=Wc/max(W,H) (4)
其中,W表示原始图像宽度,H表示原始图像高度,max表示求最大值函数,令Wc=224;
33)将图像按照比例α进行缩放:
W0=αW (5)
H0=αH (6)
按照上述公式进行缩放后长边的尺寸为224,其中,W0表示缩放后图像的宽度, H0表示缩放后图像的高度;
34)采用零对数字字符图像短边左右两侧进行填补,补零宽度ΔW为:
其中,min表示求最小值函数;
35)将采集回来的数据制作训练集并进行数据增强,包括平移,旋转,随机加入噪点;将训练集输入到卷积神经网络模型进行训练并得到训练好的网络模型;将缩放后的图像输入到训练好的网络模型进行识别,网络模型主要包括:卷积、池化、随机失活、批归一化,softmax函数;CNN卷积神经网络模型结构如下表所示:
其中,Cony3×3-S1表示卷积核尺寸为3*3,步长为1的卷积操作,Maxpoo12×2-S2表示池化核尺寸为2*2,步长为2的池化操作,Conv1×1-S1表示卷积核尺寸为 1*1,步长也为1的卷积操作,其目的降低特征图的维度;Reshape表示改变特征层尺寸,Fullconnection表示全连接操作,Dropout表示随机失活,设置失活率为 0.5,具有防止网络过拟合的作用,BN表示批归一化,softmax函数表示归一化函数,将输出的10个值归一化;
将分割后的图像序列依次经过缩放后输入到CNN卷积神经网络模型得到车厢的编号;
令Fl表示当前层的二维特征映射图,Fl+1表示经卷积操作之后的特征映射图, Kl(m,n)表示尺寸为m*n的卷积核,bl表示偏差值,则卷积操作如下:
令m表示批尺寸,zi表示第i批特征映射图中的数据规模,表示批均值,表示批方差,γ和β为可学习参数,表示归一化后批数据,ui表示经过缩放和平移微调处理后的批数据,批归一化操作如下:
令pi表示像素点属于第i类的概率,fi表示模型预测像素点属于第i类的分数,softmax函数如下:
(4)对经过步骤(31)倾斜校正后的图像,提取车厢的边缘信息,获得车厢边界,进而得到车厢位置区域,设计网格特征,从车厢位置区域中分割出反映车厢容积的感兴趣图像区域;具体内容为:
41)根据旋转矩阵M,对步骤1中的边缘图像进行仿射变换,得到倾斜校正后的边缘图像;
42)对边缘图像采用霍夫直线变换,检测边缘图像中所有线段;计算每段线段的长度,并求出线段长度最大值记为max(ldi);车顶边界线段的长度与最长线段长度满足ldi/max(ldi)≥0.5max(ldi);对所有线段进行判定,剔除非车顶边界线段;
43)计算每段线段的倾斜角,剔除倾斜角不为零的线段;将线段按照左端点纵坐标由小到大进行排序;取出左端点纵坐标最小的两条线段,设定两条线段左端点的纵坐标分别为Y1,Y2;根据线段的坐标信息即可找到车顶边界所在位置。
44)对灰度图像进行裁剪,W表示原始图像的宽度,按照左上角坐标为(0,Y1),右下角坐标为(W,Y2),从灰度图像中裁剪得到感兴趣区域。
(5)对提取出的感兴趣图像区域进行特征描述,得到用于表征车厢装载状态的特征向量;将特征向量输入预先训练好的BP神经网络,识别出车厢装载状态;所述步骤(5)的具体内容为:
51)对感兴趣区域进行裁剪,W1表示区域的宽度,H1表示区域的高度,按照左上角坐标为(x1,y1),右下角坐标为(x2,y2),从感兴趣区域中裁剪图像,W2表示裁剪后图像的宽度,H2表示裁剪后图像的高度,其计算公式如下:
x2=W1-x1 (12)
y2=H1-y1 (13)
其中,(x1,y1)为裁剪图像的左上角坐标,(x2,y2)为裁剪图像的右下角坐标,令 x1=10,y1=10;
使用线性插值法将裁剪后的图像缩放到320*48,320表示缩放后的图像宽度,48表示缩放后的图像高度;
52)将缩放后的图像裁剪为n幅图像,每幅图像的大小为w0*h0,计算每幅子图像的像素均值,组成特征向量P;
n=(Wc1/w0)*(Hc1/h0) (14)
其中,w0表示图像的宽度,h0表示图像的高度,Wc1表示原图像宽度,Hc1表示原图像高度,令w0=10,h0=10,Wc1=320,Hc1=48;
53)用采集回来的图像数据制作训练集,计算训练集中每个图像数据的特征向量P输入到网络进行训练,保存训练好的模型;将特征向量输入到BP神经网络进行识别,得出车厢的装载状态。BP网络结构包含:一层输入层、三层隐藏层、一层输出层。BP神经网络的结构图如下:
每个节点之间的全连接公式如下:
xk=f(Sk) (16)
其中,m表示输入层的节点数目,wik表示节点i和k节点之间的权值,xi表示每个节点的输出值,bk表示节点k的偏置,f为激活函数。
以上只是对本发明的优选实施方式进行了描述。对该技术领域的普通技术人员来说,根据以上的实施方式可以很容易地联想到其他的有点和变形。因此,本发明并不局限于上述实施方式,其仅仅作为例子对本发明的一种形态进行详细,示范性的说明。在不违背本发明宗旨的范围内,本领域的普通技术人员在本发明的方案内进行通常变化和替换,都应包含在本发明的保护范围之内。