【论文党福利】如何提取图像中的数据

2023-11-17

【论文党福利】如何提取图像中的数据

     从事科研的老师和同学们在撰写论文时,经常需要将文献中的曲线与自己的结果进行对比,为获取原始数据,最靠谱的方法当然是找原作者要。如果没有要到呢?本文将成为论文党的福利,为你提供你两种解决方案,均是用matlab实现的。
     一种办法是编写一个GUI程序,将待扣取数据的图像绘制到屏幕上,再配合一些放大、拖拽等功能,通过手动描点的方法来得到结果,我们称作描点法。
     另一种方法,根据你待获取数据的曲线中的一些规律,编写一个从图像中扣取数据点的程序。相比手动描点方法带来的随机误差,这种方法得到的结果比较精确,但也许需要你根据实际问题来调整代码或者配置文件。
     第一种方法源于网上比较流行的一个手动描点小程序。第二种方法是我在解决实际问题时编写出来的,本文将只介绍第二种方法如何实现,两种方法的程序均免费提供,获取途径见文末。
----------------------------------------------华丽分割线------------------------------------------------------
     直接进入主题,我面临到这样一个问题,老师希望我能获取到下面一幅图像中的数据,以便能够和自己得到的结果进行对比。图像如下所示:

     为了我们写出的程序能够尽量用在更多的场合,需要提取一些普遍的原理出来,就像上面一副图像,我们待提取数据的图像有这些特点:
     图形中曲线一般有特定的颜色加以区分,比如红色。
     图中可能出现多个曲线需要提取。
     一般情况待提取数据的曲线出现的位置是不固定的,但我们根据实际背景很容易确定一个提取曲线的横坐标范围。
     通常我们只需在X轴进行等距提取就可以了。

     总的来说,图像就是一个矩阵,矩阵的每个元素对应一个像素,其实就是一种颜色。我们只需要告诉程序我们要提取X=X0时的函数值Y0,程序要做的也仅仅是沿着X0对应的矩阵的那一列从函数值低的方向向函数值高的方向去寻找是否到达了曲线上的点,这样就可以达到提取数据点的功能。
     再结合上面的分析,我们的程序从设计的角度建立了下述的一些逻辑,来尽可能的让我们的程序能够处理大多数的图像提取问题。阅读了下面这些细节,你将能对整个程序的大体框架有很好的理解,并且能针对具体问题进行针对性的调整。
     1.如何批量处理?
     为了能够提高效率,我们需要批量处理,其实很简答,我们需要一个ImageList.txt文件来告诉程序都有哪些图像需要处理。文本文件内部结构如下图所示:

     2.遍历矩阵时,当前判定点是否是曲线上的点?
     这很好处理,使用当前像素的颜色,也就是R、G、B三原色的取值来判定。例如,上图中,我们待提取曲线是红色的,我们只需判断矩阵中的每个元素是否为红色,也就是(255,0,0)。实际使用时我添加了一个阈值,来防止图中的曲线颜色看起来是红色,但其实不是正红,也就是数值接近红色但有区别的情况,比如颜色是(250,10,5)。
     3.等距提取
     我们的程序使用在X轴上等距提取数据点的方法,这更符合我们的需求。你只需要告诉程序你要提取点的范围和等距提取多少个点。
     4.如何确定坐标轴范围?
     这里我们又需要配置一个Axeslist.txt文件来告诉程序每幅图像中的坐标轴范围,以便程序能够在矩阵索引值和实际坐标轴坐标间进行换算。该文件如下图所示:

     需要注意的是,每行代表一幅图像的坐标轴范围信息,其内容要与ImageList.txt中列出的图像一一对应。
     5.如何确定提取范围?
     这里我们又需要配置一个ExtractPointsList.txt文件来告诉程序需要提取点的范围是什么?每个范围内等距分为多少份?该文件如下图所示:

     每行代表一幅图像的取点范围及个数信息,同样地,其内容要与ImageList.txt中列出的图像一一对应。

     配置好了上面所介绍的三个.txt文件,剩下的工作交给程序来完成就好了。运行的结果会保存在当前目录下,就像这样:

     以保存的文件结果Result1为例,使用如下一行代码即可将结果提取出来:
     load Result1 Result


     最后就可以将提取的论文中的结果和我们自己的比对着试试了:

     效果还不错!快试试吧~
------------------------------------------------华丽分割线----------------------------------------------------
     另一种描点法的程序是我在网上找到的。

     本文介绍方法的源代码是我自己编写的。

     我打包在了一起:下载链接

     另外,欢迎大家关注我们团队的微信公众号:LSGO软件技术团队

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【论文党福利】如何提取图像中的数据 的相关文章

