科技图像矢量化相关问题研究-本科毕业论文_第1页
科技图像矢量化相关问题研究-本科毕业论文_第2页
科技图像矢量化相关问题研究-本科毕业论文_第3页
科技图像矢量化相关问题研究-本科毕业论文_第4页
科技图像矢量化相关问题研究-本科毕业论文_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

2013 届毕业论文题 目 科技图像矢量化相关问题研究 专业班级 机械设计制造及其自动化09级2班 学 号 0903010221 学生姓名 徐宏良 指导教师 秦襄培 指导教师职称 副教授 学院名称 机电工程学院 完成日期: 2013年05月30日科技图像矢量化相关问题研究Study of vectorization of technology image 学生姓名 徐宏良 指导教师 秦襄培 武汉工程大学毕业论文摘 要 本文主要研究的是科技图像的矢量化,矢量化技术在各个领域都有着越来越广泛的应用。随着计算机技术的发展,矢量化研究日益成熟,加上矢量图形自身的优越性,矢量化技术将会快速的发展。本文研究意在使用计算机代替人工查询图线数据。对于一幅含有曲线的图像,先把图像转化成灰度图像,再二值化,得到二值图像。然后设计程序计算出图像与实际数据的比例尺。再删除图像中除了曲线以外的数据,只保留曲线。使用find函数找出曲线数据,通过比例尺把数据转换成实际数据,利用多项式拟合,得到拟合公式。使用计算机代替人工查询曲线数据,可以避免由于视线误差、测量误差导致的查询数据不准确,使查询效率和准确度大大提高。关键词:矢量化、MATLAB图像处理、曲线拟合、图像数据提取AbstractThis paper studies the science and technology image vectorization, vector technologies have a wide range of applications in various fields. With the development of computer technology, vector research has become more sophisticated .With the superiority of vector graphics, vector technology will be rapid development. This study is intended to use a computer instead of artificial query graph line data. For the image containing curve , first converting the image into a gray-scale image, and then making it binarized to obtain a binary image. Then designing program to calculate the dimensions of the image with the actual data. Then deleting the data in the image except the curve, leaving only the curve. Use the find function to find the curve data, and finally make the data converted into the actual data by scale and the use of polynomial fitting, get fitting formula. Using a computer instead of artificial to queries curve data can avoid errors due to line of sight because the measurement error will lead to inaccurate data query so the query efficiency and accuracy will be greatly enhanced.Keywords: vector, MATLAB image processing, curve fitting, image data extraction目 录摘 要IAbstractII目 录III第一章综述11.1课题研究的背景11.2课题研究的意义11.3国内外研究现状21.3.1图像数据提取21.3.2矢量化技术21.4本文研究的内容31.5可行性分析31.5.1使用MATLAB进行图像矢量化的可行性31.5.2使用MATLAB进行图像矢量化的精度分析41.6图像处理51.6.1数字图像51.6.2矢量图像61.6.3数据提取与数据拟合61.7技术路线7第二章科技图像矢量化82.1总体方案82.2流程图82.3图像二值化92.4求坐标比例尺112.4.1Y轴方向比例尺122.4.2X轴方向比例尺132.5删除坐标轴及坐标网格152.5.1删除X轴网格线152.5.2删除Y轴网格线162.6提取曲线数据172.7曲线拟合20第三章结论243.1结论243.2展望24参考文献25致 谢26IV第一章 综述1.1课题研究的背景计算机储存图像的形式有两种,一是光栅点阵方式,另一种是矢量形式1。矢量形式存储图像具有文件体积小,易于修改,放大缩小不会失真等优点。在科技迅速发展的今天,光栅点阵储存图像因其自身的局限性不能满足需要,例如在地图储存中,为了保证图像的清晰,图像文件会很大,这就给储存和传输带来了不便;在工程图纸方面,使用矢量方式存储可缩短输入图纸修改图纸的时间,大大提高效率;把各类表格图线以矢量图形式存储,可省去查表的步骤。另外,由于视线误差、测量误差会导致查询数据不准确,而且,人工查询图表、效率低下。所以,使用计算机代替人工查询是必然趋势。计算机代替人工测量,查询数据的效率和准确程度将会大大提高。人们查询的数据有两种形式,一是直接的数据,查询数据直接对应结果,对于这种数据,可以直接使用多项式拟合可以将其矢量化。另一种是图线形式,原始数据被绘制成曲线图像保存。而这样保存的图像都是数字图像。所以数字图像是图像矢量化的源图像。本文即是研究如何将这类图像矢量化。矢量化需要数据来拟合,所以必须先将数字图像中的有用的数据提取出来。提取数据之后就可将其矢量化。以后查询数据时只需要在计算机中输入查询数值就可以得到查询结果。1.2课题研究的意义 在工程图纸方面,由于CAD/CAM技术的普及,制图设计效率大大提升,查询图表也在与时俱进。如果把图数据矢量化,那么今后在查询图表数据方面效率会大为提高。 本文是科技图像矢量化相关问题研究,面对一幅曲线图像,本文研究的是如何将曲线的数据提取出来,利用所提取的数据拟合成公式,实现图像的矢量化。目的是省去机械设计流程中查表查图的步骤,提高设计制图的效率。查询曲线数值时,只需要输入图像的X坐标值,即可通过计算机计算出对应的Y值。使用书本查询曲线时,可能会出现查询错误的现象,查询时由于测量的误差,视线的干扰导致查询所得数值与正确值差距较大,而使用计算机查询可以完全避免这种情况,使所得数据更加精确。因此,课题研究可使得查询图线效率提高,精确度提高。1.3国内外研究现状1.3.1图像数据提取目前,有许多种方法和软件可以把数据从图片中提取出来。储存数据的图像一般为数字图像,数字图像是由一个个的像素组成的,得到曲线所在的像素点位置就可以绘制图像。所以可以使用图片软件读取图像,然后手动操作记录下曲线所在的每个点的位置,这是最简单的方法,也是最费时,最繁琐的方法。而且这样取得的数据没有比例尺,比例尺还需要通过别的方式得到。使用originlab公司出品的origin软件可以实现提取数据,origin软件本身本不具备提取数据的功能,开发者为了适应人们的需要开发了相应的插件。使用getdata软件也能提取图片中的数据。也有许多软件可以将图片中的文字转换成文本数据,但使用过这种软件都知道,转换后的文字与原文有一定的差距,并不能直接使用,对于转换后的文档,就必须有一个校正的过程。本文所研究的是科技图像的矢量化,提取的是科技图像数据,本文基于MATLAB软件,编写程序把需要查询的图像转换成数据,并采用公式的形式储存。从而让计算机代替人工查询图像,简化查询的过程。1.3.2矢量化技术国内在 90 年代初期开始研究矢量化技术,并且取得了一定的成绩,也有一些机构开发出了矢量化软件。比较著名的有清华大学的TH-DA 工MS (ANNO)、华中科技大学的EDIS 等。但综观这些软件识别后的结果,普遍存在着畸变、误识别严重,以及理解深度不够等情况。国内外现有的矢量化软件的普遍缺点是抗噪声性差、矢量化的精度和速度都不高,识别层次较低,离实用化还有很大的距离。近些年来,矢量化技术依然是国际 CAD 和模式识别领域的研究热点,有许多权威的专业性国际机构定期举办有关文档识别的会议,并不定期地举行矢量化软件的测评比赛。这些都为矢量化技术的研究做出了大量的贡献2。国外对矢量化技术的研究开始于上个世纪70年代,国外一些大学和公司投入了相当多的人力、物力来研究矢量化技术,但是由于当时理论和实现条件的不成熟,样机产工作进展缓慢,图形识别的准确率很低,而且识别速度很慢。进入90年代以后,计算机处理能力得到飞速发展,计算机图形图像理论进一步完善,模式识别技术引起广泛重视,特别是激光扫描技术的广泛应用,这些都为建立在计算机基础上的图像快速矢量化成为可能。美国的CADALYST杂志每年都会对国际上流行的光栅图形矢量化软件进行广泛的评比,同时列出各种矢量化软件的各种特性以及优缺点。CADALYST杂志最新的评测,对目前国际上流行的光栅图形矢量化软件进行了比较,列举的软件包括:德国Softelec公司的VPStudio、Able公司的R2V、Rasterex公司的RxAutoImage Pro 2000、Ravtek公司的Crucible、GTX公司的GTXRaster CAD PLUS、日立公司的ImageSeries、IDEAL公司的I/Vector 4.0。本次测试将功能分成三类:图像净化、光栅编辑和矢量化。图像净化指能同时影响全图的功能;光栅编辑则只作用局部区域;当然最重要的是矢量化,它包括文字识别和识别类型3。这些软件分别应用于机械设计、建筑设计、地图以及电路设计等领域,通过评测可以看出,虽然各软件在光栅图形的处理能力、矢量化的效果方面各有所长,但是在自动化的程度、矢量化的准确度等各方面也都存在着各种不足之处。近年来,国内也有多个高校推出了一些商品化的R2V软件。与国外软件类似,各种R2V软件虽然能够替代很多的手工劳动,但是仍在软件的性能、自动化程度、准确率方面存在很多不足。因此,对于光栅图形矢量化技术的研究,也一直是计算机图形图像处理、机械设计、人工智能领域研究的难点和热点。1.4本文研究的内容本文研究的是科技图像的矢量化,使用矢量化技术,把图像中的曲线数据拟合成多项式,以公式形式保存。本文研究包括两个部分:一是理论分析使用MATLAB进行图像矢量化的可行性以及所得结果的精度是否符合要求;二是编写了一套程序对含有曲线的图像矢量化。本文结构为:第一部分介绍所研究的内容和背景知识以及分析MATLAB进行图像矢量化的可行性和精度,第二部分编写程序对图像矢量化,第三部分对本文进行总结。1.5可行性分析1.5.1使用MATLAB进行图像矢量化的可行性虽然MATLAB最初的设计是以数学计算为主,但它提供的可视化技术,尤其是对计算结果的可视化处理是其一大特色,MATLAB的图形工具从简单的点、线、面的处理发展到多维图形的表现,同时MATLAB还提供了对图像处理功能,使用户可以利用提供的内部函数对外部图形进行操作,如图形格式的转换、图形属性的实地调整、图形定制输出等,实现对图形深层次的控制,这也是MATLAB语言在图形处理方面强大功能的体现。图形矢量化即是将原有的图像格式的图形(如BMP格式的位图),将其转变成由坐标和相应的点、线面、的定义。这样不仅可以大量的节约磁盘空间,方便调用,且提高了图形的修改转换等操作功能,使图形可重复利用。在MATLAB环境下调用外部图形的函数为imread,通过该函数可以把其它格式的图形转换为MATLAB可识别的格式类型对应的存储格式可变成一个点位矩阵,利用MATLAB的矩阵处理功能,结合其提供的有关线型处理的内部函数,即可实现对位图的数字化,因而,利用MATLAB进行图形矢量化是完全有可能的4。1.5.2使用MATLAB进行图像矢量化的精度分析数据一般以两种形式记录,一种是表格,另一种是曲线。不管是表格数据还是曲线数据,数据都是通过实验测量所得的,而实验测量时,数据是离散的,所以数据的记录不可能是连续的,表格记录即是把数据直接记录或者筛选后记录下来。而曲线则是把离散的点用一条光滑的曲线连接起来。这样,实际上,曲线上的数据并非实际所有的准确数据,但是曲线的变化趋势是准确的,因此可以认为曲线数据是正确的。另外,在查询表格中,往往会遇到所需要查询的数值在表格中不存在的问题。这个时候通常采用插值法,利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值。在精度要求不高的情况下,直接使用两个相邻的值的中值作为函数f(x)的值代替即可。所以 ,在查询数据时,并不一定要求准确,而是要求所查询的数值在可以接受的误差以内。查询曲线时,通常是使用直尺等工具测量曲线,得到的也是近似值。而且由于视线误差、工具的误差,查询结果也不是图线上的值。本文所采用的拟合曲线的方法,对图片预处理后,删除曲线的坐标轴的网格线时会删除一部分曲线上的数据。由于删除的数据相对曲线本身来说可以忽略不记,因此对曲线的总体变化趋势没有影响。而且,曲线矢量化后,依靠计算机来查询数据,可以避免由于人工查询引起的各种误差,查询所得的数据值必然是曲线上的准确值。查询精度比人工查询图线要高。1.6图像处理1.6.1数字图像用计算机进行图像处理和前提是图像必须以数字格式存储。我们把以数字格式存储的图像称为数字图像。数字图像由二维元素组成,每一元素具有一个特定的位置(x,y)和幅值f(x,y),这些元素就称为像素。像素组成的二维排列 可以用矩阵表示。对于单色(灰度)图像而言,每个像素和亮度用一个数值来表示,通常数值范围为0,255,0表示黑、255表示白,其他值表示处于黑白之间的灰度。彩色图像可以用红、绿、蓝组成的二维矩阵来表示。R代表红色,G代表绿色,B代表蓝色,三种色彩叠加形成了其他的色彩。通常二维矩阵的每个数值也是在0到255之间,0表示在该像素中没有相应的颜色,255则代表相应的基色在该像素中取得最大值5。数字图像处理的特点:1.再现性好。数字图像处理与模拟图像处理的根本不同在于,它不会因图像的存储、传输或复制等一系列变换操作而导致图像质量的退化。只要图像在数字化时准确地表现了原稿,则数字图像处理过程始终能保持图像的真实再现。2.处理精度高。按目前的技术,几乎可将一幅模拟图像数字化为任意大小的二维数组,这主要取决于图像数字化设备的能力。现代扫描仪可以把每个像素的灰度等级量化为16 位甚至更高,这意味着图像的数字化精度可以满足任一应用需求。从原理上讲不论图像的精度有多高,处理总是能实现的,只要在处理时改变程序中的数组参数就可以了。3.适用面宽。图像可以来自多种信息源。从图像反映的客观实体尺度看,可以小到电子显微镜图像,大到航空照片、遥感图像甚至天文望远镜图像。这些来自不同信息源的图像只要被变换为数字编码形式后,均是用二维数组表示的灰度图像组合而成,因而均可用计算机来处理。4.灵活性高。由于图像的光学处理从原理上讲只能进行线性运算,极大地限制了光学图像处理能实现的目标;而数字图像处理不仅能完成线性运算,且能实现非线性处理,即凡是可以用数学公式或逻辑关系来表达的一切运算均可用数字图像处理实现。5.信息压缩的潜力大。数字图像中各个像素是不独立的,其相关性大。在图像画面上,经常有很多像素有相同或接近的灰度。就电视画面而言,同一行中相邻两个像素或相邻两行间的像素,其相关系数可达0.9 以上,而相邻两帧之间的相关性比帧内相关性一般说还要大些。因此,图像处理中信息压缩的潜力很大6。但是,数字图像的数据量庞大。处理需要计算机有足够的内外存空间,而且处理精度越高,所需要储存空间越大。庞大的数据量,对图像的存储、传输和处理都带来了困难7。1.6.2矢量图像矢量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的。矢量图也称为面向对象的图像或绘图图像,繁体版本上称之为向量图,是计算机图形学中用点、直线或者多边形等基于数学方程的几何图元表示图像8。矢量图优点:1.文件小,图像中保存的是线条和图块的信息,所以矢量图形文件与分辨率和图像大小无关,只与图像的复杂程度有关,图像文件所占的存储空间较小。2.图像可以无级缩放,对图形进行缩放,旋转或变形操作时,图形不会产生锯齿效果。3.可采取高分辨率印刷,矢量图形文件可以在任何输出设备打印机上以打印或印刷的最高分辨率进行打印输出。矢量图缺点:最大的缺点是难以表现色彩层次丰富的逼真图像效果。相对于数字图像,矢量图像有明显的优势。早在上个世纪70年代,国外就一些公司、大学就花费了大量的人力、物力、财力来研究,但是由于当时计算机理论技术的不成熟,计算机处理速度的限制,扫描技术的制约,矢量化技术研究的进程缓慢。如今,矢量化技术已经有了很好的发展条件,计算机处理速度急剧上升,扫描技术不断完善。矢量化技术将会快速发展。1.6.3数据提取与数据拟合本文主要研究的是曲线图像的数据提取和曲线图像的拟合,并不需要表现色彩的效果。查询的曲线一般都是黑白的,对于彩色的图像,还必须先将其转变灰度图像。因为所需的数据是曲线数值信息,与图像的表现效果没有关系。一般情况,数据绘制成曲线后以数字图像保存起来,但是如果保存成矢量图会有很大的好处,本文研究的目的是使图像曲线能以公式的形式存在,解决的是查询图像效率低下,过程繁琐,精度不高的问题。因此,针对这类科技图像,本文利用MATLAB编写了以下程序,意在使查询自动化。1.7技术路线本文图像矢量化的思路:读入图像图像灰度化图像二值化计算两坐标轴的比例尺删除两坐标轴的网格线对曲线取值使用多项式对提取的数值进行拟合显示拟合图像查看拟合图像的符合程度若符合要求则结束,不符合要求则改变拟合阶次再进行拟合直到符合要求第二章 科技图像矢量化2.1总体方案第一步:矢量化图像必须先把RGB图像转化成灰度图像。第二步:选择合适的阀值把灰度图像二值化。第三步:求出坐标轴的比例尺。第四步:删除坐标轴及坐标网格。第五步:提取曲线数据。第六步:曲线拟合。第七步:查看曲线拟合程度,若不符合要求,改变拟合方式重新拟合,直至符合要求。 读入图像并把图像二值化计算坐标轴比例尺删除坐标轴方向网格线提取曲线数据并利用比例尺修改数据利用函数进行多项式拟合并预测Y轴坐标值NY改变阶次分别使用原数据、预测数据绘制图像,对比图像查看拟合程度达到符合要求输出多项式系数,得到矢量化公式2.2流程图图21 流程图2.3图像二值化本文研究时所使用的图像如下:图22 扫描原图像图像是普通数字图像。人眼视网膜中存在着对不同光谱(红、绿、蓝)敏感的三种锥状细胞,由这三种锥状细胞,人类产生自然界所有彩色的感知觉。科学实验与分析表明,自然界里常见的各种色光都可以由红、绿、蓝三种色光、按不同比例相配二成,同样,绝大多数色光也可以分解成红、绿、蓝三种色光。这便是色度学中的最基本原理三基色原理。三基色的选择不是唯一的,也可以选择其他三种颜色为三基色。但是三种基色必须是相互独立的,即任何一种颜色都不能由其他两种颜色合成9。在MATLAB中,每张图片点分别为红、绿、蓝三个矩阵,即RGB图像。每种颜色都有256个亮度水平极,矩阵中的值就为0到255。因为曲线拟合所需要是的二值图像。所以要二值化。先把图像读入图MATLAB软件中,图像在MATLAB中以矩阵形式存在,再把图像转化成灰度图,然后二值化。程序如下:a=imread(C:UsersliangDesktopMATLAB2010b623.jpg);figure(1);imshow(a);b=rgb2gray(a);figure(2);imshow(b);m n=size(b);ma=max(max(b);mi=min(min(b);limen=(ma+mi)/2;c=(b(limen-50);figure(3);imshow(c);图像经过二值化处理后,在MATLAB中以0、1矩阵形式储存,为之后的工作做准备,这个过程是对图像的预处理。编辑程序时首先选用矩阵数值中的最大值和最小值取取中值作为阀值,运行后,发现显示图像结果不理想,于是把阀值减小,达到需要的效果。当阀值太大时,许多不必要的数据被保留下来,非曲线数据保留过多会对拟合产生影响;当阀值减小时,虽然可能会误删掉曲线上的一些数据,但曲线数据整体变化趋势不受影响,因而对后期数据拟合没有负面影响。所以阀值选择应当小些。运行程序后得到以下图像:图23 原图象图24 灰度图像图25 二值化图像2.4求坐标比例尺MATLAB以矩阵数据读取图片,对于灰度图像,每个像素点就是一个数据。当转化为二值图像后,数据就是0和1,0表示黑色,1表示白色。MATLAB无法自动识别图像自身的比例尺,只能识别出一个个的像素,一个像素作为一个单位,所以必须求出每个像素点所代表的具体长度,把像素点折算成真实的比例尺。2.4.1Y轴方向比例尺在Y轴方向上合理选取一条直线,本文选择的是X620的直线。直线穿过所有X轴方向的坐标网格,与每条X轴方向的坐标网格线有一个交点,利用程序记录下每个交点的Y值。因为每一条网格线不只是一个像素点,不能直接取值,采用以下方法解决:1.从下至上对X620直线扫描,记录下所以与X轴方向坐标网格线的交点的数据u1。2.由于坐标网格线非常细,而且网格线之间的间隔很大,所以按照每个间隔把坐标网格线分成若干组,每组的数据是相连的。我们记录每组数据中最小的一个v1。3.把记录的数据加起来,除以间隔数。求得间隔间的像素个数。4.对求得的数据圆整。程序如下:程序1:记录交点数据u1i=1;k=1;j=620;for i=1:m if c(i,j)=0 u1(k)=i; k=k+1; endend程序2:计算Y轴比例尺j=1;x=k-2;v1(1)=u1(1);for i=1:x if u1(i+1)-v1(j)25 j=j+1; v1(j)=u1(i+1); endendsum1=0;for i=1:j-2 sum1=sum1+v1(i+1)-v1(i); endbiy=sum1/(j-2);biliy=round(biy)运行以上程序求得Y轴比例尺biliy =33 biliy=33表示两坐标网格线内有33个像素点,即在MATLAB中对应有33个数据,从图22中可以看到纵坐标两网格间的值是5N。所以纵坐标比例尺为5/33(N)每像素点。关于直线的选取,这里本文选择的是X620.图像中不仅有坐标网格,还存在曲线,因此,记录交点数据u1时程序会把与曲线的交点也记录在内,这种交点是不应该记录的,但是交点的存在不可避免。因此,选择直线时尽量选择那些直线与曲线交点和直线与坐标网格交点相近的直线,以减少不必要的误差。另外,可以通过改变记录数据v1的判断来减小误差。v1的判断标准是:u1(1)即是v1(1),此后若u1(i+1)-v1(j)25,即u1(i)减去循环内上一步所得的v(j)差值大于25就记录v的值。把数值设置得大些就可以避免穿过两坐标网格线的曲线被记录。但是数值不能大于两坐标网格线距离,否则会有网格线不能被记录。2.4.2X轴方向比例尺利用同样的方式,在X轴方向上合理选取一条直线,本文选择的是Y307的直线。直线穿过所有Y轴方向的坐标网格,与每条Y轴方向的坐标网格线有一个交点,利用程序记录下每个交点的X值。步骤如下:1.从左至右对Y307直线扫描,记录下所以与Y轴方向坐标网格线的交点的数据u2。2.由于曲线非常细,而曲线之间的间隔很大,所以按照每个间隔把曲线分成若干组,每组的数据是相连的。我们记录每组数据中最小的一个v2。3.把记录的数据加起来,除以间隔数。求得间隔间的像素个数。4.对求得的数据圆整。程序如下:程序1:记录交点数据u2j=1;k=1;i=307;for j=1:n if c(i,j)=0 u2(k)=j; k=k+1; endend程序2:计算X轴比例尺j=1;x=k-2;v2(1)=u2(1);for i=1:x if u2(i+1)-v2(j)30 j=j+1; v2(j)=u2(i+1); endendsum2=0;for i=1:j-2 sum2=sum2+v2(i+1)-v2(i); endbix=sum2/(j-2);bilix=round(bix)运行以上程序求得X轴比例尺bilix =50bilix=50表示两坐标网格线内有50个像素点,即在MATLAB中对应有55个数据,从原图可以看到纵坐标有两网格间的值是1mm。所以纵坐标比例尺为1/50mm每像素点。直线的选取方式和Y轴时一样。2.5删除坐标轴及坐标网格取值的时候必须是纯粹的曲线,否则其他数据会对拟合造成干扰。因为图像上有坐标网格线,必须先将其删除。删除的方式有很多种1.对图像矩阵全盘扫描,把曲线以外的部分全部置为1,即白色。这种方法实现比较困难,困难之处在于要区分曲线和网格线;另外,因为要对图像矩阵全盘扫描,所以花费的时间比较长,对于数据量大的图像来说,扫描时间所占的比例就不能忽视了。2.对特定的区域直接置1。之前已经通过程序求得了比例尺,求得了网格线之间的像素点个数,利用这个数据,可以把网格线所在的行和列全部置1,因为网格线不仅仅是一个像素点,所以把v1、v2扩大,即把v1、v2附近的行和列全部删除。这样,完全可以省去区分曲线和坐标网格线的程序,而且,仅对特定的行和列扫描置1,相对而言,计算量小得多,并可以省去很多时间。当然直接删除特定的行和列必然会对原有曲线造成影响,曲线会因为这个操作变得分段,但这对于曲线变化趋势没有影响,对曲线的拟合来说影响不大。基于上述原因,我们选择第二种方案。2.5.1删除X轴网格线程序如下:for i=1:17 for x=(v1(i)-3):(v1(i)+2); for j=1:n; c(x,j)=1; end endendimshow(c);运行程序得到图像图26 删除X轴网格线图像2.5.2删除Y轴网格线程序如下:for j=1:15 for x=(v2(j)-2):(v2(j)+3); for i=1:m; c(i,x)=1; end endendimshow(c);运行程序得到图像图27 删除X、Y轴网格线图像 可以看到,删除了X轴和Y轴网格线后,图像只剩下曲线,曲线变得间断,但曲线的变化趋势没有受到影响,曲线的拟合结果不会受到影响。2.6提取曲线数据删除坐标网格线,为数据的提取做好了准备。使用find函数提取图像矩阵剩余的数据。Find函数可以查找出图像矩阵中的非零元素。因为Find函数查找的是非零元素,所以必须先将图像取反。由于曲线在每行每列上不是单个像素组成的,而我们只需要在每行每列上保留一个数据。解决方法有几种:1.先把曲线细化,再取值。2.取得曲线上某一条轨迹来代替曲线,例如曲线的上表面、下表面、中心线。 若选用方案一,先把曲线细化再取值,试验发现细化过程比较困难,不容易实现。若选用方案二,使用曲线上的一条轨迹来代替曲线本身,若使用中心线,结果比较精确,但过程复杂,且不容易找出中心线,而且,当曲线在行和列方向上像素点数量为偶数时,不存在中心线,若选择使用上表面或者下表面,则会造成拟合曲线不精确,拟合的结果为曲线上一条轨迹,选用上表面时拟合结果偏大,选择下表面时,拟合结果偏小。由于拟合曲线的对曲线的精确度要求不高,考虑到细化的困难程度,本文选用方案二,并选择使用曲线的上表面代替曲线。MATLAB中find函数查找元素的时候是先按列查找,再每列由上至下顺序查找。因此查找出的元素列的值与图像上原有的坐标系不同。原图像坐标系Y轴正方向自下而上,MATLAB中坐标系Y轴正方向自上而下。所以find函数求出来的列坐标需要换算。换算方法是用图像在列方向上的总长度减去求得的坐标值。程序如下:d=c;x,y=find(d);i=1;t=size(x);for k1=2:t if x(k1-1)-x(k1)=0; x1(i)=x(k1-1); y1(k1-1)=y(k1-1); i=i+1; end endy1(find(y1=0)=;x2=m-x1; 运行程序后得到:X轴坐标y1 Y轴坐标x1数值取反后图像: 图28 数值取反图像 Find函数:用于找到非零元素的索引和值语法:1. ind = find(X)2. ind = find(X, k)3. ind = find(X, k, first)4. ind = find(X, k, last)5. row,col = find(X, .)6. row,col,v = find(X, .)说明:1. ind = find(X) 找出矩阵X中的所有非零元素,并将这些元素的线性索引值(linear indices:按列)返回到向量ind中。如果X是一个行向量,则ind是一个行向量;否则,ind是一个列向量。如果X不含非零元素或是一个空矩阵,则ind是一个空矩阵。2. ind = find(X, k) 或 3. ind = find(X, k, first)返回第一个非零元素k的索引值。k必须是一个正数,但是它可以是任何数字数值类型。 4. ind = find(X, k, last)返回最后一个非零元素k的索引值。 5. row,col = find(X, .)返回矩阵X中非零元素的行和列的索引值。6. row,col,v = find(X, .)返回X中非零元素的一个列或行向量v,同时返回行和列的索引值。如果X是一个逻辑表示,则v是一个逻辑矩阵。输出向量v包含通过评估X表示得到的逻辑矩阵的非零元素。2.7曲线拟合曲线拟合步骤:1.按照比例尺转换数据,MATLAB读取的数据值是按照图像像素读取的,需要先转换原图像比例才能拟合成要求的曲线。2.使用ployfit把提取的数据还原成曲线,查看还原情况。3.使用ployval函数预测曲线坐标Y方向的值。4.使用plot函数把预测值绘制成曲线5.使用plot函数把原数据绘制的图像和预测值绘制的图像做对比,查看拟合曲线的符合程度。拟合曲线所使用的是polyfit函数,即多项式拟合函数。Ppolyfit(x,y,n)其中x为源数据点对应的横坐标,可为行向量、矩阵,y为源数据点对应的纵坐标,可为行向量、矩阵,n为你要拟合的阶数,一阶直线拟合,二阶抛物线拟合,并非阶次越高越好,看拟合情况而定。理论上,n+1个数据点可以唯一地确定n阶多项式。实际上,如果多项式的阶数过高,虽然数据点上看到效果好,但数据点之间会出现数据振荡的问题,而且计算时间长;但如果阶数选择得过小,则拟合效果不好。因此应合理选择阶数。polyfit函数:p=polyfit(x,y,n)在最小二乘意义上,将数据y(i)拟合为n阶多项式这p(x(i),并返回多项式。结果p是长度为n+1的行向量,n阶多项式的形式为p,S=polyfit(x,y,n)返回多项式系数p和结构S。S用于polyval()函数,可进行行误差估计或预测。如果数据y的误差服从方差为常数的独立正态分布,则函数polyval()产生的误差估计至少包含50%预测。polyval函数:功能:多项式预测。Ypolyval(p,x),Y,DELTApolyval(p,X,S)说明:Ypolyval(p,x)返回给定系数p的多项式在X处的预测值。Y,DELTApolyval(p,X,S)用于polyval()的可选输出S给出误差估计,YDELTA。如果polyval()的输入数据y的误差服从方差为常数的独立正态分布,则函数polyval()产生的误差估计YDELTA至少包含预测值的50%。如果p是向量,其向量其元素为按幂给出的多项式系数,则polyval(p,X)为X处多项式的预测值。如果X为举证或向量,则给出X的每个元素处的预测值10。曲线拟合程序:y1=y1/bilix;x2=5*x2/biliy;p=polyfit(y1,x2,10);p,s=polyfit(y1,x2,10);figure(1);plot(y1,x2);grid on;x3=0:0.1:n/bilix;y3=polyval(p,x3);figure(2);plot(x3,y3);grid on;figure(3);plot(x3,y3,y1,x2);grid on;曲线拟合采用的是10阶多项式拟合。运行程序得到原数据还原图像29、拟合曲线图像210、拟合前后对比图像211图29 原数据还原曲线图210 拟合曲线图像图21

温馨提示

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

最新文档

评论

0/150

提交评论