You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab实现自动数字化仪时如何将图像坐标映射为实际坐标

图像坐标转折线实际数值的计算方法

你需要做的是线性比例映射,需要特别注意图像坐标系的y轴方向和常规笛卡尔坐标系相反(图像左上角为原点,y轴向下递增),具体实现步骤和公式如下:


前置已知参数(你已经获取到的信息)

  • x轴参数:
    • 图像中x轴起点的x坐标 x_img_start,对应的实际x最小值 x_val_min
    • 图像中x轴终点的x坐标 x_img_end,对应的实际x最大值 x_val_max
  • y轴参数:
    • 图像中y轴最低点(对应实际y最小值)的y坐标 y_img_start,对应的实际y最小值 y_val_min
    • 图像中y轴最高点(对应实际y最大值)的y坐标 y_img_end,对应的实际y最大值 y_val_max
  • 待转换的折线点图像坐标 (px, py)

你提供的参考图像如下:
输入图像
标注坐标点的示例图像


具体转换公式

实际x值计算

x轴方向映射和常规逻辑一致,按像素占比换算即可:

x_val = x_val_min + (px - x_img_start) * (x_val_max - x_val_min) / (x_img_end - x_img_start)

实际y值计算

需要反转y轴方向再做比例换算:

y_val = y_val_min + (y_img_start - py) * (y_val_max - y_val_min) / (y_img_start - y_img_end)

Matlab 实现代码示例

% --------------- 请替换为你自己的实际参数 ---------------
x_img_start = 50;    % x轴起点的图像x坐标
x_img_end = 600;     % x轴终点的图像x坐标
x_val_range = [0, 100]; % x轴实际数值范围[最小值, 最大值]

y_img_low = 400;     % y轴最低点(对应y最小值)的图像y坐标
y_img_high = 50;     % y轴最高点(对应y最大值)的图像y坐标
y_val_range = [0, 50];  % y轴实际数值范围[最小值, 最大值]

points_img = [281,70]; % 你提取到的所有折线点图像坐标,N行2列
% ------------------------------------------------------

x_val = x_val_range(1) + (points_img(:,1) - x_img_start) .* diff(x_val_range) ./ (x_img_end - x_img_start);
y_val = y_val_range(1) + (y_img_low - points_img(:,2)) .* diff(y_val_range) ./ (y_img_low - y_img_high);

% 输出转换后的坐标
points_val = [x_val, y_val];
disp('转换后的实际坐标:');
disp(points_val);

% 直接重绘验证
figure;plot(x_val,y_val,'-o');
xlabel('X');ylabel('Y');title('重绘后的折线图');

特殊情况说明

如果你的坐标轴存在倾斜/透视变形,需要先对图像做仿射变换校正,再用上述公式计算即可。

内容的提问来源于stack exchange,提问作者Donald Bush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 05:24:02