一种对ODF端口检测位置的矩阵化输出方法转让专利

申请号 : CN202111350133.8

文献号 : CN114204988B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李飞郭云瑞赵龙周源汪永

申请人 : 科大国创云网科技有限公司

摘要 :

本发明公开了一种对ODF端口检测位置的矩阵化输出方法,属于ODF端口检测技术领域,包括以下步骤:S1:解析数据,错检端口筛选;S2:遍历box,重新排序;S3:漏检box填充,矩阵化输出。本发明对检测算法检测端口结果进行了修正,针对错检和漏检端口进行了处理,实现了错检端口的删除与漏检端口的填充,提高了检测的准确率;对检测端口进行了矩阵化输出,矩阵化输出的好处是可以快速地寻找到原始图片各种类型端口的位置,具有良好的可视化性能,值得被推广使用。

权利要求 :

1.一种对ODF端口检测位置的矩阵化输出方法,其特征在于,包括以下步骤:

S1:解析数据,错检端口筛选

从原始ODF端口标签信息txt文本文件中解析box的标签和坐标信息,分别储存到label、x_min、x_max、y_min与y_max列表中,并对错检端口进行筛选;

S2:遍历box,重新排序

先对box按照x_min值进行排序,取最中间的box,计算点所在行的斜率,该点是最中间box的左上角点,记录该行所有的box;再次选择x_min列表中间附近的且不在记录中的点进行求解斜率的操作,直至记录下所有的点,最终斜率为所有行斜率的均值;在确定最终斜率之后,随机选取一个box确定该box所在行的直线表达式,根据该直线表达式,遍历所有box,将属于该行的box筛选出来,再重新选取一个box确定另一行的直线表达式,以此类推,直到遍历所有的box,完成了所有box的分组;再在竖直方向和水平方向对box进行排序;

S3:漏检box填充,矩阵化输出

对漏检box进行填充,填充时先进行中间填充再进行两端填充,在进行漏检box填充之后,ODF端口检测位置矩阵化输出全部完成;

在所述步骤S1中,原始ODF端口标签信息txt文本文件中一个端口的box信息包括6个数据值,第一个值表示检测图片的名称,第二个值表示端口的状态,第三、第四个值分别表示box左右边框的x轴的坐标x_min与x_max,第五、第六个值分别表示box上下边框的y轴的坐标y_min与y_max,将表示端口的状态的数据值存入label列表中,将x_min与x_max、y_min与y_max的数据值对应存入x_min、x_max、y_min与y_max列表中;

在所述步骤S1中,错检端口筛选从box面积与位置两个角度出发;对于面积,计算出每个box的面积,如果面积不在阈值内,说明这个box过大或者过小,是一个错检端口,需要删除;对于位置,从端口区域左侧出发,将box按照x_min值排序,开始遍历,若相邻box的x_min差值大于阈值,则判断该box及其之前的box为错检端口;对于端口区域的右侧错检端口,从x_min列表的尾部向前遍历,若相邻box的x_min差值大于阈值,则判断该box及其之后的box为错检端口;对于端口区域上侧的错检端口,将box按照y_min排序,开始遍历,若相邻box的y_min差值大于阈值,则判断该box及其之上的box为错检端口;对于端口区域的下侧错检端口,从y_min列表的尾部向前遍历,若相邻box的y_min差值大于阈值,则判断该box及其之下的box为错检端口;

在所述步骤S2中,计算矩阵的行斜率的具体过程如下:

S21:取灰色框为box的中心box,取黑色框为灰色框周围的多个box,分别计算灰色框与各黑色框连线的夹角,连线时连接box之间的左上角点位,然后筛选出角度趋近180°的点的组合,将这两个点进行直线拟合;

S22:寻找到所有的可以拟合直线的组合,计算这些直线的斜率绝对值,选出斜率绝对值最小的直线的斜率作为最优直线斜率;

S23:最后计算出所有行的最优直线斜率的平均值,作为整张图片的端口所在行直线的斜率。

