У меня есть 2D линейные сегменты, извлеченные из данных одного изображения, и я бы хотел совпасть с 3D линейными сегментами, извлеченными из другого источника. для этого сначала я хотел бы спроецировать трехмерный отрезок на пространство изображения, используя уравнение коллинеарности (я знаю параметры внешнего ориентирования). Поскольку оба отрезка находятся в одной и той же системе координат, я бы хотел найти наилучший совпадающий отрезок для этой линии.
Я ищу быстрый и надежный алгоритм для сопоставления соответствующих отрезков, чтобы позже обновить мои отрезки 3D.
Если у кого-то есть идеи по этому поводу, пожалуйста, дайте несколько советов. заранее спасибо.
Вы смотрите на проблему, похожую на пересечение отрезка. Поэтому неудивительно, что его решения, вероятно, также похожи.
Простым подходом было бы сравнение каждого 2D-сегмента с каждым 3D-сегментом, наилучшим соответствием является тот, который наиболее точно соответствует прогнозируемой длине и положению по сравнению с фактическим. Фактически это 2D сегменты. Это что-то вроде O (AB), где A — количество 2D-сегментов, а B — количество 3D-сегментов.
Вы можете несколько ускорить метод, отсортировав лексикографически 2D-сегменты, а затем использовать тот же алгоритм, о котором я спрашивал в этом вопрос получить все линейные сегменты, значения x которых находятся в пределах определенного количества, к ожидаемому значению x одной или обеих конечных точек сегментов линии *. В худшем случае вы все равно можете столкнуться с O (AB), но среднее время должно быть ближе к O (B log A). Хотя не ясно, можете ли вы использовать этот метод на основе того, что вы сказали, поэтому этот абзац следует рассматривать скорее как набросок.
Быстрее, чем O (B log A) или O (A log B), вероятно, потребует, чтобы это было хорошо изученной проблемой.
Других решений пока нет …