Как я могу найти пересечения трех шестиугольников на этой фигуре? - PullRequest
0 голосов
/ 18 января 2019

у меня фигура выглядит так enter image description here Я хочу найти координаты всех пересечений трех шестиугольников.

Как я могу это сделать? Должен ли я использовать OpenCV?

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Я все еще пытаюсь придумать более быстрый / лучший метод, но я думаю, что должно работать следующее:

  • пороговое значение вашего изображения для чистого черного и белого
  • создать и сохранить список всех черных пикселей для последующего использования
  • пометьте свое изображение так, чтобы каждый белый шестиугольник был эффективно заполнен уникальным цветом (или оттенком серого) - некоторые люди называют это "маркировка" , некоторые называют его "Анализ BLOB-объектов ", некоторые называют это " Анализ связанных компонентов ". Как бы это ни называлось, вы получите что-то вроде этого:

enter image description here

  • Теперь посмотрите на каждый черный пиксель из списка, который вы сохранили на втором шаге, и посчитайте, сколько разных цветов, кроме черного, находятся в окружающей области 9x9 или 15x15. Если это три, это, вероятно, пересечение, как вы ищете.

Конечно, есть разные варианты - например, вы можете установить "минимальное расстояние от другого пересечения" сверху. Или "черная линия сначала прореживается" . Или расширение каждого шарика, чтобы размыть черные линии и сделать три цвета ближе друг к другу. Вы можете уменьшить свое изображение (стараясь использовать NEAREST_NEIGHBOUR вместо интерполяции) после маркировки, чтобы сократить время обработки - если это важно.

0 голосов
/ 18 января 2019

Вы можете попытаться найти эти функции, используя Детектор углов Харриса .

Также проверьте, может ли findContours с анализом пересечений результатов дать вам полезную информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...