CN116823807A - 一种桥梁上部结构现浇梁识别方法和系统 - Google Patents
一种桥梁上部结构现浇梁识别方法和系统 Download PDFInfo
- Publication number
- CN116823807A CN116823807A CN202310967929.0A CN202310967929A CN116823807A CN 116823807 A CN116823807 A CN 116823807A CN 202310967929 A CN202310967929 A CN 202310967929A CN 116823807 A CN116823807 A CN 116823807A
- Authority
- CN
- China
- Prior art keywords
- text
- line
- information
- lines
- vertical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000011065 in-situ storage Methods 0.000 title claims abstract description 38
- 238000012163 sequencing technique Methods 0.000 claims abstract description 28
- 238000010586 diagram Methods 0.000 claims abstract description 26
- 238000007781 pre-processing Methods 0.000 claims abstract description 26
- 230000011218 segmentation Effects 0.000 claims abstract description 12
- 238000002372 labelling Methods 0.000 claims description 102
- 230000007704 transition Effects 0.000 claims description 79
- 238000012545 processing Methods 0.000 claims description 56
- 238000005192 partition Methods 0.000 claims description 28
- 238000013461 design Methods 0.000 claims description 24
- 210000000746 body region Anatomy 0.000 claims description 11
- 238000004140 cleaning Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 9
- 238000007596 consolidation process Methods 0.000 claims description 8
- 238000001914 filtration Methods 0.000 claims description 8
- 230000006740 morphological transformation Effects 0.000 claims description 8
- 238000000926 separation method Methods 0.000 claims description 8
- 238000003860 storage Methods 0.000 claims description 7
- 238000001514 detection method Methods 0.000 claims description 4
- 238000007667 floating Methods 0.000 claims description 4
- 238000005259 measurement Methods 0.000 claims description 4
- 230000009467 reduction Effects 0.000 claims description 3
- 238000010276 construction Methods 0.000 abstract description 6
- 238000012423 maintenance Methods 0.000 abstract 1
- 238000004458 analytical method Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000005520 cutting process Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000012937 correction Methods 0.000 description 4
- 230000001502 supplementing effect Effects 0.000 description 4
- 230000008719 thickening Effects 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 101100537629 Caenorhabditis elegans top-2 gene Proteins 0.000 description 2
- 101150107801 Top2a gene Proteins 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000000877 morphologic effect Effects 0.000 description 2
- 230000004660 morphological change Effects 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000004567 concrete Substances 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000003708 edge detection Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 239000011150 reinforced concrete Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/0002—Inspection of images, e.g. flaw detection
- G06T7/0004—Industrial image inspection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/13—Edge detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/136—Segmentation; Edge detection involving thresholding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/764—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10004—Still image; Photographic image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30108—Industrial image inspection
- G06T2207/30132—Masonry; Concrete
Abstract
本发明提出一种桥梁上部结构现浇梁识别方法和系统。其中,方法包括:对图纸进行图片前置处理,得到只剩下图纸标题和图纸内容的二值图;对所述二值图进行图纸区域分割,分割后的二值图的图纸区域按照从上到下和从左到右的顺序排序,每个图纸区域中包含了图纸标题和图纸轮廓;对图纸区域分割后的二值图进行分类,并根据图形类别识别二值图,得到梁的信息;所述图形类别包括:立剖面图、板平面图和横截面图;对所述梁的信息进行组合处理,得到完整且准确的现浇梁上部结构信息。本发明能够在保证准确性和效率的基础上,还可以大幅度的降低施工成本和门槛,使得三维模型的创建和维护更加简单准确。
Description
技术领域
本发明属于数字化基建领域,尤其涉及一种桥梁上部结构现浇梁识别方法和系统。
背景技术
随着数字化时代的到来,数字化基建成为了发展的重要一环。经过人工智能领域模型和算法的不断迭代优化更新,以及深度学习和神经网络等先进图像处理算法的应用,为图像识别提供了更高的准确性和效率。但是目前桥梁领域乃至基建领域依旧会使用人工识别图纸,在自动识别数字化处理技术方面仍然落后。大量的数据提取以及信息分析,使得人工识别图纸的工作量庞大而耗时且无法避免一些人为错误。所以基于行业领域的迫切需求以及各项技术的发展成熟,人工智能成为在基建领域发展的必然趋势。基建领域人工智能的使用首先要根据图纸进行数据信息提取,可以根据提取到信息做出工程管理、数据可视化分析以及模型构建和仿真等。对于桥梁领域的数字化转型,图纸识别是将传统的图纸(纸质或扫描版)转换为数字化信息的重要一环,其中桥梁上部结构作为桥梁的主要构成部分,对其信息的识别为必不可少的部分。
梁的种类繁多,按照轴线形状,可分为直梁和曲梁;按照横截面形式,可分为工型梁、T型梁、箱梁等。其中箱梁作为桥梁工程中梁的一种,内部为空心状,上部两侧有翼缘,类似箱子,分为单箱、多箱等;钢筋混凝土结构的箱梁分为预制箱梁和现浇箱梁,本文主要针对现浇湘梁进行识别。
现浇箱梁是一种在现场进行浇筑的桥梁结构形式。它由一系列混凝土构件组成,可以适应各种桥梁跨径和几何形状的要求,包括直线、曲线、斜线等。通过灵活调整上、下翼板的宽度、厚度以及腹板等参数的布置,适用于各种不同类型和跨度范围的桥梁。
技术方案术语解释:
截面区域:图中包含标题及标注信息在内的矩形区域;
梁主体区域:图中仅包含梁的结构特征在内的矩形区域,截面区域将包含主体区域;
梁的箱室:箱梁内部为空心状,这些中间空心部分被称为箱室。
目前基建领域施工主要根据二维图纸进行实际工程的布置和施工操作,传统的二维图纸大多数通过手工或CAD绘制后下发打印或扫描生成。由于目前二维图纸的使用仍然广泛使用,如果实现由二维图纸进行建模需要依赖人工处理,在CAD中创建和编辑为数字图纸。当然也有一些软件和技术提供了将二维图纸转换为三维模型的功能,但仍然需要人工录入相关的数据信息或人工生成结构化数据,并没有从根本上解决图纸自动识别建模的需求。
现有技术中无论是使用人工处理将传统二维图纸在CAD中还原后进行建模还是将结构化数据录入现有的软件中,过程中需要花费大量的人工及时间成本并存在人为错误的风险,以及二维图纸的建模方式主要侧重于几何形状和平面视图,缺乏对三维信息和构造细节的完整表示。特别是一个桥梁的图纸将包含多个不同位置的横截面、不同跨度的立剖面以及对应的多个顶平面及底平面,数据量信息庞大,在实际中操作困难无法大规模的推行,随着时间的推移及图纸的增加将会越来越无法实现。而且如果二维图纸发生了变化或更新,需要手动重新检查校正数据将这些变化更新到三维模型,在对比和同步过程中也将需要耗费大量的时间和精力,并存在数据一致性的风险。
发明内容
为解决上述技术问题,本发明提出一种桥梁上部结构现浇梁识别方法的技术方案,以解决上述技术问题。
本发明第一方面公开了一种桥梁上部结构现浇梁识别方法,所述方法包括:
步骤S1、对图纸进行图片前置处理,得到只剩下图纸标题和图纸内容的二值图;
步骤S2、对所述二值图进行图纸区域分割,分割后的二值图的图纸区域按照从上到下和从左到右的顺序排序,每个图纸区域中包含了图纸标题和图纸轮廓;
步骤S3、对图纸区域分割后的二值图进行分类,并根据图形类别识别二值图,得到梁的信息;所述图形类别包括:立剖面图、板平面图和横截面图;
步骤S4、对所述梁的信息进行组合处理,得到完整且准确的现浇梁上部结构信息。
在所述步骤S1中,所述对图纸进行图片前置处理的方法包括:
识别图纸中的表格、识别表格外的文本、根据ContourLine找线、对图纸进行缩放、对图纸进行方向矫正、解析图纸标题和清理表格及页面边框。
在所述步骤S2中,所述对所述二值图进行图纸区域分割的方法包括:
对所述二值图依次进行图纸中的拆分辅助线、清除二值图中的文本信息、为图纸标题分配主体区域、确定主体区域内的子区域、合并图纸标题、将没有对应的图纸标题的轮廓分配到对应的图纸区域中和重新分配中文文本区域。
在步骤S3中,识别立剖面图,得到梁的信息包括:
梁长和梁高;顶板高度和底板高度;上侧边倒角高度和下侧边倒角高度;箱室内侧四个倒角宽高;梁体内部长度信息;隔板倒角宽高;伸缩缝槽口信息;
识别立剖面图,得到梁的信息的方法包括:
先确定梁长和梁高,即确定梁的主体区域:
梁长:一个内容为数字的文本框,其下方有一根超过图形区域一半以上的横线,并且所述横线位于图形区域最上方;
梁高:在梁长横线的两端外侧,存在一个旋转90度的文本框;所述文本框中的内容为数字,其右侧有第一竖线,所述第一竖线的高度就是梁高;
根据梁长和梁高,确定梁的主体区域;
确定是否有隔板:
隔板位于梁长正中心位置,确定是否有隔板的办法是:判定在梁矩形中心位置,是否存在两根以上的第二竖线,并且所述第二竖线的特点是,第二竖线在梁的上下范围内,且第二竖线的长度超过梁的高度的一半以上;
获取隔板倒角和箱室内侧倒角的宽高信息、以及伸缩缝槽口信息:
隔板倒角:位于梁矩形中心位置,其文本方向为横向,文本内容为宽x高的模式,并且下方有一个第一横线,文本框矩形距离中心位置的距离不超过梁高,根据这些特征就能确定是隔板倒角的宽高信息;
箱室内侧倒角:排除隔板倒角,梁的主体区域内的其他倒角即为箱室内侧倒角的宽高信息;
伸缩缝槽口:其内容也是宽x高的模式,只不过其位置位于梁的两端顶部;
获取顶板高度、底板高度、上侧边倒角高度和下侧边倒角高度:
高度信息的文本框为90度,并且文本右侧有一根第三竖线;
如果所述第三竖线对应两个数字文本框,则外层的为顶高度和底板高度,内层的为上侧边倒角高度和下侧边倒角高度;
梁体内部长度信息:
确定梁体内箱室的左右两端位置,即箱室的左右两个第四竖线,这两个第四竖线的特点是,第四竖线的长度超过梁高的一半以上,并且第四竖线的上方距离梁顶部的距离不超过梁高的1/4,从梁的两侧开始遍历竖线,遇到符合条件的竖线即为箱室的左右两端位置;
确定“过渡段”的位置,过渡段的特点是:在梁体内有一根第五竖线,所述第五竖线与梁底部竖线相交,如果第五竖线将底部横线分割为两段,那么其中一侧线的斜率大,而另外一侧则是纯水平线,那么这个位置就是过渡段的拐点;
根据所述梁体内箱室的左右两端位置和“过渡段”的位置,确定梁体内部长度信息。
根据本发明第一方面的方法,在步骤S3中,识别板平面图,得到梁的信息包括:左右腹板宽度;加宽段长度、过渡段长度和过渡段宽度;过渡段倒角的宽度和长度;
识别板平面图,得到梁的信息的方法包括:
找到区域内的文本,将所述文本与ContourLine找线中的CntLine的结构信息相结合查找主体区域,具体实现方案如下:
针对等宽矩形,通过长横线和文字通过OCR检测得到文本位置和直线位置的信息,横向文本和横线竖线生成横向标注线,纵向文本和纵向文字生成纵向标注线;横向标注线出现做到的左侧点作为主体区域的左侧位置,同理生成右侧和上侧和下侧位置;
针对曲线,存在CntLine的结构,根据exact_thickness和thickness的对比,得到标注线是否是曲线,如果是曲线作为横向标注线,左右分别处理;不管是否是曲线,纵向标注线都是直线;
寻找左右侧的腹板宽度,如果存在多箱室的情况,寻找中腹板宽度,具体实现方案如下:
基于主体区域寻找在主体区域中间1/3区域的第六竖线;由于左右腹板宽度的标注方式是在其中找到从上到下的标注线,标注线可能会从头到尾,也可能是一段一段的标注;根据水平x轴位置进行第六竖线分组;对于每组将所述文本进行匹配,选取文本最多的分组作为隔板标注;
由于腹板宽度在右侧的范围是在75cm以内,所以根据全图的度量信息,右侧腹板宽度通过从左往右找到对应宽度,左侧腹板宽度通过从右往左找到对应宽度;
文本的长度超过6个字符的时候一定是标注了多层,所以此时会查找中腹板宽;首先根据水平x轴位置进行第六竖线分组;对于每组将所述文本进行匹配;去掉在找到的左腹板宽和右腹板宽分组的文本,取出最中间的文本组合,得到中腹板宽;
获取加宽段长度、过渡段长度和过渡段的宽度:
找到的主体区域,找到其外部的标注线;取横向文本最多的标注线作为详细标注;找到的主体外部标注线,通过与标注线相交的第七竖线确定标注线的区域;此时以找到的腹板的标注线的左侧的区域为候选文本,并且以腹板标注区域为分隔线,将标注线的区域分隔成左右两侧,左侧成为左侧文本,右侧成为右侧文本;并且以此分隔线为基准,将主体区域划分为左右两侧;
如果所述左侧文本中出现小于100的数值,则存在倒角信息,所述数值为腹板倒角长度;如果倒角信息文本的右侧出现2个文本,则所述2个文本是加宽段长度以及过渡段长度;如果倒角信息文本的右侧只有1个文本,说明没有加宽段,只存在过渡段,所述1个文本为过渡段长度;
如果所述左侧文本没有小于100的数值,则说明不存在倒角信息;所述左侧文本中出现超过3个文本,则从右到左为过渡段,加宽段,否则不存在加宽段,只有过渡段,最右侧为过渡段;
如果存在加宽段,加宽段宽度在所述左侧文本的左右竖线区域范围内的主体区域查找;如果不存在加宽段,则在过渡段的左侧,以及倒角的右侧查找过渡段宽度;
获取腹板倒角的宽度和长度:
如果左侧主体区域内存在A×B的模式的文本,并且在主体区域内部,则是标注倒角宽度的信息,A为过渡段倒角的长度,B是过渡段倒角的宽度;
如果左侧主体区域内不存在A×B的模式的文本,并且确定了存在腹板倒角的长度;则寻找腹板倒角长度右侧的标注线,对于标注线中的文本,找到y轴位置重叠的文本作为文本a;根据文本a位置在左侧文本中找到与其同一x轴位置的文本b,文本b与文本a相减得到腹板倒角的宽度。
在步骤S3中,识别横截面图,得到梁的信息包括:
梁高、悬臂厚度及顶板底板厚度、梁竖向信息;放坡信息;梁横向信息;所述梁横向信息包括:梁宽、腹板、悬臂、箱室及其倒角;
识别横截面图,得到梁的信息的方法包括:
补充处理标题:
根据图片前置处理中的识别到的文本内容,保留下方有两条像素长度与文本像素长度相近的两条横线的文本,得到第一标题文本;
使用形态学变换获取横线,将横线按照长度相近垂直间距不超过10像素进行分组,划分出双横线并与文本进行匹配,保留匹配到双横线的文本;
由于部分第一标题文本无法正确识别,所以未匹配到文本的双横线会应用其坐标信息生成空白文本作为标题保留下来;
结合模型识别结果再次进行区域划分:
横截面通过模型识别确定主体区域及主体内部空腔区域的位置,后续处理均在此信息的基础上实现;模型识别的类型分为,beam_box箱梁横截面、quad_inner_box四边形箱室、hex_inner_box六边形箱室和oct_inner_box八边形箱室;
在模型识别结果中过滤掉与图片前置处理结果中的立剖面或板平面区域有重叠的部分;当水平方向存在横截面区域重叠的情况时,将保留左侧的横截面区域;
将模型识别到的箱室进行分组,以便后续划分给不同的横截面区域;分组的原则为,相邻箱室中心点水平方向的间距不大于箱室宽度的2倍并且中点垂直方向的间距不大于高度的1/2;
将第一标题文本划分给识别到的横截面区域,识别到的横截面区域如果出现重叠去掉面积小的区域,保留的区域与第一标题文本按照就近原则进行划分;
将每组箱室划分给横截面区域,划分的原则为,箱室矩形被横截面矩形包含或重叠区域面积在百分之八十以上;至此横截面区域已经划分好箱室和标题;
使用cv2.findContours找到图纸轮廓,按照就近原则将每个轮廓划分给横截面区域;至此横截面区域划分已经完成,每个横截面将包含识别到的主体区域、箱室、标题及标注信息;
识别每个横截面区域内的文本:
使用模型识别横截面区域内0度和90度方向的文本;
保留内容为CxD格式或数字和字母的文本;
将保留的文本按照方向划分为水平文本或竖直文本,将水平文本中位置与在第一标题文本在垂直方向位置在于定义范围内的文本划分为第二标题文本,用于再次校正标题;
校正标题,将所述第二标题文本按照从上到下从左到右进行排序,将最左上的文本作为标题;
获取横截面图的横向标注线、竖向标注线及梁主体结构特征线:
使用形态学变换获取横截面区域内的横线和竖线,过滤掉穿过文本的小于预定义长度的横线和竖线;
对横向或竖向文本及线进行划分:
横向文本分组,将所述横向文本的中心点位置按照垂直方向坐标在预定义范围内的分为一组;
将A%(A为浮点数)格式分组的文本作为放坡信息的文本,且对分组中的每个文本内容按照格式进行校正;
对每个横向文本分组进行横向标注线匹配处理,匹配原则为横线与当前分组中心点垂直方向坐标间距小于文本高度且距离最近,横线长度与文本分组所占像素在预定义范围内的划分为当前文本分组的标注横线;
除了匹配到文本的横线外,其余横线均作为非标注横线保留;至此需要的放坡及梁横向的信息的标注文本和非标注横线均已处理完成;
取大于最长文的标注横线的长度95%的一组横线,进行从上到下的排序,将最上面的一条横线作为基准,重新调整梁主体区域的左右位置坐标;
对竖向文本进行匹配竖线操作,得到梁竖向文本信息及非标注竖线;
取标注竖线作为基准,重新调整梁主体区域的上下位置坐标;
获取梁主体的横线和竖线,其中包括梁上下边线、凹槽线、悬臂线、设计线、支座线、箱体的左右边线、横梁加宽线;
对标注横线和标注竖线进行分割处理,分割原则为水平方向每组文本的数量与标注横线被竖向线段分割后的线段数量一致的将保留,保留被梁主体的上下边线及其延长线进行分割的所有标注竖线;
所有梁的横向或竖向标注文本及标注线、构成梁主体特征的横竖线均已准备好;
获取梁的放坡信息:
根据放坡信息的文本相对于梁主体区域位置,放坡方式分为,两侧、左侧和右侧;对放坡坡度值按照实际特征再次进行校正得到最终的放坡信息,即放坡方式、左放坡坡度和右放坡坡度;
获取梁宽、设计线位置、左右悬臂长度、左右腹板投影宽度、左右横梁加宽宽度、左右腹板及中腹板、箱体宽度、边顶板或底板倒角和中顶板或底板倒角;对标注文本以组为单位按照从上到下进行排序,每组文本又按照从左到右排序,对应的标注线随之变化;以箱体的左右边界坐标为基准,将标注文本及标注线划分为左侧、右侧和中间三组;
处理左侧及右侧标注文本及其标注线,获取梁的左侧悬臂长度、右侧悬臂长度、左侧腹板投影宽度、右侧腹板投影宽度、左侧横梁加宽宽度和右侧横梁加宽宽度:
若存在左侧横梁加宽且加宽方式为悬臂内加宽,将左侧标注文本分组最后一个作为左侧横梁加宽宽度;当加宽为悬臂外加宽时,左侧标注文本分组第一个作为左侧横梁加宽宽度;
获取到了箱体的左右边线且斜率小于0.06,则左右两侧的标注文本均为悬臂长度信息,左侧悬臂长度为左侧文本组之和;
没有箱体左右边线或边线斜率大于等于0.06,则标注文本将会包含悬臂及腹板投影;左侧标注文本组最后一个文本所在的标注线段若与箱体左边线相交且不与梁主体左侧相交将判断为左侧腹板投影宽度,左侧标注文本组中的剩余文本和作为左侧悬臂长度;否则左侧的所有标注文本的和作为左侧悬臂长度;
处理中间标注文本及其标注线,获取到剩余的梁所有横向信息:
判断标注文本是否为支座或固结的信息;
如果标注线段与梁主体水平方向左右两侧均相交,则此标注文本为梁宽;
如果标注文本数量为2,且其对应的标注线段与梁左侧或右侧相交,将判断此组标注文本为设置线位置,设计线左侧的记录为设置线位置信息,右侧的记录为梁主体右侧信息;
当标注线段水平方向位置在箱体内或者在箱体外但在梁主体内,此标注文本分组将作为梁箱体的信息进行处理;
判断当前标注方式为是腹板与箱室间隔标注,还是腹板与箱室组合标注;如有标注内容判断为支座或固结,则将不进行处理;
根据模型识别到箱室区域,判断箱室区域内的标注线是否为箱室标注;当无法判断时,将结合所述标注方式判断当前标注为箱室标注还是腹板标注;
判断为腹板标注后,根据在箱室的相对位置判断为左右编腹板还是中腹板;
判断为箱室标注后,将当前标注文本作为一个箱室的宽度;根据箱室内的文本获取倒角信息,同理根据相对位置判断边倒角还是中倒角;其中倒角的形式包含两种,一种通过文本格式判断,另一种需要线查找三角形两条相交直角边的形状,再根据形状两侧的文本判断是否为倒角;
若未获取到腹板宽度信息,需要根据梁主体内部箱室间或箱室与箱体间的标注文本获取边腹板或中腹板宽度;
如果出现梁的部分信息无法获得,需要根据已经获得的信息及梁的特征补充或校正部分无法获得的信息;
若没有获取到设计线位置,将再次根据梁主体左右两侧长度大于梁主体高度的长竖线,再次获取梁的设计线位置信息;
至此获取到梁横向的所有信息;
获取梁高、悬臂端部及根部厚度、顶板及底板厚度和横梁加高:
对标注文本以组为单位按照从左到右进行排序,每组标注文本又按照从上到下排序,对应的标注线随之变化;如果有凹槽线时,若标注线段与梁上边界和所述凹槽线都相交时,将不做操作处理;
标注线与梁上下边界都相交,且标注文本位于标注线垂直方向中间位置时,则所述标注文本判断为梁高;
箱体区域左右两侧的标注文本为悬臂厚度,x轴位置靠近梁主体左侧或右侧的标注文本为端部厚度,靠近箱体的标注文本为根部厚度;
x轴位置位于箱体内部,与梁主体上边线相交的标注文本为顶板厚度,下边线相交的标注文本为底板厚度;
与梁底边线相交,且在梁主体外的标注文本为横梁加高;
至此获取到梁横向和竖向的所有信息。
根据本发明第一方面的方法,所述方法还包括:
步骤S5、对包含现浇梁上部结构信息的图纸进行坐标还原;
所述坐标还原包括文本信息、截面区域位置和梁主体区域位置的还原。
本发明第二方面公开了一种桥梁上部结构现浇梁识别系统,所述系统包括:
第一处理模块,被配置为,对图纸进行图片前置处理,得到只剩下图纸标题和图纸内容的二值图;
第二处理模块,被配置为,对所述二值图进行图纸区域分割,分割后的二值图的图纸区域按照从上到下和从左到右的顺序排序,每个图纸区域中包含了图纸标题和图纸轮廓;
第三处理模块,被配置为,对图纸区域分割后的二值图进行分类,并根据图形类别识别二值图,得到梁的信息;所述图形类别包括:立剖面图、板平面图和横截面图;
第四处理模块,被配置为,对所述梁的信息进行组合处理,得到完整且准确的现浇梁上部结构信息。
本发明第三方面公开了一种电子设备。电子设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时,实现本公开第一方面中任一项的一种桥梁上部结构现浇梁识别方法中的步骤。
本发明第四方面公开了一种计算机可读存储介质。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,实现本公开第一方面中任一项的一种桥梁上部结构现浇梁识别方法中的步骤。
综上,本发明提出的方案能够:在每张图片中准确定位出梁的截面区域以及每个截面中梁的主体区域;准确快速的对不同截面区域进行识别,最终输出一组图片中所有梁截面的结构化信息用于建模;除了结构化信息外,还可以输出识别结果的可视化图片作为参考,并且根据输出结果可以快速查看出梁的每个参数信息与图片中的哪些文本相关;本文在整图中准确定位截面区域的算法并不仅限于在现浇梁或者梁中的使用,使用于其他具有标题以及轮廓线的图,比如预制箱梁、T型梁等;本文中针对现浇梁中横截面、立剖面、板平面进行自动识别的算法也适用于预制箱梁、T型梁的识别,见图5对预制箱梁的识别,并不仅限于识别一种梁,有较强的适用性及可扩展性,不受图片局限性的影响并且对带有噪点的图片仍然适用。本文中输出的结构化数据非常灵活清晰,可以适应多种形式的需求。
附图说明
图1为根据本发明实施例的一种桥梁上部结构现浇梁识别方法流程图;
图2为根据本发明实施例的一种桥梁上部结构现浇梁识别系统结构图;
图3为根据本发明实施例的一种电子设备的结构图。
具体实施方式
本发明第一方面公开了一种桥梁上部结构现浇梁识别方法。如图1所示,所述方法包括:
步骤S1、对图纸进行图片前置处理,得到只剩下图纸标题和图纸内容的二值图;
步骤S2、对所述二值图进行图纸区域分割,分割后的二值图的图纸区域按照从上到下和从左到右的顺序排序,每个图纸区域中包含了图纸标题和图纸轮廓;
步骤S3、对图纸区域分割后的二值图进行分类,并根据图形类别识别二值图,得到梁的信息;所述图形类别包括:立剖面图、板平面图和横截面图;
步骤S4、对所述梁的信息进行组合处理,得到完整且准确的现浇梁上部结构信息。
在步骤S1,对图纸进行图片前置处理,得到只剩下图纸标题和图纸内容的二值图。
在一些实施例中,在所述步骤S1中,所述对图纸进行图片前置处理的方法包括:
识别图纸中的表格、识别表格外的文本、根据ContourLine找线、对图纸进行缩放、对图纸进行方向矫正、解析图纸标题和清理表格及页面边框。
具体地,识别图片中的表格
由于图纸中,除了要识别的“立剖面图”、“板平面图”、“横截面图”外,还有不定数量的表格,这些表格对于图纸的分析和识别是非常重要的,不过表格内容识别并不是重点内容,不做详细描述。只是利用了页面中表格识别的位置信息,来帮助识别图纸中的目标图形。其中表格识别可以识别到以下内容:
表格的位置:表格的左上角坐标、右下角坐标;
表格的类型:普通表格、左侧标题栏、底部标题栏、右侧标题栏、右下角标题栏、右上角页头栏;
后续的识别过程中,会利用表格的位置信息来排除表格区域和表格标题、还可以根据表格找到图纸外边框并且排除外边框。因为识别图纸信息时,这些内容是干扰项。
表格外文本识别
当排除表格、以及表格标题后,剩下的文本可能是图纸的标题,也可能是图纸的其他内容,所以需要对这些文本进行进一步的识别,以便确定图纸的标题;
ContourLine找线
在整个图纸识别过程中,需要精确的找到图纸的边框、标题下方的双横线、表格的边框等,这些线条的位置信息对于图纸的分析和识别是非常重要的。而找直线的方式有很多种,例如霍夫变换、Canny边缘检测等等。这些方法各有优劣,但是在本发明场景中,由于图纸的线条都是水平或垂直的,所以用了一个更精确、速度更快、操作更方便的方法:
1)将图像转换为二值图;
2)将二值图进行形态学变化中的CLOSE和OPEN操作,CLOSE的目的是将线条连接起来,OPEN的目的是将线条断开,这样可以得到更精确的线条位置;
2.1)获取横线图
先进行CLOSE操作,然后进行OPEN操作,CLOSE的核大小为(2,1),OPEN的核大小为(20,1);
2.2)获取竖线图
先进行CLOSE操作,然后进行OPEN操作,CLOSE的核大小为(1,2),OPEN的核大小为(1,20);
3)查找轮廓线
使用cv2.findContours找到横、竖线图中的线条轮廓,并且使用CntLine类封装成对象,方便后续的操作;
CntLine包含多个属性,根据contour的外接矩形获得线条的位置;根据宽高比判定是否为横线;根据外接矩形的宽高计算得到线的长度和宽度;通过计算垂线方向的投影得到投影值的最大值作为线条的实际宽度;线条镂空部分的长度,用于后续判定有镂空部分的单根横线轮廓是否可能为双横线;CntLine的这些属性在后续的方案处理中均会被使用。
除了属性外,CntLine还包含了多个方法,根据给定的偏移量平移线段;根据给定的起始点、结束点,得到一个新的CntLine对象从而实现切割线段;精确的计算两个轮廓的实际交点,得到其交点的精确位置,即计算两线的交集矩形;判定两根直线的关系,即是否为首尾相接的直线段、首尾相接的直线段间距、是否为交叠的平行线段、交叠部分的长度、是否为平行线、两平行线间距,这些方法也为后续的处理提供了基础的方法。
图片标准化处理
使用图像处理技术及文本识别结果对图片进行缩放并得到二值图操作和矫正图片方向(0度、90度、180度、270度)以及旋转矫正,具体方案见以下步骤:
1)对图纸进行缩放,缩放的目的是为了使图纸的尺寸在一定范围内,避免了超大图纸对解析性能带来的负面影响;缩放规则为短边长度大于1500的图片,按比例缩放到短边长度为1500;缩放后,对图片进行二值化处理得到只有黑白两种像素值的图像,以便后续识别时能够更好地分离文字和图形、以及横竖线条的识别等。
2)对图纸进行方向矫正,因为图纸的方向可能是任意的,为了方便后续的分析和识别,需要将图纸矫正为水平方向。
通常图纸的标准宽高比为`1:1.414`,但是由于扫描图的尺寸不一,也会有超长图纸、非常规比例图纸出现,所以无法完全按照图片宽高比来确定方向。
因此采用了根据文本行的方向来判断图纸方向的方法,会使用到机器学习中的文本框定位技术、文本内容识别技术、文本方向识别技术。使用此方法,可以准确地判断图纸的方向,但是由于使用文本识别(OCR)技术来判断页面方向会带来一定的性能问题,为此使用了一个即能保证准确度、又能快速识别的方式:先分割、再识别。
具体步骤如下:
2.1)将图片分割为多个正方形区域,每个区域的边长为500像素左右,这样的大小能够确保区域内包含足够的文本信息、又能保证识别速度;
2.2)对分割后的小图片进行排序,将最可能包含更多文本的图片排在前面;具体排序规则是将图片中的线条去掉(使用OpenCV中的形态学处理的相关方法),去掉线条后剩下的大多就是构成文本的像素,按照小图片像素数量进行排序;
2.3)按顺序对小图片进行文本识别,如果识别到的文本的长度、数量、内容等能足够代表图片的实际方向,那么就采用该小图片的方向作为图纸的方向,否则继续识别下一张图片,直到识别到合适的图片为止;其中方向判断规则为0度、90度、180度、270度四个方向都对文本进行识别,哪个方向的文本识别结果最好,就采用哪个方向;在判断识别内容是否足够代表图片实际方向时,我们使用的规则为单行文本中对方向判断有歧义的字符("#@$%*01698bqwmxsSI")的占比不能大于0.5;如果是英文字符串那么置信度大于0.9并且文本长度大于3的才参与判定;如果包含中文则置信度大于0.5且字符数量大于1才参与判定;小图片中必须包含一个以上的中文字符;
3)对已经矫正好方向的图纸进行细微的角度调整。因为扫描图片很难保证完全水平,所以需要对图纸进行微调,使其完全水平。使用了霍夫变换来进行角度调整,使用霍夫变换的原因是因为它能够快速准确地找到图像中的直线,从而得到图像的角度。
1.5解析图纸标题
通过文本识别后,已经得到了表格外文本信息,包括文本框的坐标信息、文本框内容等。而图纸标题的特点是标题文本下方有两条横线,根据此特征可以找到图纸的标题。
但文本识别的结果并不是百分之百准确的,有些标题文本框会与比例尺、或副标题连成一行;标题下方的双横线也可能由于图像清晰度问题,或者图纸中的其他线条、文本干扰,导致识别不准确。
结合上述问题,找到图纸标题的具体步骤如下:
1)拆分文本框中的比例尺信息,如果存在比例尺信息,那么将文本框拆分为两个文本框,一个文本框包含比例尺信息,另一个文本框包含标题信息;
2)拆分文本框中的括号,通常括号内的文本为副标题,而副标题下方如果有双横线则不用拆分,如果没有双横线则需要拆分,拆分括号的目的是为了让图纸标题下方的双横线与标题文本框的两端对称,以便后续判定是否为标题;
3)然后遍历所有文本框,并判定文本框下方是否有双横线;判定双横线的方法是:根据文本框矩形的位置,向下移动一定距离(0.8倍文本框高度),左右再扩充一定距离(左右各扩充文本框高度的3倍),如果在此区域内存在两条横线,则认为文本框是图纸标题;
4)在判定一个矩形区域内是否有两条横线时,采用了CntLine的方式,该方式可以找到二值图中的横、竖线,将这些线条封装成对象(CntLine类的实例),可以灵活的判定直线的状态,包括直线的位置、长度、线宽等;在此处只需要判定是否存在两条横线、以及两条横线的位置是否在文本框的下方,线条左右两端是否与文本框的左右两端对称即可;
5)当判定为标题后,将标题周围的文本内容归属为标题的一部分,例如比例尺、副标题等;比例尺使用正则表达式提取(r'^\d+(\.\d+)?[:/]\d+(\.\d+)?$'),副标题通常是带有括号的文本、或者是与标题连成一行的文本、在双横线正下方的文本;根据这些特征将正标题周围的文本归属为副标题;
清理表格、页面边框等
清理表格、页面边框、以及多余的一些文本框是为了在后续的图纸分析和识别过程中,这些内容不会对结果产生影响,反而会增加计算量和干扰,所以需要将这些内容清理掉。最终得到一个只剩下图纸标题、图纸中梁的截面内容的二值图。
1)清理表格:根据1.1中识别到的表格信息,在二值图中将表格区域的像素值置为0;
2)清理边框:在识别表格的模块中,返回了页面边框信息的,可以根据页面的边框信息,将边框区域的像素、以及边框外的像素都值置为0从而清理图片中的边框;
3)清理多余文本:已经识别到的文本框中,有些文本时明确不需要的,例如:表格标题、备注信息(通常以“注:”、“附注:”、“注”作为起始行)的文本。
在步骤S2,对所述二值图进行图纸区域分割,分割后的二值图的图纸区域按照从上到下和从左到右的顺序排序,每个图纸区域中包含了图纸标题和图纸轮廓。
在一些实施例中,在步骤S2中,所述对所述二值图进行图纸区域分割的方法包括:
对所述二值图依次进行图纸中的拆分辅助线、清除二值图中的文本信息、为图纸标题分配主体区域、确定主体区域内的子区域、合并图纸标题、将没有对应的图纸标题的轮廓分配到对应的图纸区域中和重新分配中文文本区域。
具体地,在这一步中,可以使用OpenCV的findContours找到标题下的图纸轮廓,一个图纸标题(带有双下划线的文本)的正下方,就是图纸内容的独立轮廓,但是实际并不是这么简单,具体有以下难点:
1)一个图纸轮廓,包含两个标题,例如:顶平面图、底平面图被和为一个轮廓,但是它们的标题是分开的两个标题;
2)一个图纸轮廓包含两个标题的形式,可能是上下各一个标题、或者左右各一个标题;
3)有时,标题和图纸内容区域不是分开的,而是标题在图纸轮廓中的某个位置;
4)还有一些轮廓其实被一些辅助线连接在了一起,在查找轮廓的时候将实际的多个轮廓识别为了一个轮廓了;
5)除了通过辅助线连接在一起的轮廓外,还有两个文本轮廓共用同一个标注线。
为了解决这些问题经过了以下步骤对图纸进行区域分割:
1)拆分辅助线
这里辅助线的作用是为了对齐两个独立图纸单元的横轴位置,通常是长竖线,例如:立面图和平面图在同一页面时的对齐辅助线。拆分辅助线的规则如下:
CntLine找到所有的竖线轮廓,过滤出长度大于图纸高度一半的竖线,这些竖线作为辅助线的备选线;
图纸轮廓中包含图纸标题的区域,并且这些区域中的标题位于图纸轮廓的内部,因为这样的区域才可能是被辅助线连接在一起的区域;
将区域中的长竖线,从标题所在位置进行切割,从而得到多个轮廓;
2)清除二值图中的文本信息
将二值图中的所有中文文本信息(包括标题,即使标题不是中文的)进行清除,这样做的目的是因为不同的图形轮廓间可能会有一些公用文本信息,例如:横向排列的多个横断面图的中间可能会有一个“现浇梁中横隔板”的文本,相邻的两个图纸轮廓共用这一个标注信息,导致对分割轮廓产生干扰;
3)为标题分配主体区域
将前置处理中解析好的图纸标题,按照从上到下从左到右的顺序排列;并使用cv2.findContours找到页面中的图纸轮廓,根据轮廓的位置,将一个个分散在页面中的图纸轮廓按照从下到上的次序,分配给图纸标题;分配规则如下:
首先,得到图纸标题正下方的矩形区域,这个区域不能与其他标题交叠;
然后,找到所有与整个区域交叠的轮廓,如果交叠部分大于区域宽度的一半,则认为这个轮廓是这个区域的主轮廓;
先确定主要的图纸轮廓归属,然后再将其他的轮廓分配给主轮廓;这样做是为了使主轮廓不会被其他标题共享,而其他图纸轮廓可以拥有更复杂的逻辑判定其归属;
4)确定主体区域内的子区域
确定好各个图纸标题所属的主轮廓后,每个图纸标题都会有一个新的附属图纸区域,这个区域的宽度通常大于图纸标题宽度,主体区域的中心点位于图纸标题下方;然后,将其他与主体区域相交的图纸轮廓,都分配到这个主体区域中;
5)合并标题
需要合并的标题分为两种情况,板平面图合并在一起显示;左半平面、右半平面合并在一起显示;
在出现以上两种情况分配主体区域时,只有其中一个标题会被分配到区域,而另外一个标题是不会有对应的图形区域的;另外合并标题时,只需要将没有图形区域的标题,合并到对应有图形区域的标题上即可;
6)分配剩余区域
在确定好各个图纸标题对应的主图纸区域后,剩余的图纸轮廓都是没有对应的图纸标题的,这些轮廓需要分配到对应的图纸区域中;使用就近的分配原则,即:将轮廓分配到距离最近的图纸区域中;
7)重新分配中文文本区域
由于中文文本区域可能属于多个图纸信息项,需要根据文本内容与图纸区域的距离,按照最邻近规则进行重新分配。这里的分配允许部分文本属于多个邻近区域的。
在步骤S3,对图纸区域分割后的二值图进行分类,并根据图形类别识别二值图,得到梁的信息;所述图形类别包括:立剖面图、板平面图和横截面图。
在一些实施例中,不同的图纸区域,可以根据标题的命名规则结合模型识别,使用不同的解析逻辑对图纸进行解析。规则如下:
1)立剖面图:可能的标题包括“立面”、“中梁D-D半立面”、“第1跨立剖面”等等,标题中只要包含“立”字,就可以认为是立剖面图;
2)板平面图:可能的标题包括“第2跨顶平面”、“第1跨1/2底平面”、“板顶板平面”等等,标题中只要包含“平”字,就可以认为是板平面图;
3)示意图:可能的标题包括“箱梁剖面示意图”等,标题中只要包含“示意”两字,就可以认为是示意图;
4)大样图:可能的标题包括“大样图”、“1大样”、“A大样”等,标题中只要包含“大样”两字,就可以认为是大样图;
5)横截面图:横截面图的命名规则比较复杂,但是已经确定了以上命名,将除了以上4中外的划分为横截面图。
只实现了立剖面图、板平面图、横截面图的识别,其他类型的图纸暂时不做识别。
在所述步骤S3中,识别立剖面图,得到梁的信息包括:
梁长和梁高;顶板高度和底板高度;上侧边倒角高度和下侧边倒角高度;箱室内侧四个倒角宽高;梁体内部长度信息;隔板倒角宽高;伸缩缝槽口信息;
识别立剖面图,得到梁的信息的方法包括:
先确定梁长和梁高,即确定梁的主体区域:
梁长:一个内容为数字的文本框,其下方有一根超过图形区域一半以上的横线,并且所述横线位于图形区域最上方;
梁高:在梁长横线的两端外侧,存在一个旋转90度的文本框;所述文本框中的内容为数字,其右侧有第一竖线,所述第一竖线的高度就是梁高;
根据梁长和梁高,确定梁的主体区域;
确定是否有隔板:
隔板位于梁长正中心位置,确定是否有隔板的办法是:判定在梁矩形中心位置,是否存在两根以上的第二竖线,并且所述第二竖线的特点是,第二竖线在梁的上下范围内,且第二竖线的长度超过梁的高度的一半以上;
获取隔板倒角和箱室内侧倒角的宽高信息、以及伸缩缝槽口信息:
隔板倒角:位于梁矩形中心位置,其文本方向为横向,文本内容为宽x高的模式,并且下方有一个第一横线,文本框矩形距离中心位置的距离不超过梁高,根据这些特征就能确定是隔板倒角的宽高信息;
箱室内侧倒角:排除隔板倒角,梁的主体区域内的其他倒角即为箱室内侧倒角的宽高信息;
伸缩缝槽口:其内容也是宽x高的模式,只不过其位置位于梁的两端顶部;
获取顶板高度、底板高度、上侧边倒角高度和下侧边倒角高度:
高度信息的文本框为90度,并且文本右侧有一根第三竖线;
如果所述第三竖线对应两个数字文本框,则外层的为顶高度和底板高度,内层的为上侧边倒角高度和下侧边倒角高度;
梁体内部长度信息:
确定梁体内箱室的左右两端位置,即箱室的左右两个第四竖线,这两个第四竖线的特点是,第四竖线的长度超过梁高的一半以上,并且第四竖线的上方距离梁顶部的距离不超过梁高的1/4,从梁的两侧开始遍历竖线,遇到符合条件的竖线即为箱室的左右两端位置;
确定“过渡段”的位置,过渡段的特点是:在梁体内有一根第五竖线,所述第五竖线与梁底部竖线相交,如果第五竖线将底部横线分割为两段,那么其中一侧线的斜率大,而另外一侧则是纯水平线,那么这个位置就是过渡段的拐点;
根据所述梁体内箱室的左右两端位置和“过渡段”的位置,确定梁体内部长度信息。
获取图纸区域的各种信息的方案如:
1)获取文本框的位置信息、以及内容信息;
2)获取横竖线条的位置信息;
3)结合立剖面图的特点,根据以上信息,就可以确定图纸区域的各种信息了;
不同的图形有不同的特点,因此,不同的图形需要不同的解析方案,但是,解析方案的核心思想是一致的,即获取图形的各种信息,然后根据这些信息,确定图形的各种信息。
识别板平面图,得到梁的信息包括:左右腹板宽度;加宽段长度、过渡段长度和过渡段宽度;过渡段倒角的宽度和长度;
识别板平面图,得到梁的信息的方法包括:
找到区域内的文本,将所述文本与ContourLine找线中的CntLine的结构信息相结合查找主体区域,具体实现方案如下:
对等宽矩形,通过长横线和文字通过OCR检测得到的文本位置和直线位置的信息,横向文本和横线竖线生成横向标注线,纵向文本和纵向文字生成纵向标注线;横向标注线出现做到的左侧点作为主体区域的左侧位置,同理生成右侧和上侧和下侧位置;
针对曲线,存在CntLine的结构,根据exact_thickness和thickness的对比,得到标注线是否是曲线,如果是曲线作为横向标注线,左右分别处理;不管是否是曲线,纵向标注线都是直线;
寻找左右侧的腹板宽度,如果存在多箱室的情况,寻找中腹板宽度,具体实现方案如下:
基于主体区域寻找在主体区域中间1/3区域的第六竖线;由于左右腹板宽度的标注方式是在其中找到从上到下的标注线,标注线可能会从头到尾,也可能是一段一段的标注;根据水平x轴位置进行第六竖线分组;对于每组将所述文本进行匹配,选取文本最多的分组作为隔板标注;
由于纵向和全量的文本识别有可能会有一些精确度的问题;此时通过找到区域以后进行切割,切割出来的子图,进行文本识别。由于已经旋转,将分组中的线进行旋转得到对应横线。将其中的所有文本基于横向排序,分为左侧文本和右侧;由于腹板宽度在右侧的范围是在75cm以内,所以根据全图的度量信息,右侧腹板宽度通过从左往右找到对应宽度,左侧腹板宽度通过从右往左找到对应宽度;
文本的长度超过6个字符的时候一定是标注了多层,所以此时会查找中腹板宽;首先根据水平x轴位置进行第六竖线分组;对于每组将所述文本进行匹配;去掉在找到的左腹板宽和右腹板宽分组的文本,取出最中间的文本组合,得到中腹板宽;
获取加宽段长度、过渡段长度和过渡段的宽度:
找到的主体区域,找到其外部的标注线;取横向文本标注线最多的作为详细标注;找到的主体外部标注线,通过与标注线相交的第七竖线确定标注线的区域;此时以找到的腹板的标注线的左侧的区域为候选文本,并且以腹板标注区域为分隔线,将标注线的区域分隔成左右两侧,左侧成为左侧文本,右侧成为右侧文本;并且以此分隔线为基准,将主体区域划分为左右两侧;
如果所述左侧文本出现小于100的数值,则所存在倒角信息,所述数值为腹板倒角长度;如果倒角信息文本的右侧出现2个文本;则所述2个文本是加宽段长度以及过渡段长度;如果倒角信息文本的右侧只有1个文本,说明没有加宽段,只存在过渡段,所述1个文本为过渡段长度;
如果所述左侧文本没有小于100的数值,则说明不存在倒角信息;所述左侧文本中出现超过3个文本,则从右到左为过渡段,加宽段,否则不存在加宽段,只有过渡段,最右侧为过渡段;
如果存在加宽段,加宽段宽度在所述左侧文本的左右竖线区域范围内的主体区域查找;如果不存在加宽段,则在过渡段的左侧,以及倒角的右侧查找过渡段宽度;
获取腹板倒角的宽度和长度:
如果左侧主体区域内存在A×B的模式的文本,并且在主体区域内部,则是标注倒角宽度的信息,A为过渡段倒角的长度,B是过渡段倒角的宽度;
如果左侧主体区域内不存在A×B的模式的文本,并且确定了存在腹板倒角的长度;则寻找腹板倒角长度右侧的标注线,对于标注线中的文本,找到y轴位置重叠的文本作为文本a;根据文本a位置在左侧文本中找到与其同一x轴位置的文本b,文本b与文本a相减得到腹板倒角的宽度。
获取图纸区域的各种信息的方案如下:
1)针对等宽及曲线获取主体区域;
2)获取左右腹板和中腹板信息;
3)获取加宽段长度,过渡段长度,过渡段的宽度及过渡段倒角信息;
针对不同的图形及标注特征给出不同的解析方案,最终达到获取图形的各种信息的目的。
识别横截面图,得到梁的信息包括:
梁高、悬臂厚度及顶板底板厚度、梁竖向信息;放坡信息;梁横向信息;所述梁横向信息包括:梁宽、腹板、悬臂、箱室及其倒角;
识别横截面图,得到梁的信息的方法包括:
由于横截面标题多种多样,再前置处理中未必会找到对应的标题,需要再次查找标题,并匹配到对应的区域;
补充处理标题:
根据图片前置处理中的识别到的文本内容,保留下方有两条像素长度与文本像素长度相近的两条横线的文本,得到第一标题文本;
使用形态学变换获取横线,将横线按照长度相近垂直间距不超过10像素进行分组,划分出双横线并与文本进行匹配,保留匹配到双横线的文本;
由于部分第一标题文本无法正确识别,所以未匹配到文本的双横线会应用其坐标信息生成空白文本作为标题保留下来;
结合模型识别结果再次进行区域划分:
横截面通过模型识别确定主体区域及主体内部空腔区域的位置,后续处理均在此信息的基础上实现;模型识别的类型分为,beam_box箱梁横截面、quad_inner_box四边形箱室、hex_inner_box六边形箱室和oct_inner_box八边形箱室;
在模型识别结果中过滤掉与图片前置处理结果中的立剖面或板平面区域有重叠的部分;当水平方向存在横截面区域重叠的情况时,将保留左侧的横截面区域;
将模型识别到的箱室进行分组,以便后续划分给不同的横截面区域;分组的原则为,相邻箱室中心点水平方向的间距不大于箱室宽度的2倍并且中点垂直方向的间距不大于高度的1/2;
将第一标题文本划分给识别到的横截面区域,识别到的横截面区域如果出现重叠去掉面积小的区域,保留的区域与第一标题文本按照就近原则进行划分;
将每组箱室划分给横截面区域,划分的原则为,箱室矩形被横截面矩形包含或重叠区域面积在百分之八十以上;至此横截面区域已经划分好箱室和标题;
使用cv2.findContours找到图纸轮廓,按照就近原则将每个轮廓划分给横截面区域;至此横截面区域划分已经完成,每个横截面将包含识别到的主体区域、箱室、标题及标注信息;
识别每个横截面区域内的文本:
使用模型识别横截面区域内0度和90度方向的文本;
保留内容为C×D格式或数字和字母的文本;
将保留的文本按照方向划分为水平文本或竖直文本,将水平文本中位置与在第一标题文本在垂直方向位置在于定义范围内的文本划分为第二标题文本,用于再次校正标题;
校正标题,将所述第二标题文本按照从上到下从左到右进行排序,将最左上的文本作为标题;
获取横截面图的横向标注线、竖向标注线及梁主体结构特征线:
使用形态学变换获取横截面区域内的横线和竖线,过滤掉穿过文本的小于预定义长度的横线和竖线;
对横向或竖向文本及线进行划分:
横向文本分组,将所述横向文本的中心点位置按照垂直方向坐标在预定义范围内的分为一组;
将A%(A为浮点数)格式分组的文本作为放坡信息的文本,且对分组中的每个文本内容按照格式进行校正;
对每个横向文本分组进行横向标注线匹配处理,匹配原则为横线与当前分组中心点垂直方向坐标间距小于文本高度且距离最近,横线长度与文本分组所占像素在预定义范围内的划分为当前文本分组的标注横线;
除了匹配到文本的横线外,其余横线均作为非标注横线保留;至此需要的放坡及梁横向的信息的标注文本和非标注横线均已处理完成;
取大于最长文的标注横线的长度95%的一组横线,进行从上到下的排序,将最上面的一条横线作为基准,重新调整梁主体区域的左右位置坐标;
对竖向文本进行匹配竖线操作,得到梁竖向文本信息及非标注竖线;
取标注竖线作为基准,重新调整梁主体区域的上下位置坐标;
获取梁主体的横线和竖线,其中包括梁上下边线、凹槽线、悬臂线、设计线、支座线、箱体的左右边线、横梁加宽线;
对标注横线和标注竖线进行分割处理,分割原则为水平方向每组文本的数量与标注横线被竖向线段分割后的线段数量一致的将保留,保留被梁主体的上下边线及其延长线进行分割的所有标注竖线;至此,所有梁的横向或竖向标注文本及标注线、构成梁主体特征的横竖线均已准备好;
获取梁的放坡信息:
根据放坡信息的文本相对于梁主体区域位置,放坡方式分为,两侧、左侧和右侧;对放坡坡度值按照实际特征再次进行校正得到最终的放坡信息,即放坡方式、左放坡坡度和右放坡坡度;
获取梁宽、设计线位置、左右悬臂长度、左右腹板投影宽度、左右横梁加宽宽度、左右腹板及中腹板、箱体宽度、边顶板或底板倒角和中顶板或底板倒角;
对标注文本以组为单位按照从上到下进行排序,每组文本又按照从左到右排序,对应的标注线随之变化;
以箱体的左右边界坐标为基准,将标注文本及标注线划分为左侧、右侧和中间三组;
处理左侧及右侧标注文本及其标注线,获取梁的左侧悬臂长度、右侧悬臂长度、左侧腹板投影宽度、右侧腹板投影宽度、左侧横梁加宽宽度和右侧横梁加宽宽度:
若存在左侧横梁加宽且加宽方式为悬臂内加宽,将左侧标注文本分组最后一个作为左侧横梁加宽宽度;当加宽为悬臂外加宽时,左侧标注文本分组第一个作为左侧横梁加宽宽度;
获取到了箱体的左右边线且斜率小于0.06,则左右两侧的标注文本均为悬臂长度信息,左侧悬臂长度为左侧文本组之和;
没有箱体左右边线或边线斜率大于等于0.06,则标注文本将会包含悬臂及腹板投影;左侧标注文本组最后一个文本所在的标注线段若与箱体左边线相交且不与梁主体左侧相交将判断为左侧腹板投影宽度,左侧标注文本组中的剩余文本和作为左侧悬臂长度;否则左侧的所有标注文本的和作为左侧悬臂长度;
处理中间标注文本及其标注线,获取到剩余的梁所有横向信息:
判断标注文本是否为支座或固结的信息;
如果标注线段与梁主体水平方向左右两侧均相交,则此标注文本为梁宽;
如果标注文本数量为2,且其对应的标注线段与梁左侧或右侧相交,将判断此组标注文本为设置线位置,设计线左侧的记录为设置线位置信息,右侧的记录为梁主体右侧信息;
当标注线段水平方向位置在箱体内或者在箱体外但在梁主体内,此标注文本分组将作为梁箱体的信息进行处理;
判断当前标注方式为是腹板与箱室间隔标注,还是腹板与箱室组合标注;如有标注内容判断为支座或固结,则将不进行处理;
根据模型识别到箱室区域,判断箱室区域内的标注线是否为箱室标注;当无法判断时,将结合所述标注方式判断当前标注为箱室标注还是腹板标注;
判断为腹板标注后,根据在箱室的相对位置判断为左右编腹板还是中腹板;
判断为箱室标注后,将当前标注文本作为一个箱室的宽度;根据箱室内的文本获取倒角信息,同理根据相对位置判断边倒角还是中倒角;其中倒角的形式包含两种,一种通过文本格式判断,另一种需要线查找三角形两条相交直角边的形状,再根据形状两侧的文本判断是否为倒角;
若未获取到腹板宽度信息,需要根据梁主体内部箱室间或箱室与箱体间的标注文本获取边腹板或中腹板宽度;
如果出现梁的部分信息无法获得,需要根据已经获得的信息及梁的特征补充或校正部分无法获得的信息;
若没有获取到设计线位置,将再次根据梁主体左右两侧长度大于梁主体高度的长竖线,再次获取梁的设计线位置信息;
至此获取到梁横向的所有信息;
获取梁高、悬臂端部及根部厚度、顶板及底板厚度和横梁加高:
对标注文本以组为单位按照从左到右进行排序,每组标注文本又按照从上到下排序,对应的标注线随之变化;
如果有凹槽线时,若标注线段与梁上边界和所述凹槽线都相交时,将不做操作处理;
标注线与梁上下边界都相交,且标注文本位于标注线垂直方向中间位置时,则所述标注文本判断为梁高;
箱体区域左右两侧的标注文本为悬臂厚度,x轴位置靠近梁主体左侧或右侧的标注文本为端部厚度,靠近箱体的标注文本为根部厚度;
x轴位置位于箱体内部,与梁主体上边线相交的标注文本为顶板厚度,下边线相交的标注文本为底板厚度;
与梁底边线相交,且在梁主体外的标注文本为横梁加高;
根据获取到的信息以及梁的特征,对以获取信息进行校正;
至此获取到梁横向和竖向的所有信息。
所有横截面信息对梁高、梁宽、标题进行校正,并补充端横梁信息:
若获得的横截面区域大于一个,将没有获取到梁宽或梁高的横截面信息补充为已获得此信息的横截面对应的信息;
根据梁标题信息的连续性对所有横截面的标题进行校正或补充;
根据标题名称是否为A-A、1-1、I-I其中一个判断是否为端横梁,若是端横梁则再根据悬臂厚度与其他非端横梁的横截面比较,判断类型为等厚加厚还是平行加厚。
获取图纸区域的各种信息的方案如下:
1)获取区域位置,匹配标题;
2)获取文本框的位置信息、以及内容信息;
3)获取横竖线的位置信息,并与文本进行匹配;
4)获取梁主体结构横竖线及一些辅助线;
5)结合横截面图的特点,根据以上信息,就可以确定图纸区域的各种信息了;
6)根据不同图形特征给出不同解析方案,对特殊图形做特殊或兼容处理,从而达到解析图形信息的目的。
在步骤S4,对梁的信息进行组合处理,得到完整且准确的现浇梁上部结构信息。
具体地,立剖面、板平面、横截面中获取到的梁信息会有重复的情况,以及一些信息需要结合其他截面信息进行判断,所以需要对信息进行组合处理,从而得到完整且准确的现浇梁上部结构信息。具体方法如下:
4.1根据图纸特征以现有图纸识别结果的准确率进行重复信息的取舍;比如腹板信息在横截面和板平面中都会获取,但是由于板平面中会存在标注粘连的情况,所有腹板信息以横截面中获取的为准;
4.2三种截面信息结合,相互进行校验或作为校正信息的参考依据;比如横截面中判断是否为端横梁时,可以根据立剖面中获取的横截面切割位置进行辅助判断,从而再次校正端横梁信息;
4.3经过取舍和校正,将三种截面信息进行组合,输出梁的上部结构信息。
在一些实施例中,所述方法还包括:
步骤S5、对包含现浇梁上部结构信息的图纸进行坐标还原;
所述坐标还原包括文本信息、截面区域位置和梁主体区域位置的还原。
具体地,由于在图片前置处理中会将图片先按照制定的规则进行缩放,以至于在此之后的处理均已缩放后的图片为基准进行的,所以需要进行坐标的还原。坐标的还原包括文本信息、截面区域位置、梁主体区域位置的还原。
综上,本发明提出的方案能够
1、在每张图片中准确定位出梁的截面区域以及每个截面中梁的主体区域;
2、准确快速的对不同截面区域进行识别,最终输出一组图片中所有梁截面的结构化信息用于建模;
3、除了结构化信息外,还可以输出识别结果的可视化图片作为参考,并且根据输出结果可以快速查看出梁的每个参数信息与图片中的哪些文本相关;
4、本文在整图中准确定位截面区域的算法并不仅限于在现浇梁或者梁中的使用,使用于其他具有标题以及轮廓线的图,比如预制箱梁、T型梁等;
5、本文中针对现浇梁中横截面、立剖面、板平面进行自动识别的算法也适用于预制箱梁、T型梁的识别,见图5对预制箱梁的识别,并不仅限于识别一种梁,有较强的适用性及可扩展性,不受图片局限性的影响并且对带有噪点的图片仍然适用。
6、本文中输出的结构化数据非常灵活清晰,可以适应多种形式的需求。
本发明第二方面公开了一种桥梁上部结构现浇梁识别系统。图2为根据本发明实施例的一种桥梁上部结构现浇梁识别系统的结构图;如图2所示,所述系统100包括:
第一处理模块101,被配置为,对图纸进行图片前置处理,得到只剩下图纸标题和图纸内容的二值图;
第二处理模块102,被配置为,对所述二值图进行图纸区域分割,分割后的二值图的图纸区域按照从上到下和从左到右的顺序排序,每个图纸区域中包含了图纸标题和图纸轮廓;
第三处理模块103,被配置为,对图纸区域分割后的二值图进行分类,并根据图形类别识别二值图,得到梁的信息;所述图形类别包括:立剖面图、板平面图和横截面图;
第四处理模块104,被配置为,对所述梁的信息进行组合处理,得到完整且准确的现浇梁上部结构信息。
根据本发明第二方面的系统,所述第一处理模块101具体被配置为,所述对图纸进行图片前置处理的方法包括:
识别图纸中的表格、识别表格外的文本、根据ContourLine找线、对图纸进行缩放、对图纸进行方向矫正、解析图纸标题和清理表格及页面边框。
具体地,
识别图片中的表格
由于图纸中,除了要识别的“立剖面图”、“板平面图”、“横截面图”外,还有不定数量的表格,这些表格对于图纸的分析和识别是非常重要的,不过表格内容识别并不是重点内容,不做详细描述。只是利用了页面中表格识别的位置信息,来帮助识别图纸中的目标图形。其中表格识别可以识别到以下内容:
表格的位置:表格的左上角坐标、右下角坐标;
表格的类型:普通表格、左侧标题栏、底部标题栏、右侧标题栏、右下角标题栏、右上角页头栏;
后续的识别过程中,会利用表格的位置信息来排除表格区域和表格标题、还可以根据表格找到图纸外边框并且排除外边框。因为识别图纸信息时,这些内容都是干扰项。
表格外文本识别
当排除表格、以及表格标题后,剩下的文本可能是图纸的标题,也可能是图纸的其他内容,所以需要对这些文本进行进一步的识别,以便确定图纸的标题;
ContourLine找线
在本发明场景中,由于图纸的线条都是水平或垂直的,所以用了一个更精确、速度更快、操作更方便的方法:
1)将图像转换为二值图;
2)将二值图进行形态学变化中的CLOSE和OPEN操作,CLOSE的目的是将线条连接起来,OPEN的目的是将线条断开,这样可以得到更精确的线条位置;
2.1)获取横线图
先进行CLOSE操作,然后进行OPEN操作,CLOSE的核大小为(2,1),OPEN的核大小为(20,1);
2.2)获取竖线图
先进行CLOSE操作,然后进行OPEN操作,CLOSE的核大小为(1,2),OPEN的核大小为(1,20);
3)查找轮廓线
使用cv2.findContours找到横、竖线图中的线条轮廓,并且使用CntLine类封装成对象,方便后续的操作;
CntLine包含多个属性,根据contour的外接矩形获得线条的位置;根据宽高比判定是否为横线;根据外接矩形的宽高计算得到线的长度和宽度;通过计算垂线方向的投影得到投影值的最大值作为线条的实际宽度;线条镂空部分的长度,用于后续判定有镂空部分的单根横线轮廓是否可能为双横线;CntLine的这些属性在后续的方案处理中均会被使用。
图片标准化处理
使用图像处理技术及文本识别结果对图片进行缩放并得到二值图操作和矫正图片方向(0度、90度、180度、270度)以及旋转矫正,具体方案见以下步骤:
1)对图纸进行缩放,缩放的目的是为了使图纸的尺寸在一定范围内,避免了超大图纸对解析性能带来的负面影响;缩放规则为短边长度大于1500的图片,按比例缩放到短边长度为1500;缩放后,对图片进行二值化处理得到只有黑白两种像素值的图像,以便后续识别时能够更好地分离文字和图形、以及横竖线条的识别等。
2)对图纸进行方向矫正,因为图纸的方向可能是任意的,为了方便后续的分析和识别,需要将图纸矫正为水平方向。
通常图纸的标准宽高比为`1:1.414`,但是由于扫描图的尺寸不一,也会有超长图纸、非常规比例图纸出现,所以无法完全按照图片宽高比来确定方向。
具体步骤如下:
2.1)将图片分割为多个正方形区域,每个区域的边长为500像素左右,这样的大小能够确保区域内包含足够的文本信息、又能保证识别速度;
2.2)对分割后的小图片进行排序,将最可能包含更多文本的图片排在前面;具体排序规则是将图片中的线条去掉(使用OpenCV中的形态学处理的相关方法),去掉线条后剩下的大多就是构成文本的像素,按照小图片像素数量进行排序;
2.3)按顺序对小图片进行文本识别,如果识别到的文本的长度、数量、内容等能足够代表图片的实际方向,那么就采用该小图片的方向作为图纸的方向,否则继续识别下一张图片,直到识别到合适的图片为止;其中方向判断规则为0度、90度、180度、270度四个方向都对文本进行识别,哪个方向的文本识别结果最好,就采用哪个方向;在判断识别内容是否足够代表图片实际方向时,我们使用的规则为单行文本中对方向判断有歧义的字符("#@$%*01698bqwmxsSI")的占比不能大于0.5;如果是英文字符串那么置信度大于0.9并且文本长度大于3的才参与判定;如果包含中文则置信度大于0.5且字符数量大于1才参与判定;小图片中必须包含一个以上的中文字符;
3)对已经矫正好方向的图纸进行细微的角度调整。扫描图片很难保证完全水平,需要对图纸进行微调,使其完全水平。这里使用了霍夫变换来进行角度调整,使用霍夫变换的原因是因为它能够快速准确地找到图像中的直线,从而得到图像的角度。
1.5解析图纸标题
通过文本识别后,已经得到了表格外文本信息,包括文本框的坐标信息、文本框内容等。而图纸标题的特点是标题文本下方有两条横线,根据此特征可以找到图纸的标题。
但文本识别的结果并不是百分之百准确的,有些标题文本框会与比例尺、或副标题连成一行;标题下方的双横线也可能由于图像清晰度问题,或者图纸中的其他线条、文本干扰,导致识别不准确。
结合上述问题,找到图纸标题的具体步骤如下:
1)拆分文本框中的比例尺信息,如果存在比例尺信息,那么将文本框拆分为两个文本框,一个文本框包含比例尺信息,另一个文本框包含标题信息;
2)拆分文本框中的括号,通常括号内的文本为副标题,而副标题下方如果有双横线则不用拆分,如果没有双横线则需要拆分,拆分括号的目的是为了让图纸标题下方的双横线与标题文本框的两端对称,以便后续判定是否为标题;
3)然后遍历所有文本框,并判定文本框下方是否有双横线;判定双横线的方法是:根据文本框矩形的位置,向下移动一定距离(0.8倍文本框高度),左右再扩充一定距离(左右各扩充文本框高度的3倍),如果在此区域内存在两条横线,则认为文本框是图纸标题;
4)在判定一个矩形区域内是否有两条横线时,采用了CntLine的方式,该方式可以找到二值图中的横、竖线,将这些线条封装成对象(CntLine类的实例),可以灵活的判定直线的状态,包括直线的位置、长度、线宽等;在此处只需要判定是否存在两条横线、以及两条横线的位置是否在文本框的下方,线条左右两端是否与文本框的左右两端对称即可;
5)当判定为标题后,将标题周围的文本内容归属为标题的一部分,例如比例尺、副标题等;比例尺使用正则表达式提取(r'^\d+(\.\d+)?[:/]\d+(\.\d+)?$'),副标题通常是带有括号的文本、或者是与标题连成一行的文本、在双横线正下方的文本;根据这些特征将正标题周围的文本归属为副标题;
清理表格、页面边框等
清理表格、页面边框、以及多余的一些文本框是为了在后续的图纸分析和识别过程中,这些内容不会对结果产生影响,反而会增加计算量和干扰,所以需要将这些内容清理掉。最终得到一个只剩下图纸标题、图纸中梁的截面内容的二值图。
1)清理表格:根据1.1中识别到的表格信息,在二值图中将表格区域的像素值置为0;
2)清理边框:在识别表格的模块中,返回了页面边框信息的,可以根据页面的边框信息,将边框区域的像素、以及边框外的像素都值置为0从而清理图片中的边框;
3)清理多余文本:已经识别到的文本框中,有些文本时明确不需要的,例如:表格标题、备注信息(通常以“注:”、“附注:”、“注”作为起始行)的文本。
根据本发明第二方面的系统,所述第二处理模块102具体被配置为,所述对所述二值图进行图纸区域分割的方法包括:
对所述二值图依次进行图纸中的拆分辅助线、清除二值图中的文本信息、为图纸标题分配主体区域、确定主体区域内的子区域、合并图纸标题、将没有对应的图纸标题的轮廓分配到对应的图纸区域中和重新分配中文文本区域。
为了解决这些问题经过了以下步骤对图纸进行区域分割:
1)拆分辅助线
这里辅助线的作用是为了对齐两个独立图纸单元的横轴位置,通常是长竖线,例如:立面图和平面图在同一页面时的对齐辅助线。拆分辅助线的规则如下:
CntLine找到所有的竖线轮廓,过滤出长度大于图纸高度一半的竖线,这些竖线作为辅助线的备选线;
图纸轮廓中包含图纸标题的区域,并且这些区域中的标题位于图纸轮廓的内部,因为这样的区域才可能是被辅助线连接在一起的区域;
将区域中的长竖线,从标题所在位置进行切割,从而得到多个轮廓;
2)清除二值图中的文本信息
将二值图中的所有中文文本信息(包括标题,即使标题不是中文的)进行清除,这样做的目的是因为不同的图形轮廓间可能会有一些公用文本信息,例如:横向排列的多个横断面图的中间可能会有一个“现浇梁中横隔板”的文本,相邻的两个图纸轮廓共用这一个标注信息,导致对分割轮廓产生干扰;
3)为标题分配主体区域
将前置处理中解析好的图纸标题,按照从上到下从左到右的顺序排列;并使用cv2.findContours找到页面中的图纸轮廓,根据轮廓的位置,将一个个分散在页面中的图纸轮廓按照从下到上的次序,分配给图纸标题;分配规则如下:
首先,得到图纸标题正下方的矩形区域,这个区域不能与其他标题交叠;
然后,找到所有与整个区域交叠的轮廓,如果交叠部分大于区域宽度的一半,则认为这个轮廓是这个区域的主轮廓;
先确定主要的图纸轮廓归属,然后再将其他的轮廓分配给主轮廓;这样做是为了使主轮廓不会被其他标题共享,而其他图纸轮廓可以拥有更复杂的逻辑判定其归属;
4)确定主体区域内的子区域
确定好各个图纸标题所属的主轮廓后,每个图纸标题都会有一个新的附属图纸区域,这个区域的宽度通常大于图纸标题宽度,主体区域的中心点位于图纸标题下方;然后,将其他与主体区域相交的图纸轮廓,都分配到这个主体区域中;
5)合并标题
需要合并的标题分为两种情况,板平面图合并在一起显示;左半平面、右半平面合并在一起显示;
在出现以上两种情况分配主体区域时,只有其中一个标题会被分配到区域,而另外一个标题是不会有对应的图形区域的;另外合并标题时,只需要将没有图形区域的标题,合并到对应有图形区域的标题上即可;
6)分配剩余区域
在确定好各个图纸标题对应的主图纸区域后,剩余的图纸轮廓都是没有对应的图纸标题的,这些轮廓需要分配到对应的图纸区域中;使用就近的分配原则,即:将轮廓分配到距离最近的图纸区域中;
7)重新分配中文文本区域
由于中文文本区域可能属于多个图纸信息项,需要根据文本内容与图纸区域的距离,按照最邻近规则进行重新分配。这里的分配允许部分文本属于多个邻近区域的。
根据本发明第二方面的系统,所述第三处理模块103具体被配置为,不同的图纸区域,可以根据标题的命名规则结合模型识别,使用不同的解析逻辑对图纸进行解析。规则如下:
1)立剖面图:可能的标题包括“立面”、“中梁D-D半立面”、“第1跨立剖面”等等,标题中只要包含“立”字,就可以认为是立剖面图;
2)板平面图:可能的标题包括“第2跨顶平面”、“第1跨1/2底平面”、“板顶板平面”等等,标题中只要包含“平”字,就可以认为是板平面图;
3)示意图:可能的标题包括“箱梁剖面示意图”等,标题中只要包含“示意”两字,就可以认为是示意图;
4)大样图:可能的标题包括“大样图”、“1大样”、“A大样”等,标题中只要包含“大样”两字,就可以认为是大样图;
5)横截面图:横截面图的命名规则比较复杂,但是已经确定了以上命名,将除了以上4中外的划分为横截面图。
目前,只实现了立剖面图、板平面图、横截面图的识别,其他类型的图纸暂时不做识别。
识别立剖面图,得到梁的信息包括:
梁长和梁高;顶板高度和底板高度;上侧边倒角高度和下侧边倒角高度;箱室内侧四个倒角宽高;梁体内部长度信息;隔板倒角宽高;伸缩缝槽口信息;
识别立剖面图,得到梁的信息的方法包括:
先确定梁长和梁高,即确定梁的主体区域:
梁长:一个内容为数字的文本框,其下方有一根超过图形区域一半以上的横线,并且所述横线位于图形区域最上方;
梁高:在梁长横线的两端外侧,存在一个旋转90度的文本框;所述文本框中的内容为数字,其右侧有第一竖线,所述第一竖线的高度就是梁高;
根据梁长和梁高,确定梁的主体区域;
确定是否有隔板:
隔板位于梁长正中心位置,确定是否有隔板的办法是:判定在梁矩形中心位置,是否存在两根以上的第二竖线,并且所述第二竖线的特点是,第二竖线在梁的上下范围内,且第二竖线的长度超过梁的高度的一半以上;
获取隔板倒角和箱室内侧倒角的宽高信息、以及伸缩缝槽口信息:
隔板倒角:位于梁矩形中心位置,其文本方向为横向,文本内容为宽x高的模式,并且下方有一个第一横线,文本框矩形距离中心位置的距离不超过梁高,根据这些特征就能确定是隔板倒角的宽高信息;
箱室内侧倒角:排除隔板倒角,梁的主体区域内的其他倒角即为箱室内侧倒角的宽高信息;
伸缩缝槽口:其内容也是宽x高的模式,只不过其位置位于梁的两端顶部;
获取顶板高度、底板高度、上侧边倒角高度和下侧边倒角高度:
高度信息的文本框为90度,并且文本右侧有一根第三竖线;
如果所述第三竖线对应两个数字文本框,则外层的为顶高度和底板高度,内层的为上侧边倒角高度和下侧边倒角高度;
梁体内部长度信息:
确定梁体内箱室的左右两端位置,即箱室的左右两个第四竖线,这两个第四竖线的特点是,第四竖线的长度超过梁高的一半以上,并且第四竖线的上方距离梁顶部的距离不超过梁高的1/4,从梁的两侧开始遍历竖线,遇到符合条件的竖线即为箱室的左右两端位置;
确定“过渡段”的位置,过渡段的特点是:在梁体内有一根第五竖线,所述第五竖线与梁底部竖线相交,如果第五竖线将底部横线分割为两段,那么其中一侧线的斜率大,而另外一侧则是纯水平线,那么这个位置就是过渡段的拐点;
根据所述梁体内箱室的左右两端位置和“过渡段”的位置,确定梁体内部长度信息。
识别板平面图,得到梁的信息包括:
左右腹板宽度;加宽段长度、过渡段长度和过渡段宽度;过渡段倒角的宽度和长度;
识别板平面图,得到梁的信息的方法包括:
找到区域内的文本,将所述文本与ContourLine找线中的CntLine的结构信息相结合查找主体区域,具体实现方案如下:
针对等宽矩形,通过长横线和文字通过OCR检测得到的文本位置和直线位置的信息,横向文本和横线竖线生成横向标注线,纵向文本和纵向文字生成纵向标注线;横向标注线出现做到的左侧点作为主体区域的左侧位置,同理生成右侧和上侧和下侧位置;
针对曲线,存在CntLine的结构,根据exact_thickness和thickness的对比,得到标注线是否是曲线,如果是曲线作为横向标注线,左右分别处理;不管是否是曲线,纵向标注线都是直线;
寻找左右侧的腹板宽度,如果存在多箱室的情况,寻找中腹板宽度,具体实现方案如下:
基于主体区域寻找在主体区域中间1/3区域的第六竖线;由于左右腹板宽度的标注方式是在其中找到从上到下的标注线,标注线可能会从头到尾,也可能是一段一段的标注;根据水平x轴位置进行第六竖线分组;对于每组将所述文本进行匹配,选取文本最多的分组作为隔板标注;
由于纵向和全量的文本识别有可能会有一些精确度的问题;此时通过找到区域以后进行切割,切割出来的子图,进行文本识别。由于已经旋转,将分组中的线进行旋转得到对应横线。将其中的所有文本基于横向排序,分为左侧文本和右侧;由于腹板宽度在右侧的范围是在75cm以内,所以根据全图的度量信息,右侧腹板宽度通过从左往右找到对应宽度,左侧腹板宽度通过从右往左找到对应宽度;
文本的长度超过6个字符的时候一定是标注了多层,所以此时会查找中腹板宽;首先根据水平x轴位置进行第六竖线分组;对于每组将所述文本进行匹配;去掉在找到的左腹板宽和右腹板宽分组的文本,取出最中间的文本组合,得到中腹板宽;
获取加宽段长度、过渡段长度和过渡段的宽度:
找到的主体区域,找到其外部的标注线;取横向文本标注线最多的作为详细标注;找到的主体外部标注线,通过与标注线相交的第七竖线确定标注线的区域;此时以找到的腹板的标注线的左侧的区域为候选文本,并且以腹板标注区域为分隔线,将标注线的区域分隔成左右两侧,左侧成为左侧文本,右侧成为右侧文本;并且以此分隔线为基准,将主体区域划分为左右两侧;
如果所述左侧文本出现小于100的数值,则所存在倒角信息,所述数值为腹板倒角长度;如果倒角信息文本的右侧出现2个文本;则所述2个文本是加宽段长度以及过渡段长度;如果倒角信息文本的右侧只有1个文本,说明没有加宽段,只存在过渡段,所述1个文本为过渡段长度;
如果所述左侧文本没有小于100的数值,则说明不存在倒角信息;所述左侧文本中出现超过3个文本,则从右到左为过渡段,加宽段,否则不存在加宽段,只有过渡段,最右侧为过渡段;
如果存在加宽段,加宽段宽度在所述左侧文本的左右竖线区域范围内的主体区域查找;如果不存在加宽段,则在过渡段的左侧,以及倒角的右侧查找过渡段宽度;
获取腹板倒角的宽度和长度:
如果左侧主体区域内存在A×B的模式的文本,并且在主体区域内部,则是标注倒角宽度的信息,A为过渡段倒角的长度,B是过渡段倒角的宽度;
如果左侧主体区域内不存在A×B的模式的文本,并且确定了存在腹板倒角的长度;则寻找腹板倒角长度右侧的标注线,对于标注线中的文本,找到y轴位置重叠的文本作为文本a;根据文本a位置在左侧文本中找到与其同一x轴位置的文本b,文本b与文本a相减得到腹板倒角的宽度。
针对不同的图形及标注特征给出不同的解析方案,最终达到获取图形的各种信息的目的。
识别横截面图,得到梁的信息包括:
梁高、悬臂厚度及顶板底板厚度、梁竖向信息;放坡信息;梁横向信息;所述梁横向信息包括:梁宽、腹板、悬臂、箱室及其倒角;
识别横截面图,得到梁的信息的方法包括:
由于横截面标题多种多样,再前置处理中未必会找到对应的标题,需要再次查找标题,并匹配到对应的区域;
补充处理标题:
根据图片前置处理中的识别到的文本内容,保留下方有两条像素长度与文本像素长度相近的两条横线的文本,得到第一标题文本;
使用形态学变换获取横线,将横线按照长度相近垂直间距不超过10像素进行分组,划分出双横线并与文本进行匹配,保留匹配到双横线的文本;
由于部分第一标题文本无法正确识别,所以未匹配到文本的双横线会应用其坐标信息生成空白文本作为标题保留下来;
结合模型识别结果再次进行区域划分:
横截面通过模型识别确定主体区域及主体内部空腔区域的位置,后续处理均在此信息的基础上实现;模型识别的类型分为,beam_box箱梁横截面、quad_inner_box四边形箱室、hex_inner_box六边形箱室和oct_inner_box八边形箱室;
在模型识别结果中过滤掉与图片前置处理结果中的立剖面或板平面区域有重叠的部分;当水平方向存在横截面区域重叠的情况时,将保留左侧的横截面区域;
将模型识别到的箱室进行分组,以便后续划分给不同的横截面区域;分组的原则为,相邻箱室中心点水平方向的间距不大于箱室宽度的2倍并且中点垂直方向的间距不大于高度的1/2;
将第一标题文本划分给识别到的横截面区域,识别到的横截面区域如果出现重叠去掉面积小的区域,保留的区域与第一标题文本按照就近原则进行划分;
将每组箱室划分给横截面区域,划分的原则为,箱室矩形被横截面矩形包含或重叠区域面积在百分之八十以上;至此横截面区域已经划分好箱室和标题;
使用cv2.findContours找到图纸轮廓,按照就近原则将每个轮廓划分给横截面区域;至此横截面区域划分已经完成,每个横截面将包含识别到的主体区域、箱室、标题及标注信息;
识别每个横截面区域内的文本:
使用模型识别横截面区域内0度和90度方向的文本;
保留内容为C×D格式或数字和字母的文本;
将保留的文本按照方向划分为水平文本或竖直文本,将水平文本中位置与在第一标题文本在垂直方向位置在于定义范围内的文本划分为第二标题文本,用于再次校正标题;
校正标题,将所述第二标题文本按照从上到下从左到右进行排序,将最左上的文本作为标题;
获取横截面图的横向标注线、竖向标注线及梁主体结构特征线:
使用形态学变换获取横截面区域内的横线和竖线,过滤掉穿过文本的小于预定义长度的横线和竖线;
对横向或竖向文本及线进行划分:
横向文本分组,将所述横向文本的中心点位置按照垂直方向坐标在预定义范围内的分为一组;
将A%(A为浮点数)格式分组的文本作为放坡信息的文本,且对分组中的每个文本内容按照格式进行校正;
对每个横向文本分组进行横向标注线匹配处理,匹配原则为横线与当前分组中心点垂直方向坐标间距小于文本高度且距离最近,横线长度与文本分组所占像素在预定义范围内的划分为当前文本分组的标注横线;
除了匹配到文本的横线外,其余横线均作为非标注横线保留;至此需要的放坡及梁横向的信息的标注文本和非标注横线均已处理完成;
取大于最长文的标注横线的长度95%的一组横线,进行从上到下的排序,将最上面的一条横线作为基准,重新调整梁主体区域的左右位置坐标;
对竖向文本进行匹配竖线操作,得到梁竖向文本信息及非标注竖线;
取标注竖线作为基准,重新调整梁主体区域的上下位置坐标;
获取梁主体的横线和竖线,其中包括梁上下边线、凹槽线、悬臂线、设计线、支座线、箱体的左右边线、横梁加宽线;
对标注横线和标注竖线进行分割处理,分割原则为水平方向每组文本的数量与标注横线被竖向线段分割后的线段数量一致的将保留,保留被梁主体的上下边线及其延长线进行分割的所有标注竖线;至此,所有梁的横向或竖向标注文本及标注线、构成梁主体特征的横竖线均已准备好;
获取梁的放坡信息:
根据放坡信息的文本相对于梁主体区域位置,放坡方式分为,两侧、左侧和右侧;对放坡坡度值按照实际特征再次进行校正得到最终的放坡信息,即放坡方式、左放坡坡度和右放坡坡度;
获取梁宽、设计线位置、左右悬臂长度、左右腹板投影宽度、左右横梁加宽宽度、左右腹板及中腹板、箱体宽度、边顶板或底板倒角和中顶板或底板倒角;
对标注文本以组为单位按照从上到下进行排序,每组文本又按照从左到右排序,对应的标注线随之变化;
以箱体的左右边界坐标为基准,将标注文本及标注线划分为左侧、右侧和中间三组;
处理左侧及右侧标注文本及其标注线,获取梁的左侧悬臂长度、右侧悬臂长度、左侧腹板投影宽度、右侧腹板投影宽度、左侧横梁加宽宽度和右侧横梁加宽宽度:
若存在左侧横梁加宽且加宽方式为悬臂内加宽,将左侧标注文本分组最后一个作为左侧横梁加宽宽度;当加宽为悬臂外加宽时,左侧标注文本分组第一个作为左侧横梁加宽宽度;
获取到了箱体的左右边线且斜率小于0.06,则左右两侧的标注文本均为悬臂长度信息,左侧悬臂长度为左侧文本组之和;
没有箱体左右边线或边线斜率大于等于0.06,则标注文本将会包含悬臂及腹板投影;左侧标注文本组最后一个文本所在的标注线段若与箱体左边线相交且不与梁主体左侧相交将判断为左侧腹板投影宽度,左侧标注文本组中的剩余文本和作为左侧悬臂长度;否则左侧的所有标注文本的和作为左侧悬臂长度;
处理中间标注文本及其标注线,获取到剩余的梁所有横向信息:
判断标注文本是否为支座或固结的信息;
如果标注线段与梁主体水平方向左右两侧均相交,则此标注文本为梁宽;
如果标注文本数量为2,且其对应的标注线段与梁左侧或右侧相交,将判断此组标注文本为设置线位置,设计线左侧的记录为设置线位置信息,右侧的记录为梁主体右侧信息;
当标注线段水平方向位置在箱体内或者在箱体外但在梁主体内,此标注文本分组将作为梁箱体的信息进行处理;
判断当前标注方式为是腹板与箱室间隔标注,还是腹板与箱室组合标注;如有标注内容判断为支座或固结,则将不进行处理;
根据模型识别到箱室区域,判断箱室区域内的标注线是否为箱室标注;当无法判断时,将结合所述标注方式判断当前标注为箱室标注还是腹板标注;
判断为腹板标注后,根据在箱室的相对位置判断为左右编腹板还是中腹板;
判断为箱室标注后,将当前标注文本作为一个箱室的宽度;根据箱室内的文本获取倒角信息,同理根据相对位置判断边倒角还是中倒角;其中倒角的形式包含两种,一种通过文本格式判断,另一种需要线查找三角形两条相交直角边的形状,再根据形状两侧的文本判断是否为倒角;
若未获取到腹板宽度信息,需要根据梁主体内部箱室间或箱室与箱体间的标注文本获取边腹板或中腹板宽度;
如果出现梁的部分信息无法获得,需要根据已经获得的信息及梁的特征补充或校正部分无法获得的信息;
若没有获取到设计线位置,将再次根据梁主体左右两侧长度大于梁主体高度的长竖线,再次获取梁的设计线位置信息;
至此获取到梁横向的所有信息;
获取梁高、悬臂端部及根部厚度、顶板及底板厚度和横梁加高:
对标注文本以组为单位按照从左到右进行排序,每组标注文本又按照从上到下排序,对应的标注线随之变化;如果有凹槽线时,若标注线段与梁上边界和所述凹槽线都相交时,将不做操作处理;
标注线与梁上下边界都相交,且标注文本位于标注线垂直方向中间位置时,则所述标注文本判断为梁高;
箱体区域左右两侧的标注文本为悬臂厚度,x轴位置靠近梁主体左侧或右侧的标注文本为端部厚度,靠近箱体的标注文本为根部厚度;
x轴位置位于箱体内部,与梁主体上边线相交的标注文本为顶板厚度,下边线相交的标注文本为底板厚度;
与梁底边线相交,且在梁主体外的标注文本为横梁加高;
根据获取到的信息以及梁的特征,对以获取信息进行校正;
至此获取到梁横向和竖向的所有信息。
所有横截面信息对梁高、梁宽、标题进行校正,并补充端横梁信息:
若获得的横截面区域大于一个,将没有获取到梁宽或梁高的横截面信息补充为已获得此信息的横截面对应的信息;
根据梁标题信息的连续性对所有横截面的标题进行校正或补充;
根据标题名称是否为A-A、1-1、I-I其中一个判断是否为端横梁,若是端横梁则再根据悬臂厚度与其他非端横梁的横截面比较,判断类型为等厚加厚还是平行加厚。
根据本发明第二方面的系统,所述第四处理模块104具体被配置为,立剖面、板平面、横截面中获取到的梁信息会有重复的情况,以及一些信息需要结合其他截面信息进行判断,所以需要对信息进行组合处理,从而得到完整且准确的现浇梁上部结构信息。
根据本发明第二方面的系统,所述第五处理模块105具体被配置为,由于在图片前置处理中会将图片先按照制定的规则进行缩放,以至于在此之后的处理均已缩放后的图片为基准进行的,所以需要进行坐标的还原。坐标的还原包括文本信息、截面区域位置、梁主体区域位置的还原。
本发明第三方面公开了一种电子设备。电子设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时,实现本发明公开第一方面中任一项的一种桥梁上部结构现浇梁识别方法中的步骤。
图3为根据本发明实施例的一种电子设备的结构图,如图3所示,电子设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。
本发明第四方面公开了一种计算机可读存储介质。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,实现本发明公开第一方面中任一项的一种桥梁上部结构现浇梁识别方法中的步骤中的步骤。
Claims (10)
1.一种桥梁上部结构现浇梁识别方法,其特征在于,所述方法包括:
步骤S1、对图纸进行图片前置处理,得到只剩下图纸标题和图纸内容的二值图;
步骤S2、对所述二值图进行图纸区域分割,分割后的二值图的图纸区域按照从上到下和从左到右的顺序排序,每个图纸区域中包含了图纸标题和图纸轮廓;
步骤S3、对图纸区域分割后的二值图进行分类,并根据图形类别识别二值图,得到梁的信息;所述图形类别包括:立剖面图、板平面图和横截面图;
步骤S4、对所述梁的信息进行组合处理,得到完整且准确的现浇梁上部结构信息。
2.根据权利要求1所述的一种桥梁上部结构现浇梁识别方法,其特征在于,在所述步骤S1中,所述对图纸进行图片前置处理的方法包括:
识别图纸中的表格、识别表格外的文本、根据ContourLine找线、对图纸进行缩放、对图纸进行方向矫正、解析图纸标题和清理表格及页面边框。
3.根据权利要求1所述的一种桥梁上部结构现浇梁识别方法,其特征在于,在所述步骤S2中,所述对所述二值图进行图纸区域分割的方法包括:
对所述二值图依次进行图纸中的拆分辅助线、清除二值图中的文本信息、为图纸标题分配主体区域、确定主体区域内的子区域、合并图纸标题、将没有对应的图纸标题的轮廓分配到对应的图纸区域中和重新分配中文文本区域。
4.根据权利要求1所述的一种桥梁上部结构现浇梁识别方法,其特征在于,在所述步骤S3中,识别立剖面图,得到梁的信息包括:
梁长和梁高;顶板高度和底板高度;上侧边倒角高度和下侧边倒角高度;箱室内侧四个倒角宽高;梁体内部长度信息;隔板倒角宽高;伸缩缝槽口信息;
识别立剖面图,得到梁的信息的方法包括:
先确定梁长和梁高,即确定梁的主体区域:
梁长:一个内容为数字的文本框,其下方有一根超过图形区域一半以上的横线,并且所述横线位于图形区域最上方;
梁高:在梁长横线的两端外侧,存在一个旋转90度的文本框;所述文本框中的内容为数字,其右侧有第一竖线,所述第一竖线的高度就是梁高;
根据梁长和梁高,确定梁的主体区域;
确定是否有隔板:
隔板位于梁长正中心位置,确定是否有隔板的办法是:判定在梁矩形中心位置,是否存在两根以上的第二竖线,并且所述第二竖线的特点是,第二竖线在梁的上下范围内,且第二竖线的长度超过梁的高度的一半以上;
获取隔板倒角和箱室内侧倒角的宽高信息、以及伸缩缝槽口信息:
隔板倒角:位于梁矩形中心位置,其文本方向为横向,文本内容为宽x高的模式,并且下方有一个第一横线,文本框矩形距离中心位置的距离不超过梁高,根据这些特征就能确定是隔板倒角的宽高信息;
箱室内侧倒角:排除隔板倒角,梁的主体区域内的其他倒角即为箱室内侧倒角的宽高信息;
伸缩缝槽口:其内容也是宽x高的模式,只不过其位置位于梁的两端顶部;
获取顶板高度、底板高度、上侧边倒角高度和下侧边倒角高度:
高度信息的文本框为90度,并且文本右侧有一根第三竖线;
如果所述第三竖线对应两个数字文本框,则外层的为顶高度和底板高度,内层的为上侧边倒角高度和下侧边倒角高度;
梁体内部长度信息:
确定梁体内箱室的左右两端位置,即箱室的左右两个第四竖线,这两个第四竖线的特点是,第四竖线的长度超过梁高的一半以上,并且第四竖线的上方距离梁顶部的距离不超过梁高的1/4,从梁的两侧开始遍历竖线,遇到符合条件的竖线即为箱室的左右两端位置;
确定“过渡段”的位置,过渡段的特点是:在梁体内有一根第五竖线,所述第五竖线与梁底部竖线相交,如果第五竖线将底部横线分割为两段,那么其中一侧线的斜率大,而另外一侧则是纯水平线,那么这个位置就是过渡段的拐点;
根据所述梁体内箱室的左右两端位置和“过渡段”的位置,确定梁体内部长度信息。
5.根据权利要求2所述的一种桥梁上部结构现浇梁识别方法,其特征在于,在所述步骤S3中,识别板平面图,得到梁的信息包括:
左右腹板宽度;加宽段长度、过渡段长度和过渡段宽度;过渡段倒角的宽度和长度;
识别板平面图,得到梁的信息的方法包括:
找到区域内的文本,将所述文本与ContourLine找线中的CntLine的结构信息相结合查找主体区域,具体实现方案如下:
针对等宽矩形,通过长横线和文字通过OCR检测得到的文本位置和直线位置的信息,横向文本和横线竖线生成横向标注线,纵向文本和纵向文字生成纵向标注线;横向标注线出现做到的左侧点作为主体区域的左侧位置,同理生成右侧和上侧和下侧位置;
针对曲线,存在CntLine的结构,根据exact_thickness和thickness的对比,得到标注线是否是曲线,如果是曲线作为横向标注线,左右分别处理;不管是否是曲线,纵向标注线都是直线;
寻找左右侧的腹板宽度,如果存在多箱室的情况,寻找中腹板宽度,具体实现方案如下:
基于主体区域寻找在主体区域中间1/3区域的第六竖线;由于左右腹板宽度的标注方式是在其中找到从上到下的标注线,标注线可能会从头到尾,也可能是一段一段的标注;根据水平x轴位置进行第六竖线分组;对于每组将所述文本进行匹配,选取文本最多的分组作为隔板标注;
由于腹板宽度在右侧的范围是在75cm以内,所以根据全图的度量信息,右侧腹板宽度通过从左往右找到对应宽度,左侧腹板宽度通过从右往左找到对应宽度;
文本的长度超过6个字符的时候一定是标注了多层,所以此时会查找中腹板宽;首先根据水平x轴位置进行第六竖线分组;对于每组将所述文本进行匹配;去掉在找到的左腹板宽和右腹板宽分组的文本,取出最中间的文本组合,得到中腹板宽;
获取加宽段长度、过渡段长度和过渡段的宽度:
找到的主体区域,找到其外部的标注线;取横向文本最多的标注线作为详细标注;找到的主体外部标注线,通过与标注线相交的第七竖线确定标注线的区域;此时以找到的腹板的标注线的左侧的区域为候选文本,并且以腹板标注区域为分隔线,将标注线的区域分隔成左右两侧,左侧成为左侧文本,右侧成为右侧文本;并且以此分隔线为基准,将主体区域划分为左右两侧;
如果所述左侧文本中出现小于100的数值,则存在倒角信息,所述数值为腹板倒角长度;如果倒角信息文本的右侧出现2个文本,则所述2个文本是加宽段长度以及过渡段长度;如果倒角信息文本的右侧只有1个文本,说明没有加宽段,只存在过渡段,所述1个文本为过渡段长度;
如果所述左侧文本没有小于100的数值,则说明不存在倒角信息;所述左侧文本中出现超过3个文本,则从右到左为过渡段,加宽段,否则不存在加宽段,只有过渡段,最右侧为过渡段;
如果存在加宽段,加宽段宽度在所述左侧文本的左右竖线区域范围内的主体区域查找;如果不存在加宽段,则在过渡段的左侧,以及倒角的右侧查找过渡段宽度;
获取腹板倒角的宽度和长度:
如果左侧主体区域内存在A×B的模式的文本,并且在主体区域内部,则是标注倒角宽度的信息,A为过渡段倒角的长度,B是过渡段倒角的宽度;
如果左侧主体区域内不存在A×B的模式的文本,并且确定了存在腹板倒角的长度;则寻找腹板倒角长度右侧的标注线,对于标注线中的文本,找到y轴位置重叠的文本作为文本a;根据文本a位置在左侧文本中找到与其同一x轴位置的文本b,文本b与文本a相减得到腹板倒角的宽度。
6.根据权利要求1所述的一种桥梁上部结构现浇梁识别方法,其特征在于,在所述步骤S3中,识别横截面图,得到梁的信息包括:
梁高、悬臂厚度及顶板底板厚度、梁竖向信息;放坡信息;梁横向信息;所述梁横向信息包括:梁宽、腹板、悬臂、箱室及其倒角;
识别横截面图,得到梁的信息的方法包括:
补充处理标题:
根据图片前置处理中的识别到的文本内容,保留下方有两条像素长度与文本像素长度相近的两条横线的文本,得到第一标题文本;
使用形态学变换获取横线,将横线按照长度相近垂直间距不超过10像素进行分组,划分出双横线并与文本进行匹配,保留匹配到双横线的文本;
由于部分第一标题文本无法正确识别,所以未匹配到文本的双横线会应用其坐标信息生成空白文本作为标题保留下来;
结合模型识别结果再次进行区域划分:
横截面通过模型识别确定主体区域及主体内部空腔区域的位置,后续处理均在此信息的基础上实现;模型识别的类型分为,beam_box箱梁横截面、quad_inner_box四边形箱室、hex_inner_box六边形箱室和oct_inner_box八边形箱室;
在模型识别结果中过滤掉与图片前置处理结果中的立剖面或板平面区域有重叠的部分;当水平方向存在横截面区域重叠的情况时,将保留左侧的横截面区域;
将模型识别到的箱室进行分组,以便后续划分给不同的横截面区域;分组的原则为,相邻箱室中心点水平方向的间距不大于箱室宽度的2倍并且中点垂直方向的间距不大于高度的1/2;
将第一标题文本划分给识别到的横截面区域,识别到的横截面区域如果出现重叠去掉面积小的区域,保留的区域与第一标题文本按照就近原则进行划分;
将每组箱室划分给横截面区域,划分的原则为,箱室矩形被横截面矩形包含或重叠区域面积在百分之八十以上;至此横截面区域已经划分好箱室和标题;
使用cv2.findContours找到图纸轮廓,按照就近原则将每个轮廓划分给横截面区域;至此横截面区域划分已经完成,每个横截面将包含识别到的主体区域、箱室、标题及标注信息;
识别每个横截面区域内的文本:
使用模型识别横截面区域内0度和90度方向的文本;
保留内容为CxD格式或数字和字母的文本;
将保留的文本按照方向划分为水平文本或竖直文本,将水平文本中位置与在第一标题文本在垂直方向位置在于定义范围内的文本划分为第二标题文本,用于再次校正标题;
校正标题,将所述第二标题文本按照从上到下从左到右进行排序,将最左上的文本作为标题;
获取横截面图的横向标注线、竖向标注线及梁主体结构特征线:
使用形态学变换获取横截面区域内的横线和竖线,过滤掉穿过文本的小于预定义长度的横线和竖线;
对横向或竖向文本及线进行划分:
横向文本分组,将所述横向文本的中心点位置按照垂直方向坐标在预定义范围内的分为一组;
将A%(A为浮点数)格式分组的文本作为放坡信息的文本,且对分组中的每个文本内容按照格式进行校正;
对每个横向文本分组进行横向标注线匹配处理,匹配原则为横线与当前分组中心点垂直方向坐标间距小于文本高度且距离最近,横线长度与文本分组所占像素在预定义范围内的划分为当前文本分组的标注横线;
除了匹配到文本的横线外,其余横线均作为非标注横线保留;至此需要的放坡及梁横向的信息的标注文本和非标注横线均已处理完成;
取大于最长文的标注横线的长度95%的一组横线,进行从上到下的排序,将最上面的一条横线作为基准,重新调整梁主体区域的左右位置坐标;
对竖向文本进行匹配竖线操作,得到梁竖向文本信息及非标注竖线;
取标注竖线作为基准,重新调整梁主体区域的上下位置坐标;
获取梁主体的横线和竖线,其中包括梁上下边线、凹槽线、悬臂线、设计线、支座线、箱体的左右边线、横梁加宽线;
对标注横线和标注竖线进行分割处理,分割原则为水平方向每组文本的数量与标注横线被竖向线段分割后的线段数量一致的将保留,保留被梁主体的上下边线及其延长线进行分割的所有标注竖线;
至此,所有梁的横向或竖向标注文本及标注线、构成梁主体特征的横竖线均已准备好;
获取梁的放坡信息:
根据放坡信息的文本相对于梁主体区域位置,放坡方式分为,两侧、左侧和右侧;对放坡坡度值按照实际特征再次进行校正得到最终的放坡信息,即放坡方式、左放坡坡度和右放坡坡度;
获取梁宽、设计线位置、左右悬臂长度、左右腹板投影宽度、左右横梁加宽宽度、左右腹板及中腹板、箱体宽度、边顶板或底板倒角和中顶板或底板倒角;
对标注文本以组为单位按照从上到下进行排序,每组文本又按照从左到右排序,对应的标注线随之变化;
以箱体的左右边界坐标为基准,将标注文本及标注线划分为左侧、右侧和中间三组;
处理左侧及右侧标注文本及其标注线,获取梁的左侧悬臂长度、右侧悬臂长度、左侧腹板投影宽度、右侧腹板投影宽度、左侧横梁加宽宽度和右侧横梁加宽宽度:
若存在左侧横梁加宽且加宽方式为悬臂内加宽,将左侧标注文本分组最后一个作为左侧横梁加宽宽度;当加宽为悬臂外加宽时,左侧标注文本分组第一个作为左侧横梁加宽宽度;
获取到了箱体的左右边线且斜率小于0.06,则左右两侧的标注文本均为悬臂长度信息,左侧悬臂长度为左侧文本组之和;
没有箱体左右边线或边线斜率大于等于0.06,则标注文本将会包含悬臂及腹板投影;左侧标注文本组最后一个文本所在的标注线段若与箱体左边线相交且不与梁主体左侧相交将判断为左侧腹板投影宽度,左侧标注文本组中的剩余文本和作为左侧悬臂长度;否则左侧的所有标注文本的和作为左侧悬臂长度;
处理中间标注文本及其标注线,获取到剩余的梁所有横向信息:
判断标注文本是否为支座或固结的信息;
如果标注线段与梁主体水平方向左右两侧均相交,则此标注文本为梁宽;
如果标注文本数量为2,且其对应的标注线段与梁左侧或右侧相交,将判断此组标注文本为设置线位置,设计线左侧的记录为设置线位置信息,右侧的记录为梁主体右侧信息;
当标注线段水平方向位置在箱体内或者在箱体外但在梁主体内,此标注文本分组将作为梁箱体的信息进行处理;
判断当前标注方式为是腹板与箱室间隔标注,还是腹板与箱室组合标注;如有标注内容判断为支座或固结,则将不进行处理;
根据模型识别到箱室区域,判断箱室区域内的标注线是否为箱室标注;当无法判断时,将结合所述标注方式判断当前标注为箱室标注还是腹板标注;
判断为腹板标注后,根据在箱室的相对位置判断为左右编腹板还是中腹板;
判断为箱室标注后,将当前标注文本作为一个箱室的宽度;根据箱室内的文本获取倒角信息,同理根据相对位置判断边倒角还是中倒角;其中倒角的形式包含两种,一种通过文本格式判断,另一种需要线查找三角形两条相交直角边的形状,再根据形状两侧的文本判断是否为倒角;
若未获取到腹板宽度信息,需要根据梁主体内部箱室间或箱室与箱体间的标注文本获取边腹板或中腹板宽度;
如果出现梁的部分信息无法获得,需要根据已经获得的信息及梁的特征补充或校正部分无法获得的信息;
若没有获取到设计线位置,将再次根据梁主体左右两侧长度大于梁主体高度的长竖线,再次获取梁的设计线位置信息;
至此获取到梁横向的所有信息;
获取梁高、悬臂端部及根部厚度、顶板及底板厚度和横梁加高:
对标注文本以组为单位按照从左到右进行排序,每组标注文本又按照从上到下排序,对应的标注线随之变化;
如果有凹槽线时,若标注线段与梁上边界和所述凹槽线都相交时,将不做操作处理;
标注线与梁上下边界都相交,且标注文本位于标注线垂直方向中间位置时,则所述标注文本判断为梁高;
箱体区域左右两侧的标注文本为悬臂厚度,x轴位置靠近梁主体左侧或右侧的标注文本为端部厚度,靠近箱体的标注文本为根部厚度;
x轴位置位于箱体内部,与梁主体上边线相交的标注文本为顶板厚度,下边线相交的标注文本为底板厚度;
与梁底边线相交,且在梁主体外的标注文本为横梁加高;
至此获取到梁横向和竖向的所有信息。
7.根据权利要求2所述的一种桥梁上部结构现浇梁识别方法,其特征在于,所述方法还包括:
步骤S5、对包含现浇梁上部结构信息的图纸进行坐标还原;
所述坐标还原包括文本信息、截面区域位置和梁主体区域位置的还原。
8.一种用于桥梁上部结构现浇梁识别系统,其特征在于,所述系统包括:
第一处理模块,被配置为,对图纸进行图片前置处理,得到只剩下图纸标题和图纸内容的二值图;
第二处理模块,被配置为,对所述二值图进行图纸区域分割,分割后的二值图的图纸区域按照从上到下和从左到右的顺序排序,每个图纸区域中包含了图纸标题和图纸轮廓;
第三处理模块,被配置为,对图纸区域分割后的二值图进行分类,并根据图形类别识别二值图,得到梁的信息;所述图形类别包括:立剖面图、板平面图和横截面图;
第四处理模块,被配置为,对所述梁的信息进行组合处理,得到完整且准确的现浇梁上部结构信息。
9.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现权利要求1至7中任一项所述的一种桥梁上部结构现浇梁识别方法中的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1至7中任一项所述的一种桥梁上部结构现浇梁识别方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310967929.0A CN116823807B (zh) | 2023-08-02 | 2023-08-02 | 一种桥梁上部结构现浇梁识别方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310967929.0A CN116823807B (zh) | 2023-08-02 | 2023-08-02 | 一种桥梁上部结构现浇梁识别方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116823807A true CN116823807A (zh) | 2023-09-29 |
CN116823807B CN116823807B (zh) | 2024-04-05 |
Family
ID=88139413
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310967929.0A Active CN116823807B (zh) | 2023-08-02 | 2023-08-02 | 一种桥梁上部结构现浇梁识别方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116823807B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105302930A (zh) * | 2014-06-30 | 2016-02-03 | 上海神机软件有限公司 | 基于纵横梁的工程图纸识别系统及方法、排模系统及方法 |
WO2016034027A1 (zh) * | 2014-09-01 | 2016-03-10 | 深圳汇林达科技有限公司 | 三维空间软件的配模方法及系统 |
CN109902600A (zh) * | 2019-02-01 | 2019-06-18 | 清华大学 | 一种道路区域检测方法 |
CN111898401A (zh) * | 2020-05-26 | 2020-11-06 | 中建八局天津建设工程有限公司 | 一种建筑工程图纸智能识别方法 |
CN114092460A (zh) * | 2021-11-29 | 2022-02-25 | 株洲时代电子技术有限公司 | 一种桥梁表面病害自动识别方法 |
CN114663661A (zh) * | 2022-04-13 | 2022-06-24 | 中国科学院空间应用工程与技术中心 | 空间生命科学实验对象语义分割方法、装置及存储介质 |
CN115112296A (zh) * | 2022-06-23 | 2022-09-27 | 西安苏试广博环境可靠性实验室有限公司 | 一种稳定精度测试方法、系统、介质、设备及终端 |
CN116343254A (zh) * | 2023-03-27 | 2023-06-27 | 广联达科技股份有限公司 | 剖面图识别方法、装置、电子设备和存储介质 |
-
2023
- 2023-08-02 CN CN202310967929.0A patent/CN116823807B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105302930A (zh) * | 2014-06-30 | 2016-02-03 | 上海神机软件有限公司 | 基于纵横梁的工程图纸识别系统及方法、排模系统及方法 |
WO2016034027A1 (zh) * | 2014-09-01 | 2016-03-10 | 深圳汇林达科技有限公司 | 三维空间软件的配模方法及系统 |
CN109902600A (zh) * | 2019-02-01 | 2019-06-18 | 清华大学 | 一种道路区域检测方法 |
CN111898401A (zh) * | 2020-05-26 | 2020-11-06 | 中建八局天津建设工程有限公司 | 一种建筑工程图纸智能识别方法 |
CN114092460A (zh) * | 2021-11-29 | 2022-02-25 | 株洲时代电子技术有限公司 | 一种桥梁表面病害自动识别方法 |
CN114663661A (zh) * | 2022-04-13 | 2022-06-24 | 中国科学院空间应用工程与技术中心 | 空间生命科学实验对象语义分割方法、装置及存储介质 |
CN115112296A (zh) * | 2022-06-23 | 2022-09-27 | 西安苏试广博环境可靠性实验室有限公司 | 一种稳定精度测试方法、系统、介质、设备及终端 |
CN116343254A (zh) * | 2023-03-27 | 2023-06-27 | 广联达科技股份有限公司 | 剖面图识别方法、装置、电子设备和存储介质 |
Non-Patent Citations (3)
Title |
---|
J.K. CHOW ET AL.: "Anomaly detection of defects on concrete structures with the convolutional autoencoder", 《ADVANCED ENGINEERING INFORMATICS》, pages 1 - 13 * |
XIAOJUAN QI ET AL.: "Vertical Dynamic Deflection Measurement in Concrete Beams with the Microsoft Kinect", 《SENSORS》, pages 3293 - 3307 * |
应俊杰: "基于全卷积神经网络的桥梁裂缝识别方法研究", 《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》, pages 034 - 600 * |
Also Published As
Publication number | Publication date |
---|---|
CN116823807B (zh) | 2024-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Suzuki et al. | MARIS: Map recognition input system | |
CN109389121B (zh) | 一种基于深度学习的铭牌识别方法及系统 | |
CN112115774A (zh) | 结合rpa和ai的文字识别方法、装置、电子设备和存储介质 | |
CN110188778B (zh) | 基于影像提取结果的居民区要素轮廓规则化方法 | |
CN112396128B (zh) | 一种铁路外部环境风险源样本自动标注方法 | |
CN105574524B (zh) | 基于对白和分镜联合识别的漫画图像版面识别方法和系统 | |
CN111626146A (zh) | 一种基于模板匹配的合并单元格表格分割识别方法 | |
CN112070769A (zh) | 一种基于dbscan的分层点云分割方法 | |
CN110659644B (zh) | 书法单字的笔画自动提取方法 | |
CN113158808A (zh) | 中文古籍字符识别、组段与版面重建方法、介质和设备 | |
CN114005123A (zh) | 一种印刷体文本版面数字化重建系统及方法 | |
CN105528614A (zh) | 一种漫画图像版面的识别方法和自动识别系统 | |
CN114419647A (zh) | 一种表格信息提取方法及系统 | |
CN116311259B (zh) | 一种pdf业务文档的信息抽取方法 | |
CN112364834A (zh) | 一种基于深度学习和图像处理的表格识别的还原方法 | |
CN109409211B (zh) | 汉字骨架笔段的处理方法、处理装置及存储介质 | |
CN116823807B (zh) | 一种桥梁上部结构现浇梁识别方法和系统 | |
JPH04141783A (ja) | 電子線図形データ作成装置及び方法 | |
CN113033541B (zh) | 发行公告版面分析方法 | |
Heitzler et al. | A modular process to improve the georeferencing of the Siegfried map | |
CN115294595A (zh) | 一种变电站一次接线图智能解析方法 | |
CN113901540A (zh) | 一种门窗表建筑图纸的类型和门窗的自动识别方法 | |
CN109325483B (zh) | 内部短笔段的处理方法和装置 | |
CN114565749A (zh) | 一种电力建设现场签证文档关键内容识别方法及系统 | |
Vasin et al. | Increasing the effectiveness of intelligent information technology for producing digital graphic documents with weakly formalized description of objects |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |