Подсчет каждого цвета можно выполнить с помощью алгоритма гистограммы, но это, вероятно, , а не , что вы ищете.Очень похожие цвета должны учитываться вместе.
Я бы предложил использовать квантование цветов Octree, которое автоматически уменьшит количество цветов при подсчете, тем самым сгруппировав похожие цвета в одно ведро.Одно описание алгоритма: http://www.cubic.org/docs/octree.htm
Забыл упомянуть: этот совет только для 24-битного PNG.Для 8-битного PNG у вас уже есть палитра, которая выполняет группировку цветов.Необходимо только построить таблицу значений 256 и вести подсчет каждого индекса палитры, как только вы его встретите.