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

如何确定缩放后的1D图像数组指定位置对应的原数组像素索引

图像1D数组2倍放大的坐标映射规则

默认你使用的是最近邻插值的2倍放大(即单像素直接扩展为2×2的同值像素块),且1D数组采用通用的行优先顺序存储(即逐行存储像素,每行存完再存下一行),具体映射规则如下:

通用参数定义

  • 原图像宽度:W,高度:H → 原1D数组长度为 W * H
  • 放大后图像宽度:2W,高度:2H → 新1D数组长度为 4 * W * H
  • 原数组任意像素的索引:old_idx

正向映射:从原像素找对应新数组位置

  1. 先把原1D索引转换为原图像的2D坐标
// 行优先转换规则
y = old_idx // W  // 原像素所在行号,// 表示整数除法
x = old_idx % W   // 原像素所在列号,% 表示取余
  1. 原像素对应放大后2×2块的2D坐标为:(2y, 2x)、(2y, 2x+1)、(2y+1, 2x)、(2y+1, 2x+1)
  2. 把上述2D坐标转成新数组1D索引的公式为:
new_idx = new_y * 2*W + new_x

代入四个2D坐标即可得到4个对应的新数组位置。

反向映射:遍历新数组赋值更高效的方案

如果要直接遍历新数组填充值,可直接通过新索引反查对应原像素:

  1. 新索引转新2D坐标:new_y = new_idx // (2*W),new_x = new_idx % (2*W)
  2. 对应原2D坐标:old_y = new_y // 2,old_x = new_x // 2
  3. 对应原数组索引:old_idx = old_y * W + old_x

示例验证

假设原图像宽W=3,高H=2,原索引为0的像素:

  • 原2D坐标为(0,0)
  • 对应新数组的4个索引为:0*6+0=0、0*6+1=1、1*6+0=6、1*6+1=7,符合2×2块的位置要求。

注:如果你的1D数组是列优先存储,只需要把上述公式里的行、列计算逻辑互换即可。

内容的提问来源于stack exchange,提问作者bob marsh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:36:03