一种基于图像处理的列车车底螺栓丢失检测方法

文档序号:30096248发布日期:2022-05-18 10:57阅读:79来源:国知局
一种基于图像处理的列车车底螺栓丢失检测方法

1.本发明涉及图像处理及目标检测技术领域,特别是一种基于图像处理的列车车底螺栓丢失检测方法。


背景技术:

2.对于地铁来说,地铁列车底部是其中结构最为复杂、零件最为繁杂的一部分,因此保障地铁列车底部的安全性是至关重要的。地铁列车底部检查主要是以进车辆段、进厂检修为主,成本很高并且存在漏检的情况,检测方法比较落后。人工检测存在诸多问题,主要是依靠列检员最原始的排查方式,例如用眼睛看,用手摸,可能还会借助工具例如用锤轻敲等,这些方式不仅效率低下,对于列检员来说也是一项负担很重的工作,总的来说这种检测方式完全依赖于列检员的状态,当列检员劳动强度过大而状态不好时则可能造成安全隐患。
3.螺栓是一种细小但又缺一不可的重要部件,目前螺栓的排查主要依赖于列检员的经验和状态,主观性非常严重,并且螺栓种类繁多且形态各异,检测难度大,另外螺栓的检测需要实时性。近年来,科学的发展日新月异,图像识别的技术也已越来越成熟,它的特点适用于列车车底故障检测。对于车底图像的采集,传统采用面阵相机来完成,当列车通过时,采集系统触发面阵相机拍照。采用面阵相机拍照时会存在一些问题,例如,由于面阵相机的特性其在车底图像采集时的频率不变,而列车的车速是上下浮动的,因此在采集频率与车速无法对应的情况下会产生图像畸变的情况,比如图像的压缩和拉伸,另外,地铁的长度是相对较长的,对于面阵相机来说一次采集无法完成整个车底图像的采集,因此需要多次采集才能完成整个车底图像的采集,采集效率不高。
4.目前国内针对不同车型开发的图像检测系统主要为:tfds、tvds。在如今的tfds系统中,因为硬件方面的像素相对较低,对故障判定存在阻碍,另外故障判定需要人工对所拍摄的图像进行故障判断,可能会造成人为漏检。现有teds存在的问题主要是图像之间的错位情况比较严重,图像配准效果较差,导致对疑似故障的判别效果不是特别理想。tvds主要存在的问题有图片的拼接效果不理想、图像的亮度不均、特殊环境下图像质量不理想。


技术实现要素:

