[英]Javascript 2D array to 1D array and interval
我有一个300px * 300px的图像。 我在每个方向上每100px也有一些特定像素(总计16个特定像素)。
0 1 2 <-- IntervalX
______ ______ ______
0 | | | |
|______|______|______|
1 | | | |
|______|______|______|
2 | | | |
|______|______|______|
^
IntervalY
我想将每个像素(特定像素除外)放在由特定像素界定的块中,但由1D数组而不是2D数组中的像素值定义。
const gridX = width / (trueX - 1);
const gridY = width / (trueY - 1);
//为每个像素循环:
intervalX = Math.floor((pixel[inc].x) / gridX);
intervalY = Math.floor((pixel[inc].y) / gridY);
//Implementing formula for transforming from 1D array to 2D array : (y * width + x) = item number
//All leftmost known pixels start from a "zero" value, so we do not need to substract 1
let isNotFirstArray;
if (intervalX == 0)
isNotFirstArray = 0;
else
isNotFirstArray = 1;
p1 = pixel[intervalY * gridY * 299 + intervalX * gridX - isNotFirstArray];
p2 = pixel[intervalY * gridY * 299 + (intervalX + 1) * gridX - 1];
p3 = pixel[(intervalY + 1) * gridY * 299 + intervalX * gridX - isNotFirstArray];
p4 = pixel[(intervalY + 1) * gridY * 299 + (intervalX + 1) * gridX - 1];
pixel[inc].value = Math.round(bilinearInterpolate(p1, p2, p3, p4, j, i));
inc++;
问题是未正确计算特定像素的值。 Y值正确,但X值不正确。
以后的编辑:错误是这样的:特定像素的坐标在Y轴上正确,但在X轴上不正确。 它们以100px *(最大间隔-当前间隔)的内部间隔移动。
如果我做对了,您想“滤除”一些像素,这些像素在x和y方向上以一定间隔出现吗?
const img = <image array>,
imgWidth = 600,
gridX = 150,
gridY = 200;
let result = [];
for (let i = 0; i < input.length; i++) {
let x = i % imgWidth,
y = Math.floor(i / imgWidth);
if (!(x % gridX == 0 || y % gridY == 0)) {
result.push(input[i])
}
}
那应该过滤掉所有与您所说的一样特殊的索引。 它仍然是宽度为的图像像素阵列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.