Вероятно, простой вопрос, но я не мог найти легкое решение до сих пор. Я работаю над простым программным обеспечением для распознавания изображений для очень конкретного случая использования.
Дано множество точек, которые предположительно находятся на прямой линии. Однако некоторые точки ошибочно размещены и удалены от линии. Особенно вблизи концов линии, точки могут быть более или менее неточными.
Пример:
X // this guy is off
X // this one even more
X // looks fine
X
X
X // a mistake in the middle
X
X // another mistake, not as bad as the previous
X
X
X
X
X // we're off the line again
Общее направление линии известно, в данном случае оно вертикальное. Фактическая линия в примере фактически вертикальная с небольшим диагональным наклоном.
Меня интересует только бесконечная линия (то есть ее наклон и смещение), положение конечных точек не имеет значения.
В качестве дополнительной информации (не уверен, что это важно) невозможно, чтобы 2 точки лежали рядом друг с другом горизонтально. Пример:
X
X
X
X X // cannot happen
X
X
Производительность не важна. Я работаю в C #, но я в порядке с любым языком или просто с общей идеей.