2.根据权利要求1所述的一种对ODF端口检测位置的矩阵化输出方法,其特征在于:表示端口的状态的数据值分别为:‘u’表示空闲,‘p’表示占用,‘x’表示漏检。

3.根据权利要求1所述的一种对ODF端口检测位置的矩阵化输出方法,其特征在于:在所述步骤S2中,对分组完成的box进行行排序和列排序,在竖直方向上,按照每行box的y_min平均值进行排序,在水平方向上,按照每个box的x_min值进行排序。

4.根据权利要求3所述的一种对ODF端口检测位置的矩阵化输出方法,其特征在于:在所述步骤S2中,排序完成后,将box替换为标签表示,完成所有检测到的ODF端口矩阵。

5.根据权利要求1所述的一种对ODF端口检测位置的矩阵化输出方法,其特征在于:在所述步骤S3中,进行中间填充时,计算每一行相邻box的间距,如果该行漏检且某两个相邻box的间距大于阈值,则判断这两个box之间存在漏检端口,漏检端口的个数=⌊两框的实际间隔/(框之间的平均间隔+框的平均长度)⌋,“⌊⌋”代表向下取整,然后以标签“X”填充。

6.根据权利要求5所述的一种对ODF端口检测位置的矩阵化输出方法,其特征在于:在所述步骤S3中,进行两端填充时,以完整行为参考,取所有完整行的最左侧box的x_min均值和最右侧box的x_min均值,判断非完整行的最左侧box的x_min值和最右侧box的x_min值与该均值的差值,按比例填充,填充个数为⌊差值/(框之间的平均间隔+框的平均长度)⌋;若没有完整行,则先选取漏检最少的一行,按照左右平均填充的方式填充,其他行再以该行作为参考,进行两端填充,即把填充后的该行当作为完整行,采用上述存在完整行的填充方式进行填充。

说明书 :

一种对ODF端口检测位置的矩阵化输出方法

技术领域

[0001] 本发明涉及ODF端口检测技术领域,具体涉及一种对ODF端口检测位置的矩阵化输出方法。

背景技术

[0002] 在信息机房中,ODF(Optical Distribution Frame)光纤配线架是不可或缺的部分,它具有光缆终接功能、调线功能、光缆固定和保护功能。因为ODF在信息机房中的重要地位,所以在智能质检的过程中,对ODF端口的检查是必不可少的步骤。
[0003] 如今,很多检测算法训练出来的模型对ODF端口的检测都有着不错的准确率,但是说要百分百的找到正确的端口,不会漏检,不会错检,这几乎是无法完成的任务。为了进一步提高质检的准确率,除了在检测算法上进行改进,还可以从ODF端口检测进行合适的后处理。为此,提出一种对ODF端口检测位置的矩阵化输出方法。

发明内容

