利用Matlab提取图片中曲线数据(线性修正-支持对数坐标).pdfVIP

  • 35
  • 0
  • 约6.46千字
  • 约 9页
  • 2019-06-14 发布于辽宁
  • 举报

利用Matlab提取图片中曲线数据(线性修正-支持对数坐标).pdf

利用Matlab 提取图片中曲线数据 前一段时间看到一篇文章“利用Matlab 提取图图片中的数据”,觉得思路挺好,遂下载 下来研究了一番,发现作者所编写的程序没有考虑原始图片非水平放置的情况,而实际扫描 图片时,将图片完全放置水平难度较大... 同时作者也没有考虑对数坐标的情况,且程序 GUI 界面不太人性化,操作有点不习惯。因此借着作者良好意愿,对其程序进行了改进~ 2011-6-9 shanyunh@QQ.com 考虑一张非水平无变形的曲线图,现将其曲线数据取出来,步骤如下: (x1,y1) Δx (xi,yi) Δ y (x0,y0) (x2,y2) 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)) 具体操作说明 1.导入图片。 2.定位坐标系。按del 键可删除上一个点 3.定位曲线。 4.设置变换参数。 5.变换。单击[变换]按钮后,弹出变换后的结果。 6.保存数据。 8. 数据后处理 导入数据,假定导入后变量名为test 在Matlab Command 窗口中输入 x=test(:,1);y=test(:,2); cftool;弹出曲线拟合工具箱 创建数据集 拟合数据 程序流程 导入图像 创建数据结构 坐标轴定标 曲线描点 坐标变换 数据后处理:拟合、重新采样、存储 数据初始化程序段: handles.optMode=zoom; handles.linedata=[]; handles.dataCount=0; handles.datah=[]; handles.axesdata=[]; handles.axesCount=0; handles.axesh=[]; handles.newdata=[]; himage=findobj

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档