随机推荐

  • Python环境—打包

    两个步骤完成python环境打包 1 打包 pip install conda pack conda activate py38 conda pack n py38 在当前路径生成py38 tar gz 2 移植 在另一台电脑 conda的
  • 大数据腾讯TEG面经——凉经

    一面 很多原理和计算机基础 c 1 反转链表和两个字符串最大公共子串 2 osi的七层和什么的四层 3 tcp和udp 三次握手 4 进程和线程区别 5 hadoop分布 zookeeper选举 6 hive和hbase区别 hbase都是
  • 基于 UML 的业务建模举例

    基于 UML 的业务建模 2011 05 30 作者 杨敏强 来源 网络 简介 对于管理流程咨询项目 大型信息化建设项目和套装管理软件实施项目 对业务环境的分析和理解对项目的成功至关重要 系统 全面理解 IT 系统所处的业务环境 可以帮助
  • FTP UPLOAD

    First you should add the following directives Listing 1 Directives using System Net using System IO The following steps
  • Linux 和uboot下dd命令读写sd,mmc,mm读写内存命令

    Linux 和uboot下dd命令读写sd mmc名 mm读写内存命令 记录一下 后面写
  • linux学成之路(基础篇)(十)网络和网络协议

    目录 一 概述 一 网络 二 功能 三 网络类型 四 概念 一 网络协议标准 二 IEEE 802局域网标准 三 网络常见设备 四 网络扩朴结构 五 数制介绍 一 十进制 二 二进制 三 八进制 四 十六进制 二 网络协议 一 分层模型 一
  • Python 生成器 装饰器 闭包 迭代器 元类 gil log 协程 垃圾回收 描述符 property

    迭代器和生成器 在 Python 中 迭代器 Iterator 是一种通过循环访问数据集合的方式 可以逐个访问集合中的元素 而不需要提前将整个集合加载到内存中 Python 中的迭代器通常是基于可迭代对象 Iterable 来实现的 例如列
  • YYF查全部考勤记录

    Controller package com chinasofti fwgl ctrl import java util HashMap import java util List import org springframework be
  • 【限时免费】20天拿下华为OD笔试之【DFS/BFS】2023B-寻找最大价值的矿堆【欧弟算法】全网注释最详细分类最全的华为OD真题题解

    DFS BFS 2023B 寻找最大价值的矿堆 题目描述与示例 给你一个由 0 空地 1 银矿 2 金矿 组成的的地图 矿堆只能由上下左右相邻的金矿或银矿连接形成 超出地图范围可以认为是空地 假设银矿价值 1 金矿价值 2 请你找出地图中最
  • 虚拟空间和服务器,虚拟空间和服务器

    虚拟空间和服务器 内容精选 换一换 Windows场景中 当把源端服务器迁移到华为云后 目的端服务器C盘的已用空间比对应源端服务器C盘的已用空间大至少1GB 而不是与源端服务器C盘的已用空间一致 这正常吗 正常现象 您可通过以下步骤查看原因
  • QVariant类

    QVariant类 QVariant类 demo 三级目录 QVariant类 QVariant类是Qt的共用体union数据类型 不仅能保存很多Qt类型的值 包括QColor QBrush QFont QRect QString及QSiz
  • dnf机械机器人补丁_史无前例!炉石一周内的第三个天梯平衡补丁来了

    大家应该还记得东少之前的一篇关于大铡蟹和鲁莽的实验者的文章吧 天胡的机械牧4费拍下伪装机器人 5费拍下鲁莽的实验者 然后直接无限buff斩杀对面 可惜大家将看不到这个强大可怕的无敌combo了 因为暴雪爸爸今天在官网论坛和Reddit都发表
  • 作好项目经理的12个要点

    1 了解项目管理的背景情况 成为一个成功的项目经理所面临的大部分困难来自于项目经理对公司内部各种挑战的理解和认识 项目是组织的一种特殊形式 它们作为一种机制 促进了一种产品和服务推向市场的效率 但是 它们还迫使项目经理在传统型 职能化的权利
  • 用C语言打印九九乘法表

    运用c语言的分支和循环的知识就可以打印出来9 9的乘法表 效果如图 具体代码 可以深刻理解循环和嵌套循环的应用 int main int i 0 行数 for i 1 i lt 9 i 行数 打印9行 int j 0 列数 for j 1
  • k8s scheduler 调度与 kubelet 启动 Pod 流程总结(四)

    文章目录 scheduler predicate 和 priority 资源需求 把 Pod 调度到指定 Node 上 nodeSelector 亲和性和反亲和性 节点亲和性 Pod 亲和性 污点和容忍度 Controller Manage
  • 【JavaEE初阶】第九节.多线程 (基础篇)定时器(案例三)

    作者简介 大家好 我是未央 博客首页 未央 303 系列专栏 JavaEE初阶 每日一句 人的一生 可以有所作为的时机只有一次 那就是现在 前言 一 定时器概述 二 定时器的实现 2 1 Java标准库 定时器的使用 2 2 自己模拟实现一
  • 使用mysql数据库插入中文全部变成问号

    下午使用MYSQL数据库 插入中文时候全部变成为问号 找了一下午都没有找到合适的答案 有点小伤心 一个小问题耗费这么多时间 后面按照网上的方法改来改去 最后甚至连插入中文都报错 遇到这样的问题 首先先不要着急 肯定是编码的问题 先检查下我们
  • spark写表指定外部表_Spark SQL 之自定义删除外部表

    Spark SQL 之自定义删除外部表 前言 Spark SQL 在删除外部表时 本不能删除外部表的数据的 本篇文章主要介绍如何修改 Spark SQL 源码实现在删除外部表的时候 可以带额外选项来删除外部表的数据 本文的环境是我一直使用的
  • 《万字长文带你解读AIGC》系列之技术篇

    欢迎关注 CVHub 官方微信公众号 前景回顾 Welcome to back 在 万字长文带你解读AIGC入门篇 一文中 我们详细为大家介绍了AIGC的相关概念 背景及其如此火爆的原因 接下来我们将进一步深入探讨AIGC背后的技术栈 作为
  • 【论文党福利】如何提取图像中的数据

    论文党福利 如何提取图像中的数据 从事科研的老师和同学们在撰写论文时 经常需要将文献中的曲线与自己的结果进行对比 为获取原始数据 最靠谱的方法当然是找原作者要 如果没有要到呢 本文将成为论文党的福利 为你提供你两种解决方案 均是用matla