Сначала я бы ответил на несколько вопросов:
- Будет ли объект полностью заключен в ячейку сетки? Или это может быть помещено сверху линии сетки? (Другими словами, будет ли объект скрывать линию от камеры?)
- Будет ли в одной клетке более одного объекта?
- Может ли объект занимать более одной клетки? (тесно связано с вопросом 1)
Учитывая разумные ответы на эти вопросы, я полагаю, что проблему можно разбить на две части: во-первых, определить центры каждого пространства сетки. Для подсчета объектов вы можете затем отобрать этот регион, чтобы увидеть, есть ли что-нибудь «не фоновое».
Затем можно предположить, что пространство сетки определяется четырьмя сильными, регулярно расположенными угловыми элементами. (Для обсуждения я предполагаю, что вы выполнили начальную подготовку изображения по мере необходимости: выравнивание гистограммы, размытие по Гауссу для уменьшения шума и т. Д.) Оттуда вы можете попробовать некоторые методы OpenCV для нахождения углов (угол Харриса) детектор, cvGoodFeaturesToTrack и т. д.). Вероятно, вы можете позаимствовать некоторые из методов, найденных в примере нахождения квадрата в OpenCV (samples / c / square.c). Для этой задачи, вероятно, достаточно предположить, что центр сетки - это только центр тяжести каждого набора «смежных» (или достаточно близких) углов.
В качестве альтернативы вы можете использовать преобразование Хафа для определения главных горизонтальных и вертикальных линий на изображении. Затем вы можете определить точки пересечения, чтобы определить экстенты каждой ячейки сетки. Эта реализация может быть более сложной, поскольку вывести структуру (или смежность) из «близлежащих» вершин, чтобы найти центр сетки, кажется более сложным.