控制图时间序列数据集_提取时间序列数据

从纸上提取数据如何做到?

我发现关注我的这个公众号的有很多是学习时间序列的,那肯定有很多人看过这本书:

79fd55e06747c3aab758b463aa70bca1.png

但是这本书有个缺点就是数据没办法下载,都是被打印成表格或者图像,有的是没有数据的。当时就感觉如果要是能从图像中将数据抠出来,那么或许还行。但是限制于代码能力,一直没成功过。后来在知乎上看了一个叫打浦桥程序员(https://www.zhihu.com/people/da-pu-qiao-cheng-xu-yuan)写的一个软件叫薅Curve。这个软件是基于matlab写的一个可以从图像中提取数据。他使用Matlab简直到了让我羡慕的地步,虽然不使用Matlab,但是感觉他写那个代码的精神让我佩服、震撼。

ea52bef4f2b80deab27d0a737dc1a1b5.png

然鹅写这个文章也不是为了夸他的,我看着他用的这个Matlab做了这么酷的事情,我也就用python搞了一个,哈哈哈哈。但是目前还不成熟(肯定是和他的没法比)。但是也就相当于一个入门版,后面我会不断的完善这个软件。

实例说明:

在上面那个书里面的第264页有这样的一个图:

71251206dbc78d736634fd3c1c3fe6f1.png

如果我想提取这个图怎么做:

第一步先将它导入:

import imageioimport matplotlib.pyplot as pltimport numpy as npfrom scipy.ndimage import convolve%matplotlib notebook img = imageio.imread('图像 6.jpeg')# img = imageio.imread('截屏2020-11-18 下午3.56.33.png')if img.shape[2] == 4:    img = img[:, :, :3]img.shape

然后可视化:

3a900619800db781070ccf8d02277c6d.png

接下来是将这个rgb图转换成灰色图像,用于后面处理,并画出这个图像的直方图:

bbd701ae2576bf881d51ed781b229b35.png

然后我设置一定的范围,对像素点筛选:

dd81a11cc613d8cc318a1903b107000f.gif

被赛选后的点仍然包含大量的不相关的点,比如坐标等,这个时候使用matplotlib套索工具,将需要的点给他圈出来:

de5d770335765634f3a97d9637a59614.gif

上面的套索设置好范围后,接下来就是筛选哪些点在这个范围内。使用python一些gis包就可以做到。

然后再将真实的点和虚拟的点的坐标关联起来,通过转换,即可达到提取到真实的数据:

5a0b14c32f870e79718e5015457144b4.png

当然,这目前还是第一版本的,后面继续更新,目前代码不会放出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值