Если у вас действительно есть координаты центра каждого числового поля, и вы, возможно, можете немного отрегулировать получение изображения, это должно быть выполнимой задачей.
Проблема, которую я вижу здесь, заключается в том, что у вас есть градиент яркости на вашем изображении, от которого вы должны избавиться, либо сделав лучшую картинку, либо используя большой фильтр Гаусса и вычитая изображение.
В противном случае, я не уверен, что вы найдете хороший порог яркости, чтобы отделить скрещенные от непересекающихся.
Другой подход, который вы можете использовать, - это вычисление дисперсии ваших пикселей. Это дает вам хороший локальный показатель того, будет ли темное перо распространять ваше распределение пикселей. Быстрый тест выглядит многообещающе
Обратите внимание, что у меня не было реальных позиций коробок. Я просто разделил ваше изображение на равные по размеру области, что не совсем корректно в отношении структуры типа «блок / вложенный блок». Поэтому в нем есть некоторые ложные срабатывания из-за красных треугольников в каждом верхнем левом углу и из-за некоторых пересекающихся крестов.
Итак, вот что я сделал:
- Возьмите свое изображение без красного канала и сделайте изображение серого уровня.
- Фильтрация этого изображения с гауссианой радиуса 100 и вычитание этого из изображения.
- Я разделил ваше изображение на (7 * 6) x (7 * 2) субрегионов.
- Рассчитал дисперсию каждого субрегиона и использовал порог дисперсии около 0,017 для приведенного выше изображения
- Каждая коробка с большей дисперсией была пересечена.