将二维坐标转换为一维数组

Posted

技术标签:

【中文标题】将二维坐标转换为一维数组【英文标题】:Translate a 2D coordinate into a 1D array 【发布时间】:2018-06-24 11:03:50 【问题描述】:

我也看过:

Convert a 2D array index into a 1D index

我正在尝试调试我的程序,我需要了解如何将二维坐标转换为一维坐标。

如果我有一个 IJ 坐标,例如:(3284,1352),我们想访问一个一维数组,即 (3492,2188),我们如何实现呢?

到目前为止我已经尝试过:

1) 我认为你对每一行和每一行内每一列的偏移为:

i x j = 3284 * 1352 = 4.439.968

如果我们有坐标 (3284,1352) 以图形方式对应于灰度强度为 1 的片段:

我们尝试访问每个像素的灰度值的一维数组,以像素为单位:4.439.968 我们有:

14 的灰度强度

这很奇怪,因为:

-> ITKSnap 没有显示第 14 段:

-> 我们的段的灰度为1,那么我们应该在手动计算访问哪个索引后,找到那个灰度:

2)我尝试的第二种方法是将其计算为:

column clicked * number of total rows + row clicked;

j * xLength + i;

在我们的例子中是:

1352 * 3492 + 3284 = 4.724.468

如果我们试图在数据中找到那个像素:

我们发现灰度为0,对应背景。

转换有什么问题?

你能帮帮我吗?

【问题讨论】:

我认为应该是:row clicked * number of total columns + column clicked;,因为它通常先经过列然后再经过行(从左到右然后从上到下)。 【参考方案1】:

我认为你需要这样的东西:index = (y * maxColumns) + x (看起来像你的 j=x 和 i=y)

我画了一些东西来可视化它:

【讨论】:

我认为没有必要拨打Math.round。都是整数运算,对吧? 是的,你说得对,我只是从一个项目中复制出来的,在该项目中我使用Math.sqrt 计算总列数。 (而且我最近在尝试访问具有浮点值的数组时遇到了问题,因为 JS 中没有 int,所以我现在到处都放一个 Math.round ;D)

以上是关于将二维坐标转换为一维数组的主要内容,如果未能解决你的问题,请参考以下文章

将二维数组转换为一维数组,交替其值

C将一维数组转换为二维数组

js怎样将一维数组转换成二维数组

python将一维概率数组转换为二维数组

将二维数组转换为列表(一维)的快速方法

PHP将一维数组转换为二维数组