Мне нужно определить полосатые узоры на видео последовательностях.
Я пытаюсь использовать OpenCV
Houghlines
функция для обнаружения линий шаблона. Как только у меня есть Houghlines
(GREEN_lines) мне нужно знать, какие линии ближе всего друг к другу, и отбросить все остальные. Мне также нужно знать, сколько пар темных (RED_line) и светлых (BLUE_line) полос на изображении.
Затем мне нужно знать среднюю яркость области внутри каждой «коробки», образованной линиями Хафлайна.
Шаблон может появляться в видеокадрах под разными углами (изображение справа).
Какие-либо предложения?
Предположим, что строки, полученные при применении преобразования Хафа, представляют собой L1, L2, …, Lk для k обнаруженных линий. Пусть каждая линия Li представлена двумя точками ((x1i, y1i), (x2i, y2i)).
Сначала определите, какие линии параллельны, а какие перпендикулярны друг другу. Вы можете сделать это, вычислив скалярное произведение между вектором направления единицы для каждой пары линий. Пары линий, которые перпендикулярны друг другу, будут иметь точечное произведение 0 (или близко к 0, поскольку обнаруженные линии могут быть не совсем перпендикулярны из-за шума / числовых ошибок), и точечное произведение близко к 1, если они параллельны.
Как только вы узнаете, какие линии параллельны, а какие перпендикулярны, вы можете отсортировать их по x-координатам (для «вертикальных» линий) или y-координатам (для 2 «горизонтальных» линий).
Теперь вам нужно будет найти точки пересечения между каждой «вертикальной» линией и каждой «горизонтальной» линией, что можно получить с помощью небольшой алгебры и геометрии.
С помощью этих точек и линий вы можете создать маску для вычисления желаемых значений на изображении (например, яркости внутри каждого блока). Сортированные линии также скажут вам, какие линии ближе всего друг к другу.