[0004] 本发明所要解决的技术问题在于:如何根据ODF端口预测标签,对这些标签进行后处理,实现错检端口的删除与漏检端口的填充,提高了检测的准确率,提供了一种对ODF端口检测位置的矩阵化输出方法,该方法针对ODF端口检测的后处理部分,筛选出错检端口,对漏检的端口进行填充,最终进行矩阵化输出。
[0005] 本发明是通过以下技术方案解决上述技术问题的,本发明包括以下步骤:
[0006] S1:解析数据,错检端口筛选
[0007] 从原始ODF端口标签信息txt文本文件中解析box的标签和坐标信息,分别储存到label、x_min、x_max、y_min与y_max列表中,并对错检端口进行筛选;
[0008] S2:遍历box,重新排序
[0009] 先对box按照x_min值进行排序,取最中间的box,计算该点所在行的斜率,记录该行所有的box;再次选择x_min列表中间附近的且不在记录中的点进行求解斜率的操作,直至记录下所有的点,最终斜率为所有行斜率的均值;在确定最终斜率之后,随机选取一个box确定该box所在行的直线表达式,根据该直线表达式,遍历所有box,将属于该行的box筛选出来,再重新选取一个box确定另一行的直线表达式,以此类推,直到遍历所有的box,完成了所有box的分组;再在竖直方向和水平方向对box进行排序;
[0010] S3:漏检box填充,矩阵化输出
[0011] 对漏检box进行填充,填充时先进行中间填充再进行两端填充,在进行漏检box填充之后,ODF端口检测位置矩阵化输出全部完成。
[0012] 更进一步地,在所述步骤S1中,原始ODF端口标签信息txt文本文件中一个端口的box信息包括6个数据值,第一个值表示检测图片的名称,第二个值表示端口的状态,第三、第四个值分别表示box左右边框的x轴的坐标x_min与x_max,第五、第六个值分别表示box上下边框的y轴的坐标y_min与y_max,将表示端口的状态的数据值存入label列表中,将x_min与x_max、y_min与y_max的数据值对应存入x_min、x_max、y_min与y_max列表中。
[0013] 更进一步地,表示端口的状态的数据值分别为:‘u’表示空闲,‘p’表示占用,‘x’表示漏检。
[0014] 更进一步地,在所述步骤S1中,错检端口筛选从box面积与位置两个角度出发;对于面积,计算出每个box的面积,如果面积不在阈值内,说明这个box过大或者过小,是一个错检端口,需要删除;对于位置,从端口区域左侧出发,将box按照x_min值排序,开始遍历,若相邻box的x_min差值大于阈值,则判断该box及其之前的box为错检端口;对于端口区域的右侧错检端口,可以从x_min列表的尾部向前遍历,若相邻box的x_min差值大于阈值,则判断该box及其之后的box为错检端口;对于端口区域上侧的错检端口,将box按照y_min排序,开始遍历,若相邻box的y_min差值大于阈值,则判断该box及其之上的box为错检端口;对于端口区域的下侧错检端口,从y_min列表的尾部向前遍历,若相邻box的y_min差值大于阈值,则判断该box及其之下的box为错检端口。
[0015] 更进一步地,在所述步骤S2中,计算矩阵的行斜率的具体过程如下:
[0016] S21:取灰色框为box的中心box,取黑色框为灰色框周围的多个box,分别计算灰色框与各黑色框连线的夹角,连线时连接box之间的x_min点位,然后筛选出角度趋近180°的点的组合,将这两个点进行直线拟合;
[0017] S22:寻找到所有的可以拟合直线的组合,计算这些直线的斜率绝对值,选出斜率绝对值最小的直线的斜率作为最优直线斜率;
[0018] S23:最后计算出所有行的最优直线斜率的平均值,作为整张图片的端口所在行直线的斜率。
[0019] 更进一步地,在所述步骤S2中,对分组完成的box进行行排序和列排序,在竖直方向上,按照每行box的y_min平均值进行排序,在水平方向上,按照每个box的x_min值进行排序。
[0020] 更进一步地,在所述步骤S2中,排序完成后,将box替换为标签表示,完成所有检测到的ODF端口矩阵。
[0021] 更进一步地,在所述步骤S3中,进行中间填充时,计算每一行相邻box的间距,如果该行漏检且某两个相邻box的间距大于阈值,则判断这两个box之间存在漏检端口,漏检端口的个数=⌊两框的实际间隔/(框之间的平均间隔+框的平均长度)⌋,“⌊⌋”代表向下取整,然后以标签“X”填充。
[0022] 更进一步地,在所述步骤S3中,进行两端填充时,以完整行为参考,取所有完整行的最左侧box的x_min均值和最右侧box的x_min均值,判断非完整行的最左侧box的x_min值和最右侧box的x_min值与该均值的差值,按比例填充,填充个数为⌊差值/(框之间的平均间隔+框的平均长度)⌋;若没有完整行,则先选取漏检最少的一行,按照左右平均填充的方式填充,其他行再以该行作为参考,进行两端填充,即把填充后的该行当作为完整行,采用上述存在完整行的填充方式进行填充。
[0023] 本发明相比现有技术具有以下优点:该对ODF端口检测位置的矩阵化输出方法,对检测算法检测端口结果进行了修正,针对错检和漏检端口进行了处理,实现了错检端口的删除与漏检端口的填充,提高了检测的准确率;对检测端口进行了矩阵化输出,矩阵化输出的好处是可以快速地寻找到原始图片各种类型端口的位置,具有良好的可视化性能,值得被推广使用。

