Получить координаты X и Y пикселя с учетом высоты, ширины и индекса пикселя в массиве FLATTENED, представляющем изображение - PullRequest
0 голосов
/ 11 июня 2019

Представьте, что у вас есть это изображение

[[1 2 3] [4 5 6] [7 8 90]]

Вы сведете его в этот формат -

[1 2 3 4 5 6 7 8 90]

Теперь у вас есть индекс пикселя 90, равный 8. Как вы можете найти, что пиксель 90в строке 3 и столбце 3?

Ответы [ 2 ]

2 голосов
/ 11 июня 2019

OpenCL, подобно другим языкам программирования, таким как C, C ++, Java и т. Д., Использует индексирование на основе нуля . Таким образом, в этом смысле вы ищете строку 2 и столбец 2.

Теперь, чтобы вычислить, какой строке нам нужно разделить позицию индекса 8 на количество столбцов:

8 / 3 = 2

То есть при индексации с нуля это вторая строка.

Теперь, чтобы вычислить, в каком столбце мы используем оператор по модулю:

8 % 3 = 2
0 голосов
/ 21 июня 2019

В 2D-случае точка (x, y) в прямоугольнике с размерами (sx, sy) может быть представлена ​​в одномерном пространстве линейным индексом n следующим образом:

n = x+y*sx

Преобразование 1D индекса n обратно в (x, y) работает следующим образом:

x = n%sx
y = n/sx

Для трехмерного случая точка (x, y, z) в поле с размерами (sx, sy, sz) может быть представлена ​​в 1D как

n = x+(y+z*sy)*sx

и преобразован обратно в (x, y, z) следующим образом:

z  = n/(sx*sy);
temp = n%(sx*sy);
y = temp/sx;
x = temp%sx;

Обратите внимание, что здесь "/" означает целочисленное деление (всегда округляет результат), а "%" - оператор по модулю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...