Отображение 2D точек на новую перспективу - PullRequest
5 голосов
/ 20 мая 2011

Это мой первый пост!

Я пытаюсь создать приложение, которое может определить, являются ли определенные точки сетки (изображения) светлыми или темными. Исходная сетка четко определена (я знаю, где все точки должны быть относительно углов). Как только я знаю, где должна быть точка, я могу легко определить, светлая она или темная.

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

В других публикациях я читал, что единственные свойства, которые сохраняются во время трансформации, - это соотношение и частота. В частности, эта публикация направила меня в правильном направлении, но автор не закончил математику. Обратите внимание, что в этом примере автор переходит от перекошенной перспективы к виду «птичий глаз», а я пытаюсь сделать наоборот. Математика должна быть такой же.


Из проводки Проективное преобразование

(так что, очевидно, я не могу публиковать изображения, потому что я новичок, но изображение находится на вышеуказанном посте)

1) Найдите точку C 'на пересечении линий, определенных отрезками AD и CP.

2) Найдите точку B 'на пересечении линий, определенных отрезками AD и BP.

3) Определить соотношение B'DAC ', т.е. r = (BA' * DC ') / (DA * B'C').

4) Построить спроецированную линию F'HEG '. Соотношение этих точек равно r, то есть r = (F'E * HG ') / (HE * F'G').

5) F'F и G'G будут пересекаться в проецируемой точке Q, поэтому, приравнивая перекрестные отношения и зная длину стороны квадрата, вы можете определить положение Q с некоторой арифметической гимнастикой.


Мой вопрос - шаг 4, Построение линии F'HEG '. Можно ли построить линию из 4 точек, просто зная 2 точки и желаемое соотношение? Я чувствую, что это 1 уравнение с 2 неизвестными.

Если кто-то может мне помочь, я буду очень благодарен!

Извините, что так долго,

Rob

PS Я бы только написал на этом форуме, но это мой первый пост, поэтому у меня пока нет разрешения.

Ответы [ 2 ]

1 голос
/ 28 августа 2011

Если вам известны положения любой 4-мерной точки (3 из которых не лежат на одной линии), например, ваши углы, вы можете найти преобразование гомографии H между вашим 2D-изображением и рамкой веб-камеры.
H - это матрица 3x3, которая может преобразовать любую точку вашего кадра в 2D-изображение. Точки p записываются в однородных координатах: [x, y, 1] так, что p '= Hp.
Учитывая 4 соответствующих точки на изображении и кадре, вы можете решить для 9 элементов H.

0 голосов
/ 23 мая 2011

Поскольку F ', H, E и G лежат на одной линии в 2D-пространстве, ваша задача с самого начала очень ограничена. Неизвестные у вас есть:

  1. Некоторая точка поддержки (точка, через которую проходит линия), используйте первую точку для этого.
  2. Направление линии (куда она идет от опоры. Для этого вы используете направление от первой ко второй точке)
  3. Положение точек вдоль этой линии. У вас уже есть два (две точки), поэтому вам просто нужно еще два числа.

На самом деле желаемое соотношение - это два уравнения (по одному для координат x и y), поэтому у вас есть два уравнения и два неизвестных.

...