附图说明

[0024] 图1是本发明实施例一中矩阵化输出方法的流程示意图;
[0025] 图2是本发明实施例一中box坐标信息的示意图;
[0026] 图3是本发明实施例一中左侧错检端口示意图;
[0027] 图4是本发明实施例一中拟合直线示意图;
[0028] 图5是本发明实施例二中的ODF端口检测图;
[0029] 图6是本发明实施例二矩阵化输出后的结果示意图。实施方式
[0030] 下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。实施例
[0031] 如图1所示,本实施例提供一种技术方案:一种对ODF端口检测位置的矩阵化输出方法,该方法整个流程划分为以下3个步骤:1)解析数据,错检端口筛选;2)遍历box,重新排序;3)漏检box填充,矩阵化输出。
[0032] 需要说明的是,ODF端口标签信息txt文本文件可以由检测模型自动输出,该文本文件包括各个端口的box坐标信息组成,下面给出部分box坐标信息。在检测图片中,y轴沿竖直方向设置,由上而下,y轴坐标值越来越大,x轴沿水平方向设置,由左至右,x轴坐标值越来越大。
[0033] 如图2所示,给出了10行信息,每一行代表一个端口的box信息。可以看出一个端口的box信息包括6个数据值,第一个值表示检测图片的名称;第二个值表示端口的状态(‘u’表示空闲,‘p’表示占用,‘x’表示漏检);第三、第四个值分别表示box左右边框的x轴的坐标x_min与x_max;第五、第六个值分别表示box上下边框的y轴的坐标y_min与y_max。
[0034] 1)解析数据,错检端口筛选
[0035] 首先从原始ODF端口标签信息txt文本文件中解析box的标签和坐标信息,分别储存到label、x_min、x_max、y_min与y_max列表中;并对错检端口进行筛选,错检端口筛选从两个角度出发——box面积与位置。对于面积,可以计算出每个box的面积,如果面积不在阈值内,说明这个box过大或者过小,是一个错检端口,需要删除。对于位置,ODF的端口位置会集中在一定的范围内,如果超过这个区域(即图3中的虚线所包围的区域),判断为错检端口。具体步骤为:从端口区域左侧出发,错检端口位置与端口区域示意图如图3所示。将box按照x_min排序,开始遍历,若相邻box的x_min差值大于阈值,则判断该box及其之前的box为错检端口。对于端口区域的右侧错检端口,可以从x_min列表的尾部向前遍历,若相邻box差值大于阈值,则判断该box及其之后的box为错检端口;对于端口区域上侧的错检端口,将box按照y_min排序,开始遍历,若相邻box的y_min差值大于阈值,则判断该box及其之上的box为错检端口;对于端口区域的下侧错检端口,从y_min列表的尾部向前遍历,若相邻box的y_min差值大于阈值,则判断该box及其之下的box为错检端口。
[0036] 2)遍历box,重新排序
[0037] 由于ODF端口的拍摄照片会存在一些倾斜角度,首先需要确定整张图片的端口所在行直线的斜率。先对box按照x_min值进行排序,取最中间的box,计算该点所在行的斜率(若不存在斜率,则记录为孤立点)(该点是最中间box的左上角点,本实施例中后面所述的点全都为box左上角点),记录该行所有的box;再次选择x_min列表中间附近的且不在记录中的点进行求解斜率的操作,直至记录下所有的点,最终斜率为所有行斜率的均值;在确定最终斜率之后,随机选取一个box确定该box所在行的直线表达式,根据该直线表达式,遍历所有box,将属于该行的box筛选出来,再重新选取一个box确定另一行的直线表达式,以此类推,直到遍历所有的box,完成了所有box的分组;再在竖直方向和水平方向对box进行排序;
[0038] 如图4所示,灰色框为中心box,周围的黑色框为距离灰色框最近的几个box。将灰色框与各黑色框分别两两组合,分别计算灰色框与各黑色框连线的夹角,筛选出角度接近180°的点的组合,比如图中的实线接近180°,可以将这两个点进行直线拟合。寻找到所有的可以拟合直线的组合,计算这些直线的斜率,选出斜率最小的直线的斜率作为最优直线斜率(这里的斜率大小的比较,实际是比较斜率绝对值,下面关于斜率的比较同理),如果最优直线斜率大于30°的斜率,说明中心box的左侧或者右侧存在漏检的情况,那么这个最优直线斜率理应舍弃。最后计算出所有行的最优直线斜率的平均值,作为整张图片的端口所在行直线的斜率。
[0039] 在确定斜率之后,随机选取一个box可以确定该box所在行的直线表达式,根据该直线表达式,遍历所有box,将属于该行的box筛选出来。再重新选取一个box确定另一行的直线表达式,以此类推,直到遍历所有的box,完成了所有box的分组。对划分完成的box进行行排序和列排序,在竖直方向上,按照每行box的y_min平均值进行排序,y_min平均值的小的在上,y_min平均值大的在下,在水平方向上,按照每个box的x_min值进行排序,同行中x_min值小的在左,x_min值大的在右。排序完成后,将box替换为标签表示,这样就完成了所有检测到的ODF端口矩阵,下一步便是将漏检的端口添加到该矩阵中。
[0040] 3)漏检box填充,矩阵化输出
[0041] 漏检box填充可以分为以下两步:
[0042] 第一步:中间填充,计算每一行相邻box的间距,如果该行漏检且某两个相邻box的间距大于阈值,判断这两个box之间存在漏检端口,漏检端口的个数=⌊两框的实际间隔/(框之间的平均间隔+框的平均长度)⌋,“⌊⌋”代表向下取整,然后以标签“X”填充。
[0043] 第二步:两端填充:以完整行为参考(由于ODF的规格是固定的,可以通过每一行box的数目来判断是否为完整行),取所有完整行的最左侧box的x_min均值和最右侧box的x_min均值,判断非完整行的最左侧box的x_min值和最右侧box的x_min值与该均值的差值,按比例填充,填充个数为⌊差值/(框之间的平均间隔+框的平均长度)⌋;若没有完整行,则先选取漏检最少的一行,按照左右平均填充的方式填充,其他行再以该行作为参考,进行两端填充,即把填充后的该行当作为完整行,采用上述存在完整行的填充方式进行填充。
[0044] 在进行漏检box填充之后,ODF端口检测位置矩阵化输出全部完成。实施例
[0045] 如图5所示,是一张ODF端口检测图片。规格是6*12=72,其中‘u’表示空闲端口,‘p’表示占用端口。显然,可以看出这张图片中还存在一些端口没有被检测出来。
[0046] 对图5进行矩阵化输出,采用实施例一种的方法进行处理,可以得到以下的输出矩阵。
[0047] 图6为矩阵化输出的结果,其中‘X’表示漏检的端口。可以看出原图中所有的漏检端口均被找到
[0048] 综上所述,上述实施例的对ODF端口检测位置的矩阵化输出方法,对检测算法检测端口结果进行了修正,针对错检和漏检端口进行了处理,实现了错检端口的删除与漏检端口的填充,提高了检测的准确率;对检测端口进行了矩阵化输出,矩阵化输出的好处是可以快速地寻找到原始图片各种类型端口的位置,具有良好的可视化性能,值得被推广使用。
[0049] 尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。