日常积累6:提取并拟合图片中的曲线

时间:2024-03-22 14:22:08

现在有一张带曲线的图片,但没有原始数据,现想提取其中曲线的数据并拟合出公式,该怎么做呢?下面采用Getdata软件进行曲线数据的提取,并根据这些数据简单用MATLAB的工具箱进行曲线的拟合。

一、数据提取

我所用的版本较低,好像不支持导入png的图片,如果手里的图片格式为png,可以用ps等软件将图片格式转化为Getdata软件可以导入的格式,如tif格式。

假定现在有一张图片如下

日常积累6:提取并拟合图片中的曲线

  • 在getdata软件中导入图片。File-Open Image

  • 选择要提取数据的曲线。为便于软件识别,需要设置曲线颜色(Operations-Set line color)和背景色(Operations-Set backgroud color)。用鼠标点击对应曲线和图片背景即可,软件自动识别,点确定。

  • 设置坐标轴。Operations-Set the scale,依次用鼠标点击并输入:x轴最小值、x轴最大值、y轴最小值、y轴最大值。当然不一定是严格的最小,只要是点击的位置和图上坐标轴的刻度一致即可。对于非线性刻度坐标轴(如对数刻度,我还不清楚怎么做)

日常积累6:提取并拟合图片中的曲线

  • 获取数据,这里提供两种方法,一是手动逐点点击,二是自动打点

    • 手动点击:Operations-Point capture mode,用鼠标点击曲线上的点即可,点击的越密集,采集的数据越多。

      为了更加精确的点击,可以先用鼠标点击要打点的位置(注意不要选中Operations-Point capture mode),然后在放大框中双击鼠标左键点击打点,再次双击这个点可以取消这个点。将这条线上的点打好(打多少个就取决于个人了),就会在数据框显示我们打的点。

    日常积累6:提取并拟合图片中的曲线

    • 自动打点:如果曲线光滑度较高,手动打点很麻烦,可以选择自动打点,Operations-Digitize area,默认值可以不变,选择数据区域(拖动鼠标选中即可),软件就会自动识别曲线(第二步中选择的那个曲线)上的点及坐标,之后可以针对个别点进行取消和添加,使得数据点更准确即可,注意:对数据取消和添加会使得数据框里数据顺序不一定是按照x轴坐标升序排列,需要点击数据框中的x即可。
      日常积累6:提取并拟合图片中的曲线日常积累6:提取并拟合图片中的曲线日常积累6:提取并拟合图片中的曲线
  • 数据导出。File-Export data,这里选择了.txt格式保存,也可以选其他格式。

1.可以看出,既然能提取数据,当然也能用这种打点的方式计算结构图的尺寸,当然前提是有一个参考尺寸

2.如果想大面积消除数据点,可以Operations-Data points eraser,用橡皮擦擦除图上的数据点即可

3.其余功能(如自动追踪等)大家慢慢探索,很简单

二、曲线拟合

基于MATLAB的工具箱进行。

  • 将上面保存的数据文件导入到工作空间,横纵坐标变量名设为x,y。

日常积累6:提取并拟合图片中的曲线

  • 拟合公式,填入坐标数据名,选择拟合公式类型及相关参数,查看结果及效果。虽然曲线为余弦,但这里可见,用多项式也可拟合,具体选择哪种,针对具体情况具体选择即可。

日常积累6:提取并拟合图片中的曲线

拟合类型:

名称 含义
Custom Equations 用户自定义函数
Expotential 指数函数
Fourier 傅立叶函数
Gaussian 正态分布函数,高斯函数
Interpolant 插值函数
Polynomial 多项式函数
Power 幂函数
Rational 有理函数
Smooth Spline 光滑样条插值
Sum of sin functions 正弦函数类
Weibull 威布尔函数

如果要对拟合的曲线进行编辑,可以选择如下

日常积累6:提取并拟合图片中的曲线

在新打开的图片窗口进行后续编辑即可。

如有错误,欢迎指出。

今之文人:鲁国孔融文举、广陵陈琳孔璋、山阳王粲仲
宣、北海徐干伟长、陈留阮瑀元瑜、汝南应玚德琏、东
平刘桢公干,斯七子者,于学无所遗,于辞无所假,
以自骋骥騄于千里,仰齐足而并驰

—–三国魏·曹丕《典论·论文》