Я все еще пытаюсь придумать более быстрый / лучший метод, но я думаю, что должно работать следующее:
- пороговое значение вашего изображения для чистого черного и белого
- создать и сохранить список всех черных пикселей для последующего использования
- пометьте свое изображение так, чтобы каждый белый шестиугольник был эффективно заполнен уникальным цветом (или оттенком серого) - некоторые люди называют это "маркировка" , некоторые называют его "Анализ BLOB-объектов ", некоторые называют это " Анализ связанных компонентов ". Как бы это ни называлось, вы получите что-то вроде этого:
- Теперь посмотрите на каждый черный пиксель из списка, который вы сохранили на втором шаге, и посчитайте, сколько разных цветов, кроме черного, находятся в окружающей области 9x9 или 15x15. Если это три, это, вероятно, пересечение, как вы ищете.
Конечно, есть разные варианты - например, вы можете установить "минимальное расстояние от другого пересечения" сверху. Или "черная линия сначала прореживается" . Или расширение каждого шарика, чтобы размыть черные линии и сделать три цвета ближе друг к другу. Вы можете уменьшить свое изображение (стараясь использовать NEAREST_NEIGHBOUR вместо интерполяции) после маркировки, чтобы сократить время обработки - если это важно.