Таким образом, в первую очередь, у меня есть такое изображение (и конечно у меня есть все координаты точек в 2-м, таким образом, я могу повторно создать строки и проверить, где они пересекают друг друга),
(источник: narod.ru)
Но эй, у меня есть другое Изображение тех же строк (я знаю, что thay - то же), и новые провода моих точек как на этом изображении
(источник: narod.ru)
Так... теперь Имея точки (провода) на первом изображении, Как я могу определить плоское вращение и глубину Z на втором изображении (принимающий сначала центр был в точке (0,0,0) без вращения)?
Позвольте мне сказать сразу: это сложная проблема. Есть причина, по которой на связанный вопрос Дэна Стори нет ответа. Позвольте дать объяснение тем, кто хочет нанести удар. Надеюсь, я ошибаюсь в том, насколько это сложно.
Я предполагаю, что вам известны 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
(*)
; преобразование будет нежестким или нелинейным. Это называется (цифровой) фотограмметрии. Начать поиск в Google.
Если вы действительно интересуетесь такого рода проблемами (которые часто встречаются в компьютерном зрении, отслеживании объектов с помощью камер и т. Д.), следующая книга содержит подробное описание:
Ма, Соатто, Косецка, Састри, Приглашение к трехмерному зрению , Springer 2004.
Осторожно: это сложный технический текст, в котором используется многие методы, которые имеют математический характер. Просмотрите примеры глав, представленных на веб-странице книги, чтобы получить представление.
То, что вы пытаетесь найти, называется матрицей проекции . Для определения точной обратной проекции обычно требуется, чтобы у вас были твердо установленные координаты как в исходном, так и в целевом векторах, которые изображения выше не дадут вам. Однако вы можете приблизительно использовать положение пикселей.
Эта ветка даст вам базовое пошаговое руководство по методам, которые вам необходимо использовать.