Как разделить 8 точек на две части в opencv python - PullRequest
0 голосов
/ 02 июня 2019

Я пытаюсь выполнить калибровку камеры и столкнулся с проблемами при разделении точек на два кластера.

пример изображения: sample image Например, как показано на рисунке, естьвосемь прямоугольников одинакового размера.A, B, C, D, E, F, G, H являются их центрами.Я хочу сгруппировать A, B, C, D в один список, кластер E, F, G, H в другой список.

Моя грубая идея состоит в том, чтобы найти все комбинации из 4 точек, а затем выполнить подгонку линий.Лучше всего подходят две линии (с наименьшим смещением) должны быть линия ABCD и линия EFGH.Поэтому я могу разделить их.

Однако мне интересно, есть ли лучший способ сделать это?Или есть какая-нибудь библиотека, которую я могу использовать в python / opencv?

Заранее большое спасибо.

1 Ответ

1 голос
/ 02 июня 2019

Классический подход для этого в компьютерном зрении (который каждый в CV должен знать ) заключается в использовании преобразования Хафа . Затем найдите пики плотности в этой проекции.

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

Существует алгоритм кластеризации, основанный на этой идее: CASH. Но ИМХО в основном интересно использовать, если ваши входные данные больше , чем 2-мерные.

...