Как преобразовать значение координат в системе координат 45–135 градусов в систему координат Земли? - PullRequest
1 голос
/ 17 января 2012

Я получаю серию квадратных бинарных изображений, как на картинке ниже, enter image description here

Я хочу найти красную точку, которая является точкой пересечения четырех блоков (2 черных и 2 белых),Для этого я использую, чтобы получить сумму всех значений пикселей в диагональных направлениях квадратного изображения, которая составляет 45 градусов и 135 градусов соответственно.Пересечение линии максимальной суммы пикселей 45 градусов и линии минимальной суммы пикселей 135 градусов - это то место, где находится моя красная точка.

Теперь, когда я получаю координату красной точки в координате 45 градусов - 135 градусовсистема, как мне преобразовать их в земные координаты?

Другими словами, скажем, у меня есть точка в системе координат 45deg-135deg;Как мне найти соответствующие значения координат в системе координат xy?Что такое матрица преобразования?

дополнительная информация, которая может помочь:

1) если изображение размером 60x60, я получаю 120 значений в системе 45deg-135deg, так как я сканирую каждую строкусопровождаемый столбцом, чтобы добавить пиксели.

Ответы [ 2 ]

1 голос
/ 17 января 2012

Извините, когда я неправильно понял ваш вопрос, но почему вы поворачиваете изображение?Значение x вашей красной точки - это просто точка, где производная в направлении x имеет максимальное абсолютное значение.И для направления y то же самое с производной в направлении y.

Предположим, у вас есть следующее изображение

enter image description here

Если вы берете первоестрока изображения имеет в начале все 1 и для большей части нулей ширины.График первого столбца выглядит следующим образом.

enter image description here

Теперь вы сворачиваете эту строку с ядром {-1,1}, которое является только одним вложенным циклом над вашей линией, и выget

enter image description here

Проходя теперь через этот результат и извлекая позицию точки с наибольшим значением, вы получаете 72. Следовательно, позиция x красной точки равна 73 (так какЯдро свертки слишком быстро находит производную одну точку).

Поэтому, если data - это матрица изображения вышеупомянутого двоичного изображения, то выделение вашей красной точки находится рядом с одной линией вMathematica

Last[Transpose[Position[ListConvolve[{-1, 1}, #] & /@ 
{data[[1]],Transpose[data][[1]]}, 1 | -1]]] + 1

Здесь вы получите {73, 86}, которая является правильной позицией, если y = 0 - верхняя строка.Этот метод должен быть реализован за несколько минут на любом языке.

Примечания:

  1. Приблизительная производная, являющаяся результатом свертки, можетбудь либо отрицательным, либо положительным.Это зависит от того, будет ли это изменение от 0 до 1 или наоборот.Если вы хотите найти самое высокое значение, вы должны взять абсолютное значение результата свертки.

  2. Помните, что первая строка в матрице изображения не всегда находится в верхней позицииотображаемое изображение.Это зависит от программного обеспечения, которое вы используете.Если вы ошиблись значениями y, знайте об этом.

1 голос
/ 17 января 2012

Я не знаю много о Matlab, но в целом все, что вам нужно сделать, это повернуть вашу сетку на 45 градусов. Вот полезная ссылка; показывает нужную вам матрицу вращения

Матрица вращения Википедии артикул

Новые координаты для точки после 2D вращения выглядят так:
x '= x \ cos \ theta - y \ sin \ theta.
y '= x \ sin \ theta + y \ cos \ theta.

замените тета на 45 (или, может быть, -45), и все должно быть готово

Если ваша красная точка начинается с (x, y), то после поворота на -45 градусов она будет иметь новые координаты (x ', y'), которые определены следующим образом:

x '= x cos (-45) - y sin (-45)
y '= x sin (-45) + y cos (-45)

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