复杂曲线数据提取.docx
《复杂曲线数据提取.docx》由会员分享,可在线阅读,更多相关《复杂曲线数据提取.docx(17页珍藏版)》请在冰豆网上搜索。
复杂曲线数据提取
复杂曲线数据提取
0背景
在一些情况下,需要对已经变成图像的数据再次进行研究,这就需要把图像再次还原成数据。
这次项目就是要把图像上的复杂曲线再次还原为数据,但是复杂曲线提取数据并不容易,难点有:
曲线数量多,曲线重合区域大,曲线颜色相同仅仅是线型不同,图片不清晰,分辨率低。
对于复杂曲线数据提取问题,杭州电子科技大学计算机学院的严义给出了一种从打印图形中提取曲线数据的方法,可在占用较少内存的情况下从点阵图形中提取曲线数据,并采用区域插值的算法去除曲线中的间断点,但是提取出的数据也只是包含一条曲线。
付昆昆、郑百林对于文献中图的曲线数据的提取,提出一种通过采集像素点来识别曲线坐标的方法,但是此方法提到的复杂曲线是一条复杂的折线,不是由多条曲线一部分重合构成的。
还有南京航空航天大学能源与动力学院的谭延峥李舜酩提出了一种针对两条曲线的识别提取算法和一种针对多条彩色曲线的识别提取算法,通过分别识别、提取、存储各曲线的坐标数据,对各曲线进行插值,仿真实现了复杂曲线图像的数据提取,但是没有办法提取多条黑色曲线数据。
为解决复杂的曲线数据的提取问题,本文提出一种使用计算机和人工相结合的方法来提取曲线数据。
那是因为单独使用数字图像处理技术提取曲线难以成功,因为曲线太过复杂,计算机难以识别;而使用人工提取曲线的方法费时费力,提取效果不佳。
为了解决上述问题,应采取两者结合的方式,即先使用数字图像处理技术对图像进行预处理,人工取一些坐标点,再使用插值的方法得到曲线数据。
1实现原理
为解决复杂的曲线数据的提取问题,本文提出一种使用计算机和人工相结合的方法来提取曲线。
那是因为单独使用数字图像处理技术提取曲线难以成功,因为曲线太过复杂,计算机难以识别;而使用人工提取曲线的方法费时费力,提取效果不佳。
为了解决上述问题,应采取两者结合的方式,即先使用数字图像处理技术对图像进行预处理,人工取一些坐标点。
为了减低误差,使用插值法对采集到的数据点进行插值进而得到曲线数据。
1.1图像预处理
为方便人工取点与降低干扰,首先需要对低质量图像进行预处理。
因为给出的图像是真彩色图,需要把它进行图像的灰度化后再转换为二值图,后用高斯滤波器等方法去除噪声的干扰。
1.2插值法
插值是在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。
在提取复杂曲线数据过程中,图像上的待提取曲线是被插值函数,人工在图像上取到的曲线点是插值节点,通过插值新生成的曲线就是插值函数。
通过插值节点生成插值函数有许多方法,因为提取曲线数据是一维插值,主要有四种方法,即为:
临近点插值(nearest)——插值点函数值估计为与插值点最近的数据点函数值。
线性插值(linear)——根据相邻数据点的线性函数估计落在该区域内插值数据点的函数值。
三次样条插值(spline)——在相邻数据点间建立三次多项式函数,根据多项式函数确定插值数据点的函数值。
立方插值(cubic)——通过分段立方Hermite插值方法计算插值结果,利用插值节点上的函数值与导数值来构造插值多项式。
为选取最合适的插值方法,设定一个正弦函数
,再在正弦曲线x的值从0到6每间隔1取一个点,共取7个点作为采样点。
图1原正弦曲线
如图1所示,正弦函数
的图像,蓝色圆圈表示采集到的点,这些点将作为插值节点使用。
图2临近插值生成的插值函数
图2是使用临近插值的方法所生成的插值函数,与图1进行对比可以看出误差非常大,并且曲线一点也不光滑,提取数据的效果很差。
图3线性插值生成的插值函数
图3是使用线性插值的方法所生成的插值函数,可以明显的看到,数据点之间用直线连接,结果是一幅折线图,插值函数的误差较大。
图4样条插值生成的插值函数
图4样条插值生成的插值函数,样条插值的插值函数圆滑,且非常接近被插值函数,效果很好。
图5立方插值生成的插值函数
图5是使用立方插值的方法所生成的插值函数,虽然曲线圆滑,但还是有一定误差,关键的是立方插值必须要求插值节点间隔相等。
基于对四种方法的对比,可以清楚地看到,样条插值的误差最小,立方插值的误差次之,但是在人工取点时难以做到选取的插值节点间隔相等,所以使用样条插值作为插值的方法。
2具体步骤
2.1图像预处理
首先,查看图像的储存形式,如下例,图片为真彩色图,所以为了方便的取点,要对图像进行灰度化,二值化,去噪声等一系列处理,使曲线更加清晰。
图6待提取数据的曲线
2.2确定坐标轴
如果直接进行取点的话,取得的是点坐标在图像中的像素坐标,并不是对应的x与y坐标的位置,所以在人工取点之前需要先把坐标轴确定下来。
确定坐标轴的方法是人工取坐标轴三个点的像素坐标与具体值,分别是:
左下角x与y坐标轴最小值处的像素坐标值与具体值,右上角x与y坐标轴最大值处的像素坐标值与具体值,并将两个点坐标储存在数组。
如图6图像大小为680
800个像素,其中左下角坐标点的具体值为(0,0),像素坐标值为(41,783);右上角坐标值为(10,5),像素坐标值为(636,52)。
注:
在像素坐标轴中,原点位于整个图像的左上角,与传统坐标轴有较大的不同,在转化时要注意。
这样,后面通过人工采集到曲线上像素坐标通过上面四个坐标轴坐标对比便可以获得曲线上点的具体坐标。
2.3人工取点
为了将复杂曲线分离,采取人工鼠标在图像中的一条曲线上取一些坐标点。
为了取点准确,可先对图像进行放大后使用鼠标取点,这里取到的坐标是像素坐标(像素坐标存放在数组
,
中),将取得的点像素坐标依据上一步坐标轴的像素坐标进行转换,得到曲线上点的真实坐标。
再将真实坐标存放在数组
,
中。
其中像素坐标与真实坐标的转换公式如下:
如,在上面得例子中,
,
,
。
,
,
。
如图6中,人工取点后,再通过公式将像素坐标与实际坐标进行转换后,提取出的坐标如下表所示。
表1在第一条曲线上所取点
2.4样条插值
对获得的坐标数据进行样条插值,即在插值节点的基础上生成插值函数,生成的插值函数可以看作图像上原曲线的数据。
在MATLAB中,使用样条插值只需要使用interp1()函数进行插值,因为已经论证过将使用样条插值,要将interp1()函数的方式字段设置为'spline'。
表1第一条曲线插值结果
至这一步,对于复杂曲线数据中的其中一条曲线的数据已经提取完毕,接着重复上面的步骤以提取图像中的其他曲线数据,直至所有的曲线数据都被提取出来。
2.5提取结果
根据图像中曲线的条数,重复上面的步骤。
如图6中有6条曲线,提取6条曲线后,将6条曲线绘制于坐标轴中,如下所示:
图7根据插值结果绘制新曲线
3误差分析
上述方法只是对图像中的数据进行了提取,并不能说明此方法的准确性,为了说明方法的准确性,要对提取出的结果进行误差分析。
如上例2中的图像,可以将其分为两部分:
一是在图像右侧线条已经明显分开的部分;二是图像中线条缠绕的一起难以分辨的部分。
我们可以分别对两部分进行误差分析,如果两部分的误差都很小,则可以说明此方法是准确的。
3.1对分开部分的误差
为了验证图像中线条已经分开部分的误差,可以根据对原曲线与提取曲线对比来得到误差的大小。
因为上图中的曲线数据是未知的,为了验证误差可以设三条曲线分别是:
y1=x2;y2=2*x2;y3=ex。
并绘制成图像如下所示:
图8三条曲线图像
根据上面的具体步骤对曲线数据进行提取,首先对曲线人工采点结果如下所示:
表2三条曲线人工采点结果
通过采集到的数据点进行插值,结果如下所示:
表3三条曲线插值结果
可以根据三次样条插值的结果绘制出的曲线图像,红色的点是人工所取的点,如下所示。
图9曲线绘制结果
因为曲线数据可以根据曲线公式得到的,现在可以根据采集到的插值节点通过样条插值所得到的数据,与通过误差公式可以求得的与原始数据进行对比来获得误差的大小。
误差的计算公式为:
在上公式中,
——指在曲线中第i个点,通过公式求得的真实的y坐标。
是通过样条插值得到的y坐标值。
——指在曲线中第i个点,通过公式求得的真实的y坐标。
是通过样条插值得到的y坐标值。
是曲线上点的总个数。
求得实例1的误差分别为:
曲线y1的误差
为1.78%;曲线y2的误差
为0.63%;曲线y3的误差
为0.17%。
曲线y1误差较大的原因是可能是取点不准确。
3.2缠绕部分的误差
对于线条缠绕在一起的部分的误差,采取的方法是找出缠绕部分的上界限与下界限,再看插值函数的值是否在上下界限之内,如果插值结果在界限之内,则可说明误差较小。
如图6中,选取x坐标为2-3之间的位置进行误差分析,具体位置如下所示:
图10对缠绕部分截取位置
在上图中选取红色方框位置作为缠在一起的误差分析。
对此部分进行膨胀可以得到如下图,并提取下图黑色部分的上下界,并将上下界转换为实际坐标,得到上下界两条曲线数据。
图11截取部分进行放大膨胀后图像
表4截取部分上界与下界
表5第一条与第六条曲线数据
因为第一条曲线是位置最高的曲线,第六条曲线是位置最低的曲线,如果这两条曲线在上下界内,则说明误差较小。
而根据表5可以看出,插值得到的曲线数据皆在上下界之间,提取得到的曲线数据误差不大。
4结论
对于类似上例的复杂曲线数据的提取,可以按照如下步骤进行处理。
(1)对不清晰,干扰大的图像先进行图像预处理,可以通过阈值化、滤波、二值化等方法初步去除噪声等干扰。
(2)确定图像中坐标轴位置与坐标刻度,使图像中的像素坐标转换为真实坐标。
(3)在曲线上进行人工取点,对于取到的坐标点进行样条插值,生成一条曲线,新生成的曲线就是提取出的原曲线数据。
(4)通过本方法得到的曲线与原始曲线相比,数据非常吻合,误差也相对较小。