Как вычислить перекрытие между почти параллельными двумя отрезками

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

Моя цель — найти лучшую линию, которая представляет темную линию
из других наборов отрезков.

то, что я хочу найти, это любая строка, которая имеет максимальный охват данной линии. это означает, что я хочу избежать отрезков, чьи начало и конец находятся вне концов данного отрезка. Кроме того, когда многие строки дают максимальное покрытие для данной линии, тогда я хочу избежать более короткой линии и нужна длинная. idea is to find another line which we can consider instead of that given line segment

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

пример 1
пример

введите описание изображения здесь
example2

сказать, что я имел в виду «покрытие», я скажу
на рисунке выше: спроецированная синяя линия полностью лежит внутри темной черной линии. но это слишком коротко. Но большая часть красной линии (спроецированная линия) лежит внутри черной линии, хотя некоторая часть красной линии гаснет. зеленая линия полностью выходит за черную линию. поэтому я могу сказать, что красная линия дает максимальный охват черной линией … (моя идея верна?)

2

Решение

  1. Проецирование концов потенциального сегмента на целевой сегмент.
  2. Рассчитайте расстояние между проекциями.
  3. [опционально] Умножьте на cos угла между сегментами.

Примечание о # 1: в этом контексте проекция на сегмент означает ближайшую точку, лежащую на этом сегменте. Одним из способов является:

  • спроецировать точку на бесконечной линии, проходящей через отрезок
  • если проекция внутри сегмента — возьми
  • если проекция находится за пределами сегмента — возьмите ближайший конец сегмента
4

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

Я не знаю, ваш вопрос о графической обработке или вычислительных функциях.

Но для графики этот вопрос относится к предмету компьютерного зрения, то, что вы хотите, может быть, Алгоритм Hough Line Transform.

Однако, если вы спрашиваете, проще, чем это, то, что вы хотите, может быть, SAD алгоритм

0

По вопросам рекламы [email protected]