复杂曲线数据提取_第1页
复杂曲线数据提取_第2页
复杂曲线数据提取_第3页
复杂曲线数据提取_第4页
复杂曲线数据提取_第5页
免费预览已结束,剩余10页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、复杂曲线数据提取 0背景 在一些情况下,需要对已经变成图像的数据再次进行研究,这就需要把图像再次还原成数据。 这次项目就是要把图像上的复杂曲线再次还原为数据,但是复杂曲线提取数据并不容易,难点有:曲线数量多,曲线重合区域大,曲线颜色相同仅仅是线型不同,图片不清晰,分辨率低。 对于复杂曲线数据提取问题,杭州电子科技大学计算机学院的严义给出了一种从打印图形中提取曲线数据的方法,可在占用较少内存的情况下从点阵图形中提取曲线数据,并采用区域插值的算法去除曲线中的间断点,但是提取出的数据也只是包含一条曲线。付昆昆、郑百林对于文献中图的曲线数据的提取,提出 一种通过采集像素点来识别曲线坐标的方法,但是此方

2、法提到的复杂曲线是一条复杂的折线,不是由多条曲线一部分重合构成的。还有南京航空航天大学能源与动力学院的谭延峥李舜酩提出了一种针对两条曲线的识别提取算法和一种针对多条彩色曲线的识别提取算法,通过分别识别、提取、存储各曲线的坐标数据,对各曲线进行插值,仿真实现了复杂曲线图像的数据提取,但是没有办法提取多条黑色曲线数据。 为解决复杂的曲线数据的提取问题,本文提出一种使用计算机和人工相结合的方法来提取曲线数据。那是因为单独使用数字图像处理技术提取曲线难以成功,因为曲线太过复杂,计算机难以识别;而使用人工提取曲线的方法费时费力,提取效果不佳。为了解决上述问题,应采取两者结合的方式,即先使用数字图像处理技

3、术对图像进行预处理,人工取一些坐标点,再使用插值的方法得到曲线数据。 1实现原理 为解决复杂的曲线数据的提取问题,本文提出一种使用计算机和人工相结合的方法来提取曲线。那是因为单独使用数字图像处理技术提取曲线难以成功,因为曲线太过复杂,计算机难以识别;而使用人工提取曲线的方法费时费力, 提取效果不佳。为了解决上述问题,应采取两者结合的方式,即先使用数字图像处理技术对图像进行预处理,人工取一些坐标点。为了减低误差,使用插值法对采集到的数据点进行插值进而得到曲线数据。 1.1 图像预处理 为方便人工取点与降低干扰,首先需要对低质量图像进行预处理。因为给出的图像是真彩色图,需要把它进行图像的灰度化后再

