соответствие отрезков — надежный и быстрый способ

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

Я ищу быстрый и надежный алгоритм для сопоставления соответствующих отрезков, чтобы позже обновить мои отрезки 3D.

Если у кого-то есть идеи по этому поводу, пожалуйста, дайте несколько советов. заранее спасибо.

1

Решение

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

Простым подходом было бы сравнение каждого 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), вероятно, потребует, чтобы это было хорошо изученной проблемой.

  • Вероятно, вы можете избежать использования 1 конечной точки, если лексикографически сортируете 2D конечные точки.
1

Другие решения

Других решений пока нет …