Это может быть только потому, что я сейчас работаю с SIFT, но мне кажется, что это может помочь вашей проблеме.
Это алгоритм, который сопоставляет один и тот же объект на двух разных изображениях, где объекты могут иметь разные ориентации, масштабы и могут рассматриваться с разных точек зрения на двух изображениях. Он также может работать, когда объект частично скрыт (как ваши утки) другим объектом.
Я бы предложил найти хорошее четкое изображение резиновой уточки (: D), а затем использовать некоторую реализацию SIFT ( Библиотека VLFeat - C с SIFT, но без визуализации , SIFT ++ - на основе VLFeat, но в C ++ , Роб Хесс в C с OpenCV ...).
Следует помнить, что сопоставление с SIFT (и всем остальным) не является идеальным - поэтому вы можете не получить точное количество резиновых уточек на рисунке.