刘杰,刘文吉,刘灿波
(1.武汉理工大学 能动学院,湖北 武汉 430063;2.南通中远川崎船舶有限公司,江苏 南通 226000)
船舶轴系设计规范中曲线类图形的反向数据获取方法
刘杰1,刘文吉1,刘灿波2
(1.武汉理工大学 能动学院,湖北 武汉 430063;2.南通中远川崎船舶有限公司,江苏 南通 226000)
利用像素比例映射方法原理,结合人为确定坐标轴像素起始点及输入对应代表的实际值,针对轴系规范中各类典型趋势曲线的变化比较光顺的特征,提出基于斜率变化程度控制搜索步长、根据斜率正负决定初始搜索方向的变步长曲线搜索方法。相比传统的像素邻域搜索方法,省去了图像细化的处理步骤,提高了搜索效率。
趋势曲线;数据提取;趋势识别;算法
在船舶轴系设计过程中,有部分规范要求或配套设备的性能参数等以趋势曲线图形式提供,需要人为查阅与确定。虽然人为确定参数不存在任何技术困难,但这些步骤是整个设计过程中的一个个子步骤,如果都需要人为参与确定,则设计软件就无法做到更简化和智能。要想实现更智能化的计算程序辅助设计,必须解决对规范数据中表格与图形数据的反向获取与描述。有学者针对趋势图中只有单一曲线、不存在网格线等干扰情况采用基于像素的邻域搜索方法实现了数据的反向获取[1-2]。但对船舶轴系规范数据中同一图形中有多条趋势曲线、图形中存在不连续点、存在多条网格线干扰等问题,则没有提出解决方案。拟针对此问题展开分析讨论。
在船舶轴系相关设计规范中,图形类型的数据是一类信息量大、但计算机形式化描述又比较困难的信息。在轴系设计过程中,根据规范公式计算获得某个横坐标的值后,需要根据规范约定的相应趋势曲线,从中找到对应的纵向坐标值,并带入下一步骤的计算。图1为其中的一个示例,图2则是对图1所示图形反向获取的数据样例。
图1 多条趋势图形的示例
图2 反向识别获取的数据示例
在获取到了图2所示的表格数据后,根据计算公式确定横坐标值,根据插值方法就可以很方便的确定对应的纵坐标值,这个过程完全不需要人工干预。不仅在船舶轴系设计过程中,在很多其他工业设计场合也广泛存在这类需求[3-4]。在无法反向获取趋势图数据时,目前设计过程中,大多采用人工识别的方法,即从提供的规范趋势图形上用尺衡量横坐标与纵坐标,再估算出需要的值。如果需要将整个趋势图数据都表示出来,则只能采用人工描点后再辅助输入的方式。这种方法工作量大,而且为了方便,只能采用等间隔的量化间隔,人为读数及趋势曲线斜率变化的不均匀,都会导致带来比较大的误差。
反向数据获取是利用程序算法实现将趋势曲线图识别为对应的数据表,并保存到数据库为后续利用建立基础。在反向获取数据后保存时,基于数据库容量的考虑,横坐标只能取有限多个点,后续在真实取值时需要进行插值处理,只要在设定保存间隔时,合理控制相邻数据点的斜率变化,误差可以控制在合理的范围内。
2.1 处理思路
具体的处理过程可以用流程图3来描述。
图3 处理思路流程
图像预处理中主要实现图形倾斜校正、图像二值化等操作。这些图像文件一般来源于照片或扫描文件,再截取其中需要的范围作为程序处理识别的区域。目前文献中介绍的处理方法,都需要对图像进行单像素化处理,即在特定分辨率下,对所得的二值图像进行细化,单一曲线变得只有一个象素宽度,这样才能进行后续基于像素比例方法进行反向数据获取。本文方法可以省略单像素化处理这一步骤。图像预处理内容属于计算机图形学相关研究的范畴[4-5]。在开发程序进行验证时,对图像预处理部分采用的是开源组织提供的OpenCV函数库,基于该函数库可以简单方便实现本文需要的图像预处理功能。
坐标范围的确定是反向获取数据的关键步骤,目前还没有较好的方法能实现自动获取。采用人工输入坐标值起始范围的方法,一共只需要在图形上用鼠标点击确定3个坐标点及输入4个数值,人工操作的工作量非常小。刻度线识别与消除取决于需要识别的图形中是否有辅助的刻度线,图1示例中是有辅助刻度线的情况。单条趋势线数据获取可以采用将已经获取的数据范围保存或消隐,以减少后续线识别的复杂度。
比例像素法识别单个像素点获取对应真实值的过程如下:以曲线y=f(x)为例,识别时采用从左至右的采样方向,根据曲线斜率变化程度确定单一曲线采样步长间隔,依次采样获得p(x1,y1),…,p(xn,yn),则某个采样点p的数据值p(x,y)的计算过程如下。
1)计算像素比例值k1,k2。
(1)
(2)
2)计算采样点P的数据值p(x,y)。
(3)
得
(4)
式中:a1,a2为横坐标轴表示的真实值区间;b1,b2为纵坐标轴表示的真实值区间;M为经过上述图像预处理后的横坐标值a1,a2对应的像素宽度值;N为纵坐标值b1,b2对应的像素高度值;X,Y为采样点P的像素坐标;x,y为采样点P的真实值。
采用比例像素映射时,坐标轴不一定是线性的,也可能是对数坐标,如果为非线性坐标,需要进一步换算,这需要在确定坐标轴时人为识别。
2.2 坐标范围的确定
如图1所示的趋势图数据,最少会有一条横坐标和一条纵坐标。坐标轴的像素范围确定是解决问题的重要一步,也是后面用比例像素法进行趋势线值计算的基础。同时,坐标范围的确定还可以约束进行趋势图形扫描检测的范围,加快程序运行的速度。
坐标轴端点像素坐标的确定采样人为在图形上点击鼠标左键的方式,在完成图形预处理后,由用户在图形上最靠近坐标轴端点的地方进行点击,程序获得点击的屏幕坐标,再换算成图形上的像素坐标。为了提高精度,程序以点击点为中心进行搜索,获取黑色像素点的平均像素值,再弹出一个输入界面,输入对应的真实值。
2.3 刻度线的识别与消除
如图1所示,在提供的图形中,为了方便人工读取,会提供相应的标识刻度线。标识刻度线会对正常数据趋势线的获取造成一定的困扰,因此需要先采取措施进行识别和消除。不能假定标识刻度线一定是均匀分布的,但其方向一定为水平或垂直。基于这个特征,识别及消除的基本方法是首先定位出刻度线的分布,再逐线段扫描,将识别出的刻度线位置对应设定为背景像素。问题的关键转化为确定刻度线的分布,即每条刻度线的起始点和终止点。确定的方法有2种。
方法1。人工在图片上点击,程序以点击点为起始点搜索最近的像素值为1的点,将该点识别为刻度线所在的点,再按照邻域搜索的方法确定刻度线是水平还是垂直。因此,理论上只需要人为点击3个点,就可以确定所有均匀分布刻度线,但非均匀分布时,则需要多次点击确定,这种方法程序实现简单,但自动化程度不够。
方法2。程序自动取识别出坐标轴范围内像素的中间点,并获取该点的像素值。如果为1,则向其水平的左右方向进行邻域查找,为了适应刻度线可能为虚线的情况,设定一个搜索范围,计算该范围内像素值为1的比重,如果比重大于设定值,则表示搜索到一条水平的刻度线。如果不为1,则在垂直方向上进行搜索,遇到像素值为1的情况再进行水平方向搜索。垂直方向的刻度线搜索类似,只是最初的搜索方向换成垂直方向。相应的识别与消除算法流程见图4。
图4 辅助刻度分割线的识别流程
程序识别刻度线的方法可以适应刻度线为非均匀分布的情况。刻度线确定后,消除刻度线需要注意一个问题,即刻度线一定会与趋势图有交点,这个数据交点最好保留,方法为如果存在非水平或垂直方向的邻域点,则该点保留。
2.4 单条曲线值获取
根据文献[1]中介绍的邻域搜索方法可以搜索单条曲线,并根据像素比例映射反向获得对应的值。但轴系规范中来源的图像质量一般不是很好,很多时候存在曲线中间有断点的情况(图1中图像即存在断点),用邻域搜索不好解决。而且完整的邻域搜索需要处理的数据点太多,计算量较大。仔细分析轴系规范等工业应用场合提供的趋势曲线,可以发现基本上变化都非常平缓,这就为采取基于曲线斜率趋势方向间隔一定步长搜索提供了可能。曲线需要识别的起始点可以采用鼠标点击确定的方法,这样简单但需要人为操作。另一种则是从已经确定的x轴起始点出发,采用线扫描的方式识别离y轴最近的分离的黑色像素点作为对应曲线的起始点。但对于图形中存在标注文字等干扰因素的情况,自动搜索确定的起始点不一定正确,需要综合判断。在确定了曲线的第1个起始点后,在x方向根据设定初始间隔(一般4到6个像素点,对比较平顺的曲线可以设定更大的初始间隔)确定下一个搜索的点起始y值。在搜索第2个点时缺省沿y方向向上搜索,如果在设定的搜索范围内没有发现黑色像素点,则y方向向下搜索,如果也没有发现,则曲线可能在该x值处有断点,则改变x方向的搜索步长再重复搜索,直到能找到下一个点为止。在确定了2个点后,后续y轴的搜索方向都根据前2个点计算斜率方向来确定,同时根据斜率变动的大小来动态改变x方向的搜索间隔步长。搜索过程示意见图5。
图5 非邻域间隔搜索的示例
对于有交点的2条曲线,从起点出发搜索到交点后,采用8邻域扫描法,且曲线一般是向右单调的,在局部点上斜率变化应比较平缓。在交点处,搜索相关邻域,取得与交点相邻的且为前进方向的像素点,分别计算此处的斜率,并与已经确定的前几个点的斜率进行比较,最接近的方向为判断的走势方向。走向确定原理见图6。
图6 交点走向示意
在图6中,曲线2的交点P(i,j)与其前一个点P(i-1,j-1)的斜率为1,其与右下角的点P(i+1,j-1)的斜率为-1,与右上角的点P(i+1,j+1)的斜率为1,因此取最接近原来斜率的方向,自然能区分曲线2的走向,剩下曲线1的走向也就确定了。
对于在交点处斜率变化较大或者斜率绝对值相同的情况,可以通过人工干预,即人工选择曲线的走势,人为进行斜率的判断,选择曲线要走的方向,达到曲线跟踪的目的。
利用vb.net语言对本文识别程序算法进行实现,程序运行界面如图2和图7所示。以获取的数据再绘制为图形的效果见图7。比较图1和图7,基本一致,证明本文的识别算法可行。
图7 根据识别数据再重新绘制的图像
基于轴系规范中各类典型趋势曲线的变化比较光顺的特征,改进了传统的像素邻域搜索方法,省去了图像细化的处理步骤,提出了基于斜率变化程度控制搜索步长、根据斜率正负决定初始搜索方向的变步长曲线搜索方法,提升了数据获取的效率。并支持多条趋势曲线、多条趋势曲线相交、存在规则及非规则的网格坐标曲线、坐标轴为非线性分布、趋势曲线中存在不连续点等情况。该方法能有效实现对趋势曲线的反向数据获取,为建立更智能的轴系辅助设计软件系统扫除了技术障碍。但在非均匀网格坐标分割线的识别效率上,还有进一步提升的空间,需要后续进一步研究;同时坐标轴的实际值还需要人为输入确定,可以探索进一步改进。
[1] 饶慧,刘杰.从文献中获取数据及判据知识资源的方法研究[J].电脑知识与技术,2010,30(6):8417-8419.
[2] 阎光伟,胡海涛.扫描图像中时序曲线的识别及数据提取[J].计算机研究与发展,2007,44(增刊2):251-256.
[3] 袁成清,王志芳,宗成强,等.基于集对分析的船舶柴油机摩擦学系统状态预测[J].船海工程,2009,38(6):84-87.
[4] 芮挺,沈春林,张金林.基于字符特征的车牌英文和数字字符自联想识别[J].模式识别与人工智能,2004,17(4):467-472.
[5] 刘峰,孟凡荣,梁志贞.基于一阶和二阶信息图像表示的人脸识别[J/OL].计算机应用研究,2017(2).http://www.cnki.net/kcms/detail/51.1196.TP.20160509.1431.012.html
Study on Obtaining Data Reversely from Curve Graphs of Criteria in Ship Shafting Design
LIU Jie1, LIU Wen-ji1, LIU Can-bo2
(1.School of Energy and Power Engineering, Wuhan University of Technology, Wuhan, 430063, China;2.Nantong COSCO KHI Ship Engineering Co., Ltd., Nantong Jiangsu 226000, China)
In view of the feature of smooth change in kinds of typical trend curves for shafting design criteria, the principle of pixel proportion mapping was used combined with manually set start pixel point in axis and inputted corresponding actual value. The method of variable step curve search was put forward based on controlling the search step by the extent of slope change and deciding the initial search direction by the plus-minus of slope change. Compared with the traditional neighborhood search method of pixel, this method has got rid of the steps of graphic refinement and improved the efficiency of search.
trend curve; data extract; trend recognition; algorithm
10.3963/j.issn.1671-7953.2017.04.032
2017-01-04
江苏省科技计划项目(BE2015208)
刘杰(1975—),男,博士,副教授
研究方向:船舶轴系设计与优化、船舶企业信息化
U664.2
A
1671-7953(2017)04-0140-04
修回日期:2017-03-13