тем временем стал хотеть tiledpalettequant в виде dll еще больше 
случайно раздуплил, что он оказывается реально пилит изображение на тайлы, а после квантит эти самые тайлы в одну из четырех палитр. а значит можно родить алгоритм определения какую именно палитру из четырех использует конкретный тайл. и когда в черновом коде убедился, что это действительно так... стал писать кипятком и хотеть этот tiledpalettequant еще больше и больше.
Писал я такую утилиту больше 10 лет назад, судя по последнему изменению файла в 14 году. Для сортировки тайлов по палитрам использовал алгоритм k-means.
Алгоритм такой:
Пилим изображение на тайлы 8*8. Где каждый пиксель можно представить в виде RGB цвета, либо номера пикселя в общей палитре. Можно также вместо RGB передавать цвета в LAB цветовом пространстве.
Потом эти тайлы подаём на вход процедуры KMeansGenerator, и указываем на сколько класстеров поделить тайлы. 4 палитры, значит 4 класстера.
На выходе он нам даст массив, где будет указано к какому класстеру он отнёс тот или иной тайл. Далее в соответствии с этими данными создаём 4 изображения, гду рисуем наши тайлы. Потом каждое изображение подаём на вход алгоритму уменьшения цветов до 4 бит. Потом собираем все тайлы в одно изображение, где у каждого тайла своя палитра.