4、转换为二值图,后用高斯滤波器等方法去除噪声的干扰。 1.2 插值法 插值是在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。 在提取复杂曲线数据过程中,图像上的待提取曲线是被插值函数,人工在图像上取到的曲线点是插值节点,通过插值新生成的曲线就是插信函数。 通过插值节点生成插值函数有许多方法,因为提取曲线数据是一维插值, 主要有四种方法,即为:临近点插值(nearestnearest-插值点函数值估计为与插值点最近的数据点函数值。 线性插值(linearlinear根据相邻数据点的线性函数估计落在该区域内插值数据点的函数值。 三次样条插值(splinespline在相邻数

5、据点间建立三次多项式函数,根据多项式函数确定插值数据点的函数值。 立方插值(cubiccubic-通过分段立方 HermiteHermite 插值方法计算插值结果,利用插值节点上的函数值与导数值来构造插值多项式。 为选取最合适的插值方法,设定一个正弦函数,再在正弦曲线 x x 的 值从 0 0 到 6 6 每间隔 1 1 取一个点,共取 7 7 个点作为采样点。 图 2 2 临近插值生成的插值函数 图 2 2 是使用临近插值的方法所生成的插值函数, 与图 1 1 进行对比可以看出误差非常大,并且曲线一点也不光滑,提取数据的效果很差。图 1 1 原正弦曲线 如图 1 1 所示,正弦函数将作为插值

6、节点使用。 的图像,蓝色圆圈表示采集到的点,这些点 红件插值 图 3 3 线性插值生成的插值函数 图 3 3 是使用线性插值的方法所生成的插值函数,可以明显的看到,数据点之间用直线连接,结果是一幅折线图,插值函数的误差较大。 图 4 4 样条插值生成的插值函数 图 4 4 样条插值生成的插值函数,样条插值的插值函数圆滑,且非常接近被插值函数,效果很好 图 5 5 立方插值生成的插值函数 图 5 5 是使用立方插值的方法所生成的插值函数,虽然曲线圆滑,但还是有一定误差,关键的是立方插值必须要求插值节点间隔相等。 基于对四种方法的对比,可以清楚地看到,样条插值的误差最小,立方插值的误差次之,但是在

7、人工取点时难以做到选取的插值节点间隔相等,所以使用样条插值作为插值的方法。 2具体步骤 图像预处理 首先,查看图像的储存形式,如下例,图片为真彩色图,所以为了方便的取点,要对图像进行灰度化,二值化,去噪声等一系列处理,使曲线更加清晰. 图 6 6 待提取数据的曲线 确定坐标轴 如果直接进行取点的话,取得的是点坐标在图像中的像素坐标,并不是对应的 x x 与 y y坐标的位置,所以在人工取点之前需要先把坐标轴确定下来。 确定坐标轴的方法是人工取坐标轴三个点的像素坐标与具体值,分别是: 左下角 x x 与 y y坐标轴最小值处的像素坐标值与具体值,右上角 x x 与 y y 坐标轴最 大值处的像素

8、坐标值与具体值,并将两个点坐标储存在数组。 如图 6 6 图像大小为 680800680800 个像素,其中左下角坐标点的具体值为 (0,0),(0,0),像素坐标值为(41,783);41,783);右上角坐标值为(10,5),10,5),像素坐标值为(636,52)(636,52)。注:在像素坐标轴中,原点位于整个图像的左上角,与传统坐标轴有较大的不同,在转化时要注意。 这样,后面通过人工采集到曲线上像素坐标通过上面四个坐标轴坐标对比便可以获得曲线上点的具体坐标。 人工取点 为了将复杂曲线分离,采取人工鼠标在图像中的一条曲线上取一些坐标点。为了取点准确,可先对图像进行放大后使用鼠标取点,这

9、里取到的坐标是像素 坐标(像素坐标存放在数组,中),将取得的点像素坐标依据上一步坐标 轴的像素坐标进行转换,得到曲线上点的真实坐标。再将真实坐标存放在数组 ,中。其中像素坐标与真实坐标的转换公式如下: 如,在上面得例子中, , 如图 6 6 中,人工取点后,再通过公式将像素坐标与实际坐标进行转换后,提取出的坐标如下表所示。 Line#1 9.09E+004.66E+00 8,99004.47E+00_&88E+00429E+00870EM04.02E+00WE+003.88E+008.44E+003.68E+00824E+003.45E+007,98E+003.18E+U07.71E+

10、002.95E+00732E+002.68E+006.86E+002.42E+00,29E+002.16E+00_6+05E002.07E+005.57EHJ01-89E+004.86E+001.66E+00 表 1 1 在第一条曲线上所取点 样条插值 对获得的坐标数据进行样条插值,即在插值节点的基础上生成插值函数,生成的插值函数可以看作图像上原曲线的数据。 在 MATLABMATLAB, ,使用样条插值只需要使用 interp1()interp1()函数进行插值,因为已经论证过将使用样条插值,要将 interp1()interp1()函数的方式字段设置为splinespline。 1 21

11、11 0 0 2 0.1000 0.2285 3 0.2000 0.3267 4 03000 0.4108 5 0.4000 04587 6 0.5000 0.5110.5118 8 7 0.6000 0.5457 8 07000 05732 9 0.3000 0.5974 10 0.9000 0.6210.6213 3 11 1 1 0.6470 12 1.1000 0.6740.6741 1 13 1.2000 0,7023 14 13000 0,7308 15 1.4000 0+7591 16 15000 07867 17 1.6000 0.8131 表 1 1 第一条曲线插值结果 至这

12、一步,对于复杂曲线数据中的其中一条曲线的数据已经提取完毕,接着重复上面的步骤以提取图像中的其他曲线数据,直至所有的曲线数据都被提取出来。 提取结果 根据图像中曲线的条数,重复上面的步骤。如图 6 6 中有 6 6 条曲线,提取 6 6 条曲线后,将 6 6 条曲线绘制于坐标轴中,如下所示: 图 7 7 根据插值结果绘制新曲线 3误差分析 上述方法只是对图像中的数据进行了提取,并不能说明此方法的准确性,为了说明方法的准确性,要对提取出的结果进行误差分析。 如上例 2 2 中的图像, 可以将其分为两部分: 一是在图像右侧线条已经明显分开的部分;二是图像中线条缠绕的一起难以分辨的部分。我们可以分别对

13、两部分进行误差分析,如果两部分的误差都很小,则可以说明此方法是准确的。4.5 3.5 3 2.5 2 1.5 1 0.5 为了验证图像中线条已经分开部分的误差,可以根据对原曲线与提取曲线对比来得到误差的大小。 因为上图中的曲线数据是未知的,为了验证误差可以设三条曲线分别 是:y1=xy1=x2;y2=2*xy2=2*x2;y3=ey3=ex。并绘制成图像如下所示: 图 8 8 三条曲线图像 根据上面的具体步骤对曲线数据进行提取,首先对曲线人工采点结果如下所示: 1_ine LL14KBdouble 1 23 4 5 5 6 7 8 9 1 D0.9930 NaN 0 0 WN 0 0 7 0.

14、Q&49 1.0867 NwN 0.2177 0.0937 NaN 0.2472 0.0552 3 0.1365 1.1429 NaN 0.4465 03931 NaN 03690 4 4 0.2140 1.2365 NdNNdN 0.6494 0.6431 NaNNaN 0.490g 0.2248 5 0.3579 1.4239 NaN 0.8155 13302 NaN 0.70111 0.4871 G 0.524D 1.6862 NaN 1.0295 2.1171 KlaKlaN N o.ssig D.76&1 7 0.6863 1.9859 NdN 1.2066 2.90

15、40 NdN 1.1144 12泗 8 099JEJ 2.M79 NaNNaN l.;b4fa J.14/S NaNNaN 1.37M 1.892 9 1.1803 3.2412 NoN 14096 3.9719 NJN 1.6199 2.6230 10 1.383S 3.9906 NdN 1.5609 4.8712 NdN 1.7712 3.12B3 11 1.5351 4,6464 BN 17122 5.8642 NaN 1,9041 工6159 12 1.6827 53770 NaN 1.S118 6.5761 NaN 3.99D6 13 L8561 6.3888 NWN 1,91141

16、,9114 73068 NdN NdN NaN 14 27.3S17 NaN 2 7.9&13 NaN NaN WN TFTF 表 2 2 三条曲线人工采点结果 通过采集到的数据点进行插值,结果如下所示: 1 2 3 4 5 6 7 8 1 0O.9Q3O 000 00 0 2 0.1000 1.1027 00.1000 0.0212 00.1000 6.49 3 02000 1.2191 002000 0,0794 00,2000 0,0329 4 03000 1.3453 00.3000 0.1766 00.3000 0.0S67 5 0.4C00 1.4854 00.4000 0

17、3147 C0.4000 0.1522 6 6 0.5C0Q 1.6454 00.5000 0.4956 00.5000 0.2J37 7 0.6000 1.8207 0 0.6000 0.7184 0U而go 03483 8 0.7000 ZO135 0 0.7000 0.800 00.7000 0.4855 Q 0.800D 2.2278 。的。00 1.201 0O.BOOO 0.63i9 10.9000 2.4630 00,9000 1.6207 00.9000 0.8000 11 12.7173 01 1.9990 01 0.9910 12 1.1000 29930 01.1000

18、2.4114 01.1000 1.2043 13 1.2000 3.3045 0 1.2000 2.3712 01.2000 1.4362 -4 1.3000 工561。 013000 33824 01.3000 1.5871 IS 1.4000 4.0572 01.4000 3.9184 01.4000 1.9SS2 16 1.5000 4.4869 01,5000 4.4977 015000 2.2498 :; 1bUOO 4.9552 0L6UUU 5,1182 0L6Q0U 2.5594 IS 17000 5.4701 01,7000 5.7301 017000 23弘9 二9 1.8

19、00D 6.0411 01.B000 6.4904 01.8000 3.230B 20 19C00 6.6758 0iqooo 7力18 019000 3.&OOS 21 27.3817 027.9813 02 19钝6 表 3 3 三条曲线插值结果 可以根据三次样条插值的结果绘制出的曲线图像,红色的点是人工所取的点,如下所示。 00.20,40,60,811,21,41,8 图 9 9 曲线绘制结果 因为曲线数据可以根据曲线公式得到的,现在可以根据采集到的插值节点通过样条插值所得到的数据,与通过误差公式可以求得的与原始数据进行对比来获得误差的大小。误差的计算公式为: 在上公式中,一一

20、指在曲线中第 i i 个点,通过公式求得的真实的 y y 坐标 是通过样条插值得到的 y y 坐标值。一一指在曲线中第 i i 个点,通过公式求得的真实的 y y坐标。是通过样条插值得到的 y y 坐标值。是曲线上点的总个数。 求得实例 1 1 的误差分别为: 曲线 y1y1 的误差为 1.78%;1.78%;曲线 y2y2 的误差为 0.63%;0.63%;曲线 y3y3 的误差 为 0.170.17% %。 曲线 y1y1 误差较大的原因是可能是取点不准确。 对于线条缠绕在一起的部分的误差,采取的方法是找出缠绕部分的上界限与下界限,再看插值函数的值是否在上下界限之内,如果插值结果在界限之内

21、,则可说明误差较小。 如图 6 6 中,选取 x x 坐标为 2 2- -3 3 之间的位置进行误差分析,具体位置如下所示: 图 1010 对缠绕部分截取位置 在上图中选取红色方框位置作为缠在一起的误差分析。对此部分进行膨胀可以得到如下图,并提取下图黑色部分的上下界,并将上下界转换为实际坐标,得到上下界两条曲线数据。图 1111 截取部分进行放大膨胀后图像 |2.10000.9452| 2,10000.8493 |Z20000.9726 2.20000.3630 2.30001 2.30000.B904 |2.4000_1.0205 240000,9041 2,50001,0479 2,50000,9178 匚2.6000L0753| P2.60000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论