利用Matlab提取图片中曲线数据(线性修正,支持对数坐标)
时间:2026-01-19
时间:2026-01-19
前一段时间看到一篇文章“利用Matlab 提取图图片中的数据”,觉得思路挺好,遂下载下来研究了一番,发现作者所编写的程序没有考虑原始图片非水平放置的情况,而实际扫描图片时,将图片完全放置水平难度较大... 同时作者也没有考虑对数坐标的情况,且程序GUI 界面不太人性化,操作有点不习惯。因此借着作者良好意愿,对其程序进行了改进~
利用Matlab提取图片中曲线数据
前一段时间看到一篇文章“利用Matlab提取图图片中的数据”,觉得思路挺好,遂下载下来研究了一番,发现作者所编写的程序没有考虑原始图片非水平放置的情况,而实际扫描图片时,将图片完全放置水平难度较大... 同时作者也没有考虑对数坐标的情况,且程序GUI界面不太人性化,操作有点不习惯。因此借着作者良好意愿,对其程序进行了改进~
2011-6-9
考虑一张非水平无变形的曲线图,现将其曲线数据取出来,步骤如下:
(x1(x
1. 在坐标轴上取三点以定位坐标系。如图中红色点所示。
2. 在曲线上选取若干个点,如图中蓝色点所示。
3. 设定坐标轴选取点x和y的实际值。
4. 选取坐标系类型。
5. 变换。
6. 保存数据。
7. 数据后处理。
在变换过程中程序首先计算(xi,yi)到(x1,y1)和(x2,y2)所组成的y轴的距离Δx,同样的方法计算Δy,当然Δx和Δy是图片的像素值。接下来计算每个像素点所对应实际坐标值。对于线性x轴,比例系数为(Xmax-Xmin)/(sqrt((x1-x0)^2)+(y1-y0)^2),同样对于线性y轴,比例系数(Ymax-Ymin)/(sqrt((x0-x2)^2)+(y0-y2)^2)。这样即可求出每个点的实际坐标值
Xi=Δx *(Xmax-Xmin)/(sqrt((x1-x0)^2)+(y1-y0)^2)+Xmin
Yi=Δy *(Ymax-Ymin)/(sqrt((x0-x2)^2)+(y0-y2)^2)+Ymin
对数坐标的变换关系类似
Xi=10^(log10(Xmin)+Δx *(log10(Xmax)-log10(Xmin))/(sqrt((x1-x0)^2)+(y1-y0)^2))
Yi= 10^(log10(Ymin)+Δy *(log10(Ymax)-log10(Ymin))/(sqrt((x0-x2)^2)+(y0-y2)^2))
前一段时间看到一篇文章“利用Matlab 提取图图片中的数据”,觉得思路挺好,遂下载下来研究了一番,发现作者所编写的程序没有考虑原始图片非水平放置的情况,而实际扫描图片时,将图片完全放置水平难度较大... 同时作者也没有考虑对数坐标的情况,且程序GUI 界面不太人性化,操作有点不习惯。因此借着作者良好意愿,对其程序进行了改进~
具体操作说明
1.导入图片。
2.定位坐标系。按del键可删除上一个点
3.定位曲线。
前一段时间看到一篇文章“利用Matlab 提取图图片中的数据”,觉得思路挺好,遂下载下来研究了一番,发现作者所编写的程序没有考虑原始图片非水平放置的情况,而实际扫描图片时,将图片完全放置水平难度较大... 同时作者也没有考虑对数坐标的情况,且程序GUI 界面不太人性化,操作有点不习惯。因此借着作者良好意愿,对其程序进行了改进~
4.设置变换参数。
5.变换。单击[变换]按钮后,弹出变换后的结果。
6.保存数据。
前一段时间看到一篇文章“利用Matlab 提取图图片中的数据”,觉得思路挺好,遂下载下来研究了一番,发现作者所编写的程序没有考虑原始图片非水平放置的情况,而实际扫描图片时,将图片完全放置水平难度较大... 同时作者也没有考虑对数坐标的情况,且程序GUI 界面不太人性化,操作有点不习惯。因此借着作者良好意愿,对其程序进行了改进~
8. 数据后处理
导入数据,假定导入后变量名为
test
在Matlab Command窗口中输入 x=test(:,1);y=test(:,2); cftool;弹出曲线拟合工具箱
创建数据集
前一段时间看到一篇文章“利用Matlab 提取图图片中的数据”,觉得思路挺好,遂下载下来研究了一番,发现作者所编写的程序没有考虑原始图片非水平放置的情况,而实际扫描图片时,将图片完全放置水平难度较大... 同时作者也没有考虑对数坐标的情况,且程序GUI 界面不太人性化,操作有点不习惯。因此借着作者良好意愿,对其程序进行了改进~
拟合数据
前一段时间看到一篇文章“利用Matlab 提取图图片中的数据”,觉得思路挺好,遂下载下来研究了一番,发现作者所编写的程序没有考虑原始图片非水平放置的情况,而实际扫描图片时,将图片完全放置水平难度较大... 同时作者也没有考虑对数坐标的情况,且程序GUI 界面不太人性化,操作有点不习惯。因此借着作者良好意愿,对其程序进行了改进~
数据初始化程序段:
导入图像程序段:
前一段时间看到一篇文章“利用Matlab 提取图图片中的数据”,觉得思路挺好,遂下载下来研究了一番,发现作者所编写的程序没有考虑原始图片非水平放置的情况,而实际扫描图片时,将图片完全放置水平难度较大... 同时作者也没有考虑对数坐标的情况,且程序GUI 界面不太人性化,操作有点不习惯。因此借着作者良好意愿,对其程序进行了改进~
点选取程序段:
前一段时间看到一篇文章“利用Matlab 提取图图片中的数据”,觉得思路挺好,遂下载下来研究了一番,发现作者所编写的程序没有考虑原始图片非水平放置的情况,而实际扫描图片时,将图片完全放置水平难度较大... 同时作者也没有考虑对数坐标的情况,且程序GUI 界面不太人性化,操作有点不习惯。因此借 …… 此处隐藏:2575字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:事业单位的预算管理