将1D索引从阻塞数据转换为整个数据的1D索引

时间:2012-05-09 08:30:46

标签: arrays algorithm indexing

我将体积(3D图像)分成块16x16x16。整卷为128x128x128。数据存储在线性存储器中。对于每个块,我将起始索引存储在整个数据的线性存储器中。 现在,我需要重新计算从16x16x16块到128x128x128数据索引的索引。每个块都使用索引0,1,2,3 ...... 4096进行迭代,我需要将其更改为全局线性索引。

例如:

Block 1, index [2] => convert to index [18]
Block 1, index [18] => convert to index [146]

2D示例在图像中是ilustrated。我想将红点(索引135)转换为整个图像中的索引。这意味着它将是1040 +的东西。块角中的数字是图像内的线性偏移。 我需要3D数据的公式。 2D example

1 个答案:

答案 0 :(得分:0)

块中的坐标:(索引div 256,(Index div 16)mod 16,Index mod 16)

块原点的坐标:(16 *(Block div 64),16 *((Block div 8)mod 8),16 *(Block mod 8))

整卷的坐标:(16 *(Block div 64)+(Index div 256),(16 *((Block div 8)mod 8)+((Index div 16)mod 16)),16 * (Block mod 8)+(Index mod 16))

所以全球指数是

128 * 128 *(16 *(Block div 64)+(Index div 256))+ 128 *(16 *((Block div 8)mod 8)+((Index div 16)mod 16))+ 16 *(Block mod 8)+(Index mod 16)