Первое, что приходит в голову - алгоритм кластеризации
K-means. На сколько я знаю, он часто используется для построения палитр при конвертации изображения в индексные цвета. То есть, даже если на изображении нет 2 чётких доминирующих цветов, но есть близкие оттенки (небольшие градиенты, затенения или осветления), то он найдёт их средние значения.