Псевдокод:
найдено_кластеров=0
Цикл по Y { Цикл по X {
Если клетка[X,Y]==чёрная /*нашли новый кластер*/, то
размеры_кластеров[++найдено_кластеров]
=закрасить_белым_кластер_и_посчитать_размер[X,Y]
}
}
Алгоритм закрашивания нагуглить готовый и добавить туда подсчёт клеток.
Закрашивание и подсчёт зависит от функции соседства - соседями можно считать только четыре клетки, либо восемь с диагоналями, от этого зависит, что считать кластером. Отдельно надо уточнять, как считать если внутри большого кластера окажется маленький кластер.