5.本发明的目的在于提供一种实时性强、检测精度高的列车车底螺栓丢失自动检测方法,能够实现列车车底螺栓丢失的在线动态检测。
6.实现本发明目的的技术解决方案为:一种基于图像处理的列车车底螺栓丢失检测方法,步骤如下:
7.步骤1,车底原始图像的采集:利用多个线阵相机获取列车车底原始图像,同时采用两组双磁钢测速方式获取车速;
8.步骤2,车底原始图像的畸变校正:获取的车底原始图像由于车速与相机扫描速率不相适应产生压缩或者拉伸的畸变,根据获得的车速数据利用圆弧曲线拟合技术进行车速
曲线拟合,根据拟合曲线对车底原始图像通过拉伸或压缩进行畸变校正;
9.步骤3,光照不均校正:利用二维gamma函数自适应校正算法对畸变校正后的图像进行光照不均校正,得到光照不均校正后的车底图像;
10.步骤4,多个相机模块图像的拼接:将fast算法和surf算法相结合,对光照不均校正后的车底图像进行特征点提取和描述,然后将改进的k-d树最近邻查找算法即bbf算法与双向匹配的自适应阈值方法相结合,对不同相机采集的光照不均校正后的车底图像进行图像拼接得到车底完整图像;
11.步骤5,螺栓丢失检测:对获取到的车底完整图像集进行数据集制作和模型训练,利用深度学习目标检测算法ssd算法对车底螺栓丢失进行检测。
12.本发明与现有技术相比,其显著优点为:(1)使用内部集成补偿光源的线阵相机进行图像采集,线阵相机是线式扫描,因此横向分辨率高,并且触发频率可以在采集过程中改变,也可以减小畸变,还有清晰度高、精度高等优点;(2)因为现场硬件设备安装条件的限制,补偿光源并没有很好的安装条件,而et系列线扫描模块产品很好的解决了这个问题,其模块内部集成了线阵相机和大功率光源;(3)采用车速曲线拟合对图像进行畸变校正,解决了图像采集过程中出现的图像畸变,并且对图像进行光照不均校正,解决了图像采集过程中因为光源补偿不均匀出现的图像质量问题;(4)使用对小目标检测精度更高的目标检测算法,提高了检测精度,能实现列车车底螺栓丢失实时在线检测,降低了人工检测的成本。
附图说明
13.图1为车轮传感器安装示意图。
14.图2为线阵相机模块安装示意图。
15.图3为车底图像数据集标注图。
16.图4为目标检测算法模型训练过程图。
具体实施方式
17.本发明基于图像处理的列车车底螺栓丢失检测方法,包括以下步骤:
18.步骤1,车底原始图像的采集:利用多个线阵相机获取列车车底原始图像,同时采用两组双磁钢测速方式获取车速;
19.步骤2,车底原始图像的畸变校正:获取的车底原始图像由于车速与相机扫描速率不相适应产生压缩或者拉伸的畸变,根据获得的车速数据利用圆弧曲线拟合技术进行车速曲线拟合,根据拟合曲线对车底原始图像通过拉伸或压缩进行畸变校正;
20.步骤3,光照不均校正:利用二维gamma函数自适应校正算法对畸变校正后的图像进行光照不均校正,得到光照不均校正后的车底图像;
21.步骤4,多个相机模块图像的拼接:将fast算法和surf算法相结合,对光照不均校正后的车底图像进行特征点提取和描述,然后将改进的k-d树最近邻查找算法即bbf算法与双向匹配的自适应阈值方法相结合,对不同相机采集的光照不均校正后的车底图像进行图像拼接得到车底完整图像;
22.步骤5,螺栓丢失检测:对获取到的车底完整图像集进行数据集制作和模型训练,利用深度学习目标检测算法ssd算法对车底螺栓丢失进行检测。
23.进一步地,步骤1具体包括以下步骤:
24.将测量车速的两组车轮传感器配合安装夹具安装于轨侧,一组车轮传感器的数量为2个,车轮传感器距离轨面50mm,每组两个车轮传感器之间间隔250mm,第一组和第二组车轮传感器之间间隔13200mm,车轮传感器的信号线接入plc,plc接收车轮传感器采集的信号;
25.将进行车底原始图像采集的内部集成补偿光源的多个线阵相机摆放于轨道中间,分为左、中、右三个相机分别进行列车车底图像左、中、右三个部分采集,线阵相机与上位机连接进行图像传输。
26.进一步地,步骤2具体操作如下:
27.步骤2.1,利用两组双磁钢对列车车速进行测量,获取12组离散的车速数据;
28.步骤2.2,针对12组离散的车速数据,利用圆弧曲线拟合技术获得列车车速曲线;
29.步骤2.3,对已经拟合好的车速曲线以0.1秒为采样间隔进行采样,根据拟合曲线对车底原始图像通过拉伸或压缩进行畸变校正,具体如下:
30.假设线阵相机第一次检测到的速度为v0,根据此速度v0得出相适应的线阵相机拍摄频率为f0,采集的车底原始图像宽度为w、高度为h,采用的相机分辨率为4k、宽度w为4096px,高度h表达式如下:
[0031][0032]
其中,l为车底原始图像的物理长度,fy为线阵相机纵分辨率。
[0033]
设hi为线阵相机拍摄的第i幅图像的高度,其中0≤i≤n-2,h
n-1
为最后一幅图像的高度,并且采集时间不大于0.1秒,则得出如下式子:
[0034][0035]
经过畸变校正之后,hj校正为h
tj

