海外留学网站建设方案,wordpress 引用来源,商业网站的设计与推广系统,河北营销类网站设计【论文党福利】如何提取图像中的数据 从事科研的老师和同学们在撰写论文时#xff0c;经常需要将文献中的曲线与自己的结果进行对比#xff0c;为获取原始数据#xff0c;最靠谱的方法当然是找原作者要。如果没有要到呢#xff1f;本文将成为论文党的福利#xff0c;为你…【论文党福利】如何提取图像中的数据 从事科研的老师和同学们在撰写论文时经常需要将文献中的曲线与自己的结果进行对比为获取原始数据最靠谱的方法当然是找原作者要。如果没有要到呢本文将成为论文党的福利为你提供你两种解决方案均是用matlab实现的。 一种办法是编写一个GUI程序将待扣取数据的图像绘制到屏幕上再配合一些放大、拖拽等功能通过手动描点的方法来得到结果我们称作描点法。 另一种方法根据你待获取数据的曲线中的一些规律编写一个从图像中扣取数据点的程序。相比手动描点方法带来的随机误差这种方法得到的结果比较精确但也许需要你根据实际问题来调整代码或者配置文件。 第一种方法源于网上比较流行的一个手动描点小程序。第二种方法是我在解决实际问题时编写出来的本文将只介绍第二种方法如何实现两种方法的程序均免费提供获取途径见文末。 ----------------------------------------------华丽分割线------------------------------------------------------ 直接进入主题我面临到这样一个问题老师希望我能获取到下面一幅图像中的数据以便能够和自己得到的结果进行对比。图像如下所示 为了我们写出的程序能够尽量用在更多的场合需要提取一些普遍的原理出来就像上面一副图像我们待提取数据的图像有这些特点 图形中曲线一般有特定的颜色加以区分比如红色。 图中可能出现多个曲线需要提取。 一般情况待提取数据的曲线出现的位置是不固定的但我们根据实际背景很容易确定一个提取曲线的横坐标范围。 通常我们只需在X轴进行等距提取就可以了。 总的来说图像就是一个矩阵矩阵的每个元素对应一个像素其实就是一种颜色。我们只需要告诉程序我们要提取XX0时的函数值Y0程序要做的也仅仅是沿着X0对应的矩阵的那一列从函数值低的方向向函数值高的方向去寻找是否到达了曲线上的点这样就可以达到提取数据点的功能。 再结合上面的分析我们的程序从设计的角度建立了下述的一些逻辑来尽可能的让我们的程序能够处理大多数的图像提取问题。阅读了下面这些细节你将能对整个程序的大体框架有很好的理解并且能针对具体问题进行针对性的调整。 1.如何批量处理 为了能够提高效率我们需要批量处理其实很简答我们需要一个ImageList.txt文件来告诉程序都有哪些图像需要处理。文本文件内部结构如下图所示2.遍历矩阵时当前判定点是否是曲线上的点 这很好处理使用当前像素的颜色也就是R、G、B三原色的取值来判定。例如上图中我们待提取曲线是红色的我们只需判断矩阵中的每个元素是否为红色也就是(25500)。实际使用时我添加了一个阈值来防止图中的曲线颜色看起来是红色但其实不是正红也就是数值接近红色但有区别的情况比如颜色是(250,10,5)。 3.等距提取 我们的程序使用在X轴上等距提取数据点的方法这更符合我们的需求。你只需要告诉程序你要提取点的范围和等距提取多少个点。 4.如何确定坐标轴范围 这里我们又需要配置一个Axeslist.txt文件来告诉程序每幅图像中的坐标轴范围以便程序能够在矩阵索引值和实际坐标轴坐标间进行换算。该文件如下图所示需要注意的是每行代表一幅图像的坐标轴范围信息其内容要与ImageList.txt中列出的图像一一对应。 5.如何确定提取范围 这里我们又需要配置一个ExtractPointsList.txt文件来告诉程序需要提取点的范围是什么每个范围内等距分为多少份该文件如下图所示每行代表一幅图像的取点范围及个数信息同样地其内容要与ImageList.txt中列出的图像一一对应。 配置好了上面所介绍的三个.txt文件剩下的工作交给程序来完成就好了。运行的结果会保存在当前目录下就像这样以保存的文件结果Result1为例使用如下一行代码即可将结果提取出来 load Result1 Result 最后就可以将提取的论文中的结果和我们自己的比对着试试了 效果还不错快试试吧~ ------------------------------------------------华丽分割线---------------------------------------------------- 另一种描点法的程序是我在网上找到的。 本文介绍方法的源代码是我自己编写的。 我打包在了一起下载链接 另外欢迎大家关注我们团队的微信公众号LSGO软件技术团队