Есть ли какой-нибудь алгоритм определения 3д позиции в таком случае? (изображения ниже)

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

alt text
(источник: narod.ru )

Но у меня есть другое изображение с такими же линиями (я знаю, что они такие же) и новые координаты моих точек, как на этом изображении alt text
(источник: narod.ru)

Итак ... Теперь, имея точки (координаты) на первом изображении, как я могу определить вращение плоскости и глубину Z на втором изображении (при условии, что центр первого был в точке (0,0,0) без поворота)?


person Rella    schedule 02.04.2010    source источник
comment
Просить конкретное решение этой проблемы, а не общие методы, очень похоже на домашнее задание.   -  person Dan Story    schedule 03.04.2010
comment
Да ладно, это общий случай, и конкретное решение будет общим для многих подобных случаев (например, для треугольников ...)   -  person Rella    schedule 03.04.2010
comment
возможный дубликат нормального вектора трех точек   -  person dmckee --- ex-moderator kitten    schedule 29.08.2010


Ответы (4)


Скажу сразу: проблема сложная. Есть причина, по которой на связанный вопрос Дэна Стори нет ответа. Позвольте дать объяснение тем, кто хочет нанести удар. Я надеюсь, что ошибаюсь насчет того, насколько это сложно.

Я предполагаю, что вам известны 2D-координаты экрана и матрица проекции / перспективы. Вам нужно знать хотя бы это (если вы не знаете матрицу проекции, по сути, вы используете другую камеру, чтобы смотреть на мир). Назовем каждую пару координат 2D экрана (a_i, b_i), и я предполагаю, что матрица проекции имеет вид

P = [ px  0  0  0 ]
    [ 0   py 0  0 ]
    [ 0   0  pz pw]
    [ 0   0  s  0 ], s = +/-1

Такую форму имеет почти любая разумная проекция. Проработав конвейер рендеринга, вы обнаружите, что

a_i = px x_i / (s z_i)
b_i = py y_i / (s z_i)

где (x_i, y_i, z_i) - исходные трехмерные координаты точки.

Теперь предположим, что вы знаете свою форму в наборе канонических координат (как хотите), так что вершины равны (x0_i, y0_i, z0_i). Мы можем расположить их как столбцы матрицы C. Фактические координаты формы представляют собой жесткое преобразование этих координат. Аналогичным образом организуем фактические координаты как столбцы матрицы V. Тогда они связаны

V = R C + v 1^T             (*)

где 1^T - вектор-строка из единиц правильной длины, R - ортогональная матрица вращения жесткого преобразования, а v - вектор смещения преобразования.

Теперь у вас есть выражение для каждого столбца V сверху: первый столбец - это { s a_1 z_1 / px, s b_1 z_1 / py, z_1 } и так далее.

Вы должны решить набор уравнений (*) для набора скаляров z_i и жесткое преобразование, определенное R и v.

Проблемы

  • Уравнение нелинейно относительно неизвестных, включая частные от R и z_i.
  • До сих пор мы предполагали, что вы знаете, какие 2D-координаты соответствуют вершинам исходной формы (если ваша фигура является квадратом, это немного менее проблематично).
  • Мы предполагаем, что решение есть вообще; если в 2D-данных есть ошибки, то трудно сказать, насколько хорошо будет выполнено уравнение (*); преобразование будет нежестким или нелинейным.
person Victor Liu    schedule 03.04.2010

То, что вы пытаетесь найти, называется матрицей проекции. Определение точной обратной проекции обычно требует, чтобы у вас были твердо установленные координаты как в исходном, так и в целевом векторах, которые изображения выше не дадут вам. Однако вы можете приблизиться, используя положение пикселей.

Этот поток даст вам базовое пошаговое руководство по методы, которые вам нужно использовать.

person Dan Story    schedule 02.04.2010

Это называется (цифровая) фотограмметрия. Начать поиск в Google.

person High Performance Mark    schedule 02.04.2010

Если вас действительно интересуют проблемы такого рода (которые часто встречаются в компьютерном зрении, отслеживании объектов с помощью камер и т. Д.), Следующая книга содержит подробное описание:

Ма, Соатто, Косецка, Састри, Приглашение в 3-D Vision, Springer 2004.

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

person Federico A. Ramponi    schedule 03.04.2010