У меня было несколько мыслей и я решил записать их в ImageMagick , но вы можете в равной степени проделать подобные вещи с OpenCV и findContours()
.
.
Я использовал это в качестве входного изображения:
Если вы немного размываете черные области, используя морфологию (или, наоборот, расширяете белые, то же самое происходит), каждая из точек будет отделена от соседних. Затем, если вы выполните «Анализ связанных компонентов» , вы увидите, что изображение имеет аномально большое количество очень маленьких точек, которые примерно такой же высоты, как ширина - характеристика окружностей или точек.
Вот код, который я использовал в Терминале для запуска ImageMagick :
magick dotmatrix.png -threshold 50% -morphology dilate disk:1 \
-define connected-components:verbose=true \
-connected-components 8 -auto-level result.png
В результате получается следующее изображение, в котором каждый обнаруженный шарик получает последовательно более яркий оттенок белого:
Более интересным, однако, является подробный вывод, который имеет одну строку вывода для каждого большого двоичного объекта, обнаруженного на изображении. Он показывает множество маленьких точек 2х2, 3х2 и точек одинакового размера с площадью около 7 пикселей, обведенных красным. Я бы использовал это в качестве основы для изучения еще ...