>想象一下你有这个图像
[[1 2 3] [4 5 6] [7 8 90]]
你把它展平成这个格式——
[1 2 3 4 5 6 7 8 90]
现在,您将获得Pixel 90的索引为8。如何找到像素 90 在第 3 行和第 3 列中?
OpenCL与其他编程语言(如C,C++,Java等(类似,使用从零开始的索引。因此,在此术语中,您要查找第 2 行和第 2 列。
现在要计算哪一行,我们需要将索引位置 8 除以列数:
8 / 3 = 2
因此,在从零开始的索引中,这是第二行。
现在计算我们使用取模运算符的列:
8 % 3 = 2
在 2D 情况下,矩形中尺寸为 (sx,sy( 的点 (x,y( 可以在 1D 空间中用线性索引 n 表示,如下所示:
n = x+y*sx
将一维索引 n 转换回 (x,y( 的工作原理如下:
x = n%sx
y = n/sx
对于 3D 情况,a 框中尺寸为 (sx,sy,sz( 的点 (x,y,z( 可以在 1D 中表示为
n = x+(y+z*sy)*sx
并像这样转换回 (x,y,z(:
z = n/(sx*sy);
temp = n%(sx*sy);
y = temp/sx;
x = temp%sx;
请注意,这里的"/"表示整数除法(总是向下舍入结果(,"%"是取模运算符。