Я можу помилятися, але приблизно так:
1. Зображення - це величезний тривимірний масив чисел, перші два виміри - просторові, третій - кольоровий, значення (Червоний, Зелений, Синій), де (0,0,0) - чорний, (255,0,0) - яскраво-червоний, (255,255,255) - білий (припустимо, у нас по байту на значення кольору).
2. Обчислюємо колір тла. Припускаємо, що тло займає більшу частину зображення і є більш-менш монотонним (тобто не буде, скажімо, неба і землі на тлі, або, принаймні, вони не будуть радикально різних кольорів); обчислюємо середнє значення кольору на зображенні і вважаємо його кольором тла.
3. Будуємо контрастне зображення "тло - не тло": якщо колір клітинки відрізняється від кольору тла на певну характеристику (наприклад, евклідова відстань більше 32), то це вважається не тлом. Позначаємо умовне "тло" чорним, "не тло" - білим (наприклад). Замість чорно-білого зображення можна використати просто двовимірний масив чисел, де, скажімо, -1 - тло, 0 - не тло.
4. Шукаємо методом рекурсивного пошуку в глибину окремі фігури і позначаємо їх різними кольорами (чи послідовними числами). Тобто просто перебираємо пікселі контрастного зображення, якщо знайшли десь не-тло (0 чи білий колір) - запускаємо рекурсивний пошук у глибину і позначаємо всі знайдені пікселі кольором (чи номером) наступної фігури (1,2,3 і т. д.). Якщо під час перебору пікселів знаходимо вже знайдені пікселі інших фігур - ігноруємо, очевидно.
5. Кількість фігур - шукана величина. Якщо ви при цьому складали зображення, а не масив чисел, можете його вивести, викладачу має сподобатися.