[0036][0037]
校正之后,每幅图像的高度由h校正为h
t
。上述校正方式对于后续图像拼接及螺栓检测都有很重要的支撑作用。
[0038][0039]
进一步地,步骤3具体操作如下:
[0040]
f(x,y)表示图像的一个二维函数,f(x,y)的值是图像中点(x,y)的亮度值,根据成像原理,图像由亮度分量和实际物体的反射分量组成,如式所示:
[0041]
f(x,y)=i(x,y)
·
r(x,y)
[0042]
其中,i(x,y)为光照分量,r(x,y)为反射分量;
[0043]
设p为所需要光照不均校正的图像,i表示引导图像,q表示结果图像,存在以下变
换关系:
[0044][0045]
其中,k表示图像中某个像素点,r表示以k为中心的半径,ωk表示以k为圆心r为半径的窗口;ak、bk都为线性变换因子,为窗口内为常数。
[0046]
由上式可知,在任意一个窗口内,都存在如上式的梯度关系,可知p的边缘和i的边缘有良好的对应。为了使p和q的差距达到最小,窗口ωk中所需要使用的代价函数e(ak,bk)如下式:
[0047][0048]
其中,ε是为了限制ak过大的参数,为了求得ak和bk的最优值,使用线性回归方法,求得:
[0049][0050]
其中,|ω|为窗口中像素的个数,μk为i中的均值,σk为i中的方差,是窗口中pk的平均值。
[0051]
对于不同的窗口来说,可能会包含同一个像素点,因此ak和bk的值也会发生变换,为了求得qi的值,取该像素点为中心的不同窗口中ak、bk的平均值作为参数求得qi:
[0052][0053]
步骤32,对提取出的亮度分量利用二维gamma函数自适应校正算法进行校正,具体如下:
[0054]
提取出光照分量,在基于二维伽马函数的亮度校正函数的基础上进行改进,改进的二维gamma函数如下式所示,m理论上的取值范围是0到255,因此光照系数ε理论上的取值范围为0到1。本发明取ε为0.5,m为128对图像进行校正,发现有较好的自适应校正效果。
[0055][0056]
其中,o(x,y)为输出图像,i(x,y)为图像的亮度,l(x,y)为图像中某点(x,y)的亮度分量,γ是gamma校正参数,ε为光照系数,m为一张图像的光照亮度的均值。
[0057]
步骤33,将校正后的亮度分量与输入图像融合,合成光照均匀的输出图像。
[0058]
进一步地,步骤4具体操作如下:
[0059]
步骤4.1,使用fast算法对图像提取特征点,目的在于提升提取的速度和质量,fast算法由于计算相对简单,也提升了提取效率。本发明对图像中的每一个像素点都进行扫描,然后进行判别每一个像素点周围的16个像素点的灰度值大小是否大于该像素点,利用fast算法种的角点公式来进行判别,如下式所示。
[0060][0061]
其中,n表示灰度值,c为圆周,i(x)表示c内某点的灰度值,p为圆周中心,i(p)为中
心点的灰度值;εd为阈值且设置为9,如果n超过εd的话,那么该像素点就是角点,本发明εd设置为9。
[0062]
步骤4.2,采用surf算法对特征点进行描述:提取一个特征点作为圆心,半径为6σ,其中σ是所选择的特征点的尺度,然后计算出在所得圆的邻域中所有像素点的水平方向、垂直方向的harr小波响应总和,对图像haar小波响应的水平方向、垂直方向叠加得到矢量(mw,θw):
[0063][0064]
其中,d
x
和dy分别为水平方向和垂直方向;mw取最大时,θw即为特征点选取的主方向。
[0065]
步骤4.3,主方向选取完成之后,计算特征描述子,其中特征描述子为在以选取的特征点为中心的矩形中的,矩形边长为20s,其中s为特征点的尺度值。
[0066]
描述特征点的向量v4如下式所示:
[0067]v4
=(∑d
x
,∑|d
x
|,∑dy,∑|dy|)
[0068]
步骤4.4,提取完特征点之后对特征点之间的相似度进行判别,使用bbf算法对参照图和检测图特征点之间的距离进行计算,假设t为最近的特征点和第二最近的特征点的壁纸的阈值,然后进行分类统计,得到两个集合x1和x2,求出它们的比值为x1、x2。计算出两个集合的交集,假设y是对交集每个对应匹配点的比值,求出y中的最小值,该值即为特征匹配的阈值。
[0069]
步骤4.5,采用渐入渐出加权融合法对图像拼接,如下式所示:
[0070][0071]
在式中,x1和x2都为等待拼接的输入车底图像,x为输出图像,γ为加权因子,其中,γ如下式所示:
[0072][0073]
其中,ω表示待拼接的两幅输入车底图像的重叠部分的横坐标距离,ωd为待拼接的两幅输入车底图像的重叠部分的像素点距离重叠部分的横坐标距离。
[0074]
进一步地,步骤5具体操作如下:
[0075]
步骤51,对每张车底完整图像进行手工标注,制作属于车底完整图像自己的pascal voc数据集;
[0076]
步骤52,对制作好的数据集进行模型训练,利用深度学习目标检测算法ssd算法对车底螺栓丢失进行检测,具体如下:
[0077]
在模型训练时设置一个默认预测边框,根据默认预测边框和真实目标边框的交并比辨别样本的正负,当默认预测边框含有目标物体时属于正样本,当默认预测边框不含有
目标物体时属于负样本;
[0078]
图像中包含的与目标无关的背景部分多于目标所占的比例,在检测过程中会使样本比例失衡,为了使样本比例处于一个平衡的状态,使正负样本为1:3,ssd算法对负样本进行排序,排序之后选取一部分符合要求的默认预测边框作为负样本,排序的依据是默认预测边框和真实目标边框的置信度差异;
[0079]
对于正样本来说,会发生多个默认预测边框同时出现在一个目标上,对于这种情况,ssd算法采用非极大值抑制算法进行改善;大于置信度阈值的默认预测边框认为含有目标物体,小于置信度阈值的默认预测边框认为不含有目标物体;
[0080]
ssd目标检测过程中,一个特征点上会有k个默认预测边框,假设目标物体一共有c个类别,每个默认预测边框都会预测目标物体属于每一个类比的得分和4个对比默认预测边框的偏移量,假设特征图大小为m
×
n,则ssd网络输出的预测值有(c+4)
×k×m×
n个;默认预测边框的大小如式所示:
[0081][0082]
其中,m表示有多个特征图,sk为默认预测边框在特征图中所占的比例,s
max
、s
min
分别表示sk的最大和最小值,默认预测边框的宽度、高度如下式所示:
[0083][0084][0085]
其中,为默认预测边框的宽度,为默认预测边框的高度,ar为长宽比。
[0086]
本发明采用线阵相机对列车车底的图像进行采集,再通过图像处理技术得到地铁车底的完整图像,之后对车底图像关键螺栓进行故障识别,判断是否存在螺栓脱落等故障,时性强、检测精度高;列检员也可以根据完整的车底图像自行判断是否存在故障,对于地铁的安全运行非常重要,安全可靠。
[0087]
下面结合附图及具体实施例对本发明作进一步详细描述。
[0088]
实施例
[0089]
实现本发明目的的技术解决方案为:一种基于图像处理的列车车底螺栓丢失检测方法,包括以下步骤:
[0090]
步骤1、利用多个线阵相机模块获取列车车底原始图像同时采用两组双磁钢测速方式获取车速;
[0091]
将测量车速的两组车轮传感器(一组两个)配合安装夹具安装于轨侧,距离轨面50mm,每组两个车轮传感器之间间隔l1为250mm,第一组和第二组车轮传感器之间间隔l2为13200mm,如图1所示,图中s1是地铁一节车厢两个比较近的车轮之间的距离,s2是地铁一节车厢两个比较远的车轮之间的距离。
[0092]
将进行车底图像采集的内部集成补偿光源的线阵相机摆放于轨道中间,分为左、中、右三个相机分别进行列车车底图像左、中、右三个部分采集,如图2所示,线阵相机与上位机连接进行图像传输。
[0093]
步骤2、获取到的车底图像由于车速与相机扫描速率不相适应会产生压缩或者拉
伸的畸变,根据获得的12组车速数据利用圆弧曲线拟合技术进行车速曲线拟合,根据拟合曲线对车底原始图像进行一定的拉伸或压缩进行畸变校正;
[0094]
步骤2.1,利用两组双磁钢进对列车车速进行测量获取12组车速数据;
[0095]
步骤2.2、对这12组离散的车速数据利用圆弧曲线拟合技术获得列车车速曲线;
[0096]
步骤2.3、对已经拟合好的车速曲线以0.1秒为采样间隔进行采样,之后根据计算,对图像进行畸变补偿。假设相机第一次检测到的速度为v0,此时根据此速度得出相适应的相机拍摄频率为f0。采集的图像宽度为w,高度为h,其中图像宽度与相机分辨率息息相关,本发明所采用的相机分辨率为4k,因此宽度w为4096px。而高度h表达式如式所示:
[0097][0098]
其中,l为图像的物理长度,fy为相机纵分辨率。
[0099]
设hi为相机拍摄的第i幅图像的高度,其中0≤i≤n-2,h
n-1
为最后一幅图像的高度,并且采集时间不大于0.1秒,则得出式子如下所示。
[0100][0101]
经过畸变校正之后,hj校正为h
tj
,如式所示。
[0102][0103]
校正之后,每幅图像的高度由h校正为h
t
。上述校正方式对于后续图像拼接及螺栓检测都有很重要的支撑作用。
[0104][0105]
步骤3,利用二维gamma函数自适应校正算法对畸变校正后的图像进行光照不均校正,得到高质量车底图像;
[0106]
f(x,y)是用来表示图像的一个二维函数,其值就是图像中某点的亮度值,根据成像原理,图像可以看成是光照分量也就是亮度分量和实际物体的反射分量组成的,如式所示。
[0107]
f(x,y)=i(x,y)
·
r(x,y)
[0108]
其中,i(x,y)为光照分量,r(x,y)为反射分量。设p为所需要校正的图像,i表示引导图像,q表示结果图像,存在以下变换关系如式所示。
[0109][0110]
其中,k表示图像中某个像素点,r表示以k为中心的半径,ωk表示以k为圆心r为半径的窗口;ak、bk都为线性变换因子,为窗口内为常数。由上式可知,在任意一个窗口内,都存在如上式的梯度关系,可知p的边缘和i的边缘有良好的对应。为了使p和q的差距达到最小,窗口ωk中所需要使用的代价函数如式所示。
[0111][0112]
其中,ε是为了限制ak过大的参数,为了求得ak和bk的最优值,使用线性回归方法,求得:
[0113][0114]
其中,|ω|为窗口中像素的个数,μk为i中的均值,σk为i中的方差,是窗口中pk的平均值。对于不同的窗口来说,可能会包含同一个像素点,因此ak和bk的值也会发生变换,为了求得qi的值,取该像素点为中心的不同窗口中ak、bk的平均值作为参数求得qi:
[0115][0116]
从而提取出光照分量,在基于二维伽马函数的亮度校正函数的基础上进行改进,改进的二维gamma函数如下式所示,m理论上的取值范围是0到255,因此光照系数ε理论上的取值范围为0到1。本文取ε为0.5,m为128对图像进行校正,发现有较好的自适应校正效果。
[0117][0118]
其中,o(x,y)为输出图像,i(x,y)为图像的亮度,l(x,y)为图像中某点(x,y)的亮度分量,γ是gamma校正参数,ε为光照系数,m为一张图像的光照亮度的均值。
[0119]
步骤4、将fast算法也就是加速分割检测特征算法和surf算法相结合,利用它们各自的优点,对图像进行特征点提取和描述,然后将改进的k-d树最近邻查找算法即bbf算法以及双向匹配的自适应阈值方法相结合,对校正后的不同相机采集的车底图像进行图像拼接得到车底高质量完整图像;
[0120]
步骤4.1、使用fast算法对图像提取特征点,目的在于提升提取的速度和质量,fast算法由于计算相对简单,也提升了提取效率。本文对图像中的每一个像素点都进行扫描,然后进行判别每一个像素点周围的16个像素点的灰度值大小是否大于该像素点,其手段是利用fast算法种的角点公式来进行判别,如下式所示。
[0121][0122]
其中,n表示灰度值,c为圆周,i(x)表示c内某点的灰度值,p为圆周中心,i(p)为中心点的灰度值,εd为阈值,如果n超过εd的话,那么该像素点就是角点,本文εd设置为9。
[0123]
步骤4.2、采用surf算法对特征点进行描述
[45]
。该算法提取一个特征点作为圆心,半径为6σ,其中σ是所选择的特征点的尺度,然后计算出在该圆的邻域中所有像素点的水平方向和垂直方向的harr小波响应总和。对图像haar小波响应的水平方向、垂直方向叠加得到矢量(mw,θw)。
[0124][0125]
其中,d
x
和dy分别为水平方向和垂直方向。mw取最大时,θw即为特征点选取的主方向。
[0126]
步骤4.3、主方向选取完成之后,计算特征描述子,其中特征描述子为在以选取的特征点为中心的矩形中的,矩形边长为20s,其中s为特征点的尺度值。描述特征点的向量如式所示。
[0127]v4
=(∑d
x
,∑|d
x
|,∑dy,∑|dy|)
[0128]
提取完特征点之后对特征点之间的相似度进行判别,使用bbf算法对参照图和检测图特征点之间的距离进行计算,假设t为最近的特征点和第二最近的特征点的壁纸的阈值,然后进行分类统计,得到两个集合x1和x2,求出它们的比值为x1、x2。计算出两个集合的交集,假设y是对交集每个对应匹配点的比值,求出y中的最小值,该值即为特征匹配的阈值。
[0129]
步骤4.4、采用渐入渐出加权融合法对图像拼接,如下式所示。
[0130][0131]
在式中,x1和x2都为等待拼接的输入车底图像,x为输出图像,γ为加权因子,其中,γ如下式所示。
[0132][0133]
其中,ω表示待拼接的两幅输入车底图像的重叠部分的横坐标距离,ωd为待拼接的两幅输入车底图像的重叠部分的像素点距离重叠部分的横坐标距离。
[0134]
步骤5、对获取到的高质量完整车底图像集进行数据集制作和模型训练;
[0135]
步骤5.1、对每张高质量完整车底图像进行手工标注,制作属于自己的pascalvoc数据集,使用lableimage开元软件对获取的图像集进行逐一标注,对于车底螺栓来说,只有丢失和不丢失两种情况,标注bolt代表螺栓没有丢失,标注lose表示螺栓丢失,如图3所示。
[0136]
步骤5.2、对制作好的数据集进行模型训练,如图4所示。
[0137]
步骤6、利用深度学习目标检测算法ssd算法对车底螺栓丢失进行检测。
[0138]
在网络模型训练时会设置一个默认预测边框,根据默认预测边框和真实目标边框的交并比可以辨别样本的正负,当预测边框含有目标物体时属于正样本,当预测边框不含有目标物体时属于负样本。一般来说,图像中包含的与目标无关的背景部分多于目标所占的比例,因此在检测过程中会使样本比例失衡,为了使样本比例尽量处于一个平衡的状态,一般来说会使正负样本为1:3左右,ssd会对负样本进行排序,排序之后选取一部分符合要求的预测边框作为负样本,排序的依据是预测边框和真实目标边框的置信度差异。而对于正样本来说,也会发生多个预测边框同时出现在一个目标上,对于这种情况,ssd采用非极
大值抑制算法进行改善。置信度阈值是在目标检测过程中的一个重要分水岭,大于置信度阈值的预测边框认为含有目标物体,小于置信度阈值的预测边框认为不含有目标物体。
[0139]
ssd目标检测过程中,一个特征点上会有k个预测边框,其中,假设目标物体一共有c个类别,每个预测边框都会预测目标物体属于每一个类比的得分和4个对比预测边框的偏移量,假设特征图大小为m
×
n,则ssd网络输出的预测值有(c+4)
×k×m×
n个。默认预测边框的大小如式所示。
[0140][0141]
其中,m表示有多个特征图,sk为默认预测边框在特征图中所占的比例,而s
max
、s
min
分别表示sk的最大和最小值。
[0142]
默认预测边框的宽度如式所示,高度如式所示:
[0143][0144][0145]
为预测边框的宽度,为预测边框的高度,ar为长宽比。
[0146]
本发明使用内部集成补偿光源的线阵相机进行图像采集,相比于传统的面阵相机,线阵相机是线式扫描,因此横向分辨率高,并且触发频率可以在采集过程中改变,也可以减小畸变,还有清晰度高、精度高等优点。另外因为现场硬件设备安装条件的限制,补偿光源并没有很好的安装条件,而et系列线扫描模块产品很好的解决了这个问题,其模块内部集成了线阵相机和大功率光源。采用车速曲线拟合对图像进行畸变校正,解决了图像采集过程中出现的图像畸变,并且对图像进行光照不均校正,解决了图像采集过程中因为光源补偿不均匀出现的图像质量问题。使用对小目标检测精度更高的目标检测算法,提高了检测精度;能实现列车车底螺栓丢失实时在线检测,降低了人工检测的成本。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1