WebPlotDigitizer以及automeris提取图像数据方法,5分钟学会
一、WebPlotDigitizer先容WebPlotDigitizer 是一个基于 web 的工具,用于从图像中提取数据点,特别是从图表、图形和其他数据可视化图像中提取数值数据。它广泛用于科学研究、数据分析和图表转换,将图片中的曲线或散点图等数据转化为可以进一步分析的数值数据。
主要功能:
提取数据:可以或许从各种类型的图表(如线性图、散点图、条形图等)中提取 X、Y 数据点。
坐标轴设置:用户可以通过指定坐标轴的范围和单位来校准图像,确保数据提取准确。
数据导出:支持将提取的数据生存为 CSV 或其他格式,方便用户进一步分析和使用。
支持多种图表类型:支持常见的2D图表,以致是一些比力复杂的图表类型。
平滑和拟合功能:提供一些工具,用户可以对提取的数据进行平滑、拟合或修改。
使用场景:
图像数据恢复:从扫描或拍摄的图像中恢复图表数据(比方,获取纸质图表的数据)。
科研分析:在没有原始数据文件时,科学研究人员可以使用 WebPlotDigitizer 提取图表中的数值数据,进行进一步分析。
数据可视化:从图像中提取数据进行再分析或制作新的可视化效果。
网址:https://automeris.io/
测试版本:v5
二、WebPlotDigitizer使用方法
1、打开WebPlotDigitizer网址,选择Launch v5
注意:因为制作这个网站的是国外研究人员,大概需要翻墙。
2、上传需要提取数据的图片
选择坐标轴类型,假如是提取二维XY坐标,则选择2D XY Axes,然后点标定Calibrate
https://i-blog.csdnimg.cn/direct/0fadf4a894d84e2691a3194a0ab0faf1.png
小Tip:假如不警惕删除了坐标轴,可以在上方菜单栏重新点击Add Axes Calibration。
同理,也可以在菜单栏重新加载图片Load Image/PDF以及生存项目Save project等等
https://i-blog.csdnimg.cn/direct/b6e668e28ef947819941f3ef8f465144.png
3、坐标轴选择及微调
依次选择X1、X2、Y1、Y2坐标轴的四个点,然后重新点击四个点,通过右上角的放大镜窗口进行微调,尽量使得X1和X2的连线保持程度,Y1和Y2的连线保持垂直。
自定义XY坐标轴间距:通过右侧XY Axes Callibration,设置X1、X2、Y1、Y2的起始点,然后点击标定Callibration完成设置,如下图所示。
https://i-blog.csdnimg.cn/direct/23249f5711da4816a6f96053b5dc7ebb.png
4、数据提取
坐标轴设置完成后,就进入到数据提取阶段,数据提取分为自动提取Automatic Extraction和手动提取Manual Extraction,下面分别先容。
a. 自动提取
Automatic Extraction 是一个用于从图像中自动提取数据点的功能,它可以加速提取过程,尤其是当图表数据比力清晰且规则时。
Automatic Extraction 有五个设置框分别为Mask、Box、Pen、Erase、View。
Mask:我还没有搞清晰Mask的详细功能,但Distance 参数控制在提取数据点时允许的数据点之间的最大距离。它通常用于控制提取时点与点之间的容许间隔,资助 WebPlotDigitizer 判断哪些点是相邻的。
Filter Colors 允许您根据图像中差别颜色的区域过滤数据点。在一些复杂的图表中,差别的数据集大概会使用差别的颜色来区分。通过 Filter Colors,WebPlotDigitizer 可以资助自动识别并提取特定颜色的数据点。
下面的ΔX和ΔY,用于控制点的希奇程度,值越大,点越少。
点击run即可自动提取。
https://i-blog.csdnimg.cn/direct/81acca7764fb48baa45016a03c347b8c.png
Box是用来设置图像中需要提取的区域的功能,然后标记为黄色,通过 Box,你可以定义一个区域,在这个区域内 WebPlotDigitizer 会进行数据点提取。点击run即可自动提取选定区域的数据点。
https://i-blog.csdnimg.cn/direct/a124ec61e37f423391b4c0773ee23a74.png
Pen的功能类似于一个任意誊写的笔,是用来微调我们需要提取数据点的区域。如下图所示,上方矩形是Box生成的区域,下方不规则区域是使用pen生成的区域。
https://i-blog.csdnimg.cn/direct/d7d9af4dac5446e49c62beaa97a30f60.png
Erase的功能就是一个橡皮檫,可以擦去Box和Pen生成的黄色区域。
View的功能感觉就是表现出来框出来的黄色区域。
小本领:实在上述说的设置都不是很实用,除非你的图片噪声特别多。我们最常用的就是设置ΔX和ΔY的距离,直接run就可以。固然Automatic Extraction可以和Manual Extraction搭配使用,自动生成数据点后,可以手动删除或者调整某些数据点的位置,让其拟合的更好。
b. 手动提取
Manual Extraction允许我们手动标记图像中的数据点,以提取准确的数据。这个工具非常适用于图像中数据点不规则或自动提取工具无法精确提取数据的环境。
Add point就是添加数据点,Adjust point调整数据点,Delete point删除数据点,很简单,没有什么好说的。
三、导出数据为csv格式
当我们提取好数据点后,选择左侧Dataset菜单中的View Data,然后Download.CSV即可。
四、自定义提取数据点的顺序
在 WebPlotDigitizer 进行 Automatic Extraction(自动提取) 时,尤其是对于复杂曲线,默认提取的数据点顺序大概并不是我们想要的。
比方在View Data菜单,Sort by X是按 X 轴排序(适用于左到右的曲线),Order是进行排序的选项,Ascending是按照从小到大递增的顺序,Desending是是按照从大到小递减的顺序。同理,Sort by Y是按 Y 轴排序(适用于从上到下的曲线)
https://i-blog.csdnimg.cn/direct/7c685ad47f794e87b098ab19ee8412ae.png
以是对于特别复杂的曲线,自动提取大概会打乱顺序,一个简单但繁琐的方法是改用 “Manual Extraction”(手动提取):按照我们想要的顺序逐个点击数据点进行提取,这样数据会按点击顺序存储。
由于数据点是按我们点击的顺序记载的,导出数据时就已经是我们想要的顺序了。
五、平滑提取出的数据点
将导出数据后使用 Python 处理,代码如下:
文件路径:D:/DLUT/manipulator programming/DMP code/PyDMPs_Chauby-master/code/figOneSmooth.py
import pandas as pd
import matplotlib.pyplot as plt
from scipy.signal import savgol_filter
from scipy.interpolate import CubicSpline
import numpy as np
# 读取CSV文件
csv_path = 'wei.csv'
data = pd.read_csv(csv_path)
# 为数据集分配列名
data.columns = ['X', 'Y', 'Z']
# 显示数据的前几行,以确认列名
print(data.head())
# 插值:使用CubicSpline进行样条插值
cs_x = CubicSpline(data.index, data['X'])
cs_y = CubicSpline(data.index, data['Y'])
# 创建更多的插值点(增加插值点数量)
new_indices = np.linspace(0, len(data) - 1, num=500)# 插值点数增至500
X_new = cs_x(new_indices)
Y_new = cs_y(new_indices)
# 使用Savitzky-Golay滤波器平滑插值后的数据
window_size = 11# 滤波器的窗口大小(必须是奇数)
poly_order = 3 # 多项式的阶数,通常为3
X_smoothed = savgol_filter(X_new, window_size, poly_order)
Y_smoothed = savgol_filter(Y_new, window_size, poly_order)
# 提取50个等间距的轨迹点
sampled_indices = np.linspace(0, len(X_smoothed) - 1, num=50, dtype=int)
X_sampled = X_smoothed
Y_sampled = Y_smoothed
# 将平滑后的轨迹保存为CSV文件
smoothed_data = pd.DataFrame({'X': X_sampled, 'Y': Y_sampled})
smoothed_data.to_csv('smoothed_trajectory.csv', index=False)
# 绘制原始轨迹、插值轨迹和平滑后的轨迹
plt.plot(data['X'], data['Y'], label='Original Y vs X', color='blue', linestyle='--')
plt.plot(X_new, Y_new, label='Interpolated Y vs X', color='green', linestyle='-.')
plt.plot(X_smoothed, Y_smoothed, label='Smoothed Y vs X', color='red')
# 添加标签和标题
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Curve of Y vs X (Smoothed and Interpolated)')
plt.legend()
# 设置X和Y轴的比例尺相同
plt.axis('equal')
# 显示图形
plt.show()
# 显示保存的平滑轨迹数据
print(smoothed_data.head())
六、生存项目文件,方便下次编辑
1.生存项目文件:
在工具栏上,选择 “File” > “Save Project To Disk”,这将生存为一个 WebPlotDigitizer 项目文件(通常扩展名为 .json)。
这个项目文件包罗全部提取的坐标点、坐标轴设置等,以便以后重新加载和继续编辑。比力希奇的是,项目文件不含原始图片,以是我们得将原始图片自行生存。
https://i-blog.csdnimg.cn/direct/9e552d0ccb114d2d978a9af03667b080.png
2.重新加载项目文件进行编辑
正如第一步所说的,生存的.json项目文件不包罗原始图片,以是我们应先Load Image/PDF
https://i-blog.csdnimg.cn/direct/e0f6b0e016f149a38a544ea6ddea1ba3.png
随后选择之前生存的 .json 项目文件, “File” > “Load Project From Disk”,WebPlotDigitizer 会重新加载已提取的数据点以及坐标轴信息,我们可以继续编辑、修改或导出数据。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]