2017-01-31 2 views
0

Я хочу преобразовать png изображение в gif. Для этого я читаю данные каждого пикселя из этого png-изображения, перерисовывая его в HTML-холст. Затем я удалил альфа-канал из этих данных изображения png. Наконец, я квантовал массив пикселей на 256 цветовых палитр. Теперь, чтобы построить образ gif, я должен теперь сопоставить каждый пиксель с его ближайшим цветом в палитре. Я сравнил евклидово расстояние между пикселями и каждым цветом в палитре. Это занимает очень много времени, плюс я получаю очень плохое качество gif. Каков оптимальный способ сопоставления каждого пикселя изображения в gif-палитре?Как сопоставить значение rgb каждого пикселя с предопределенной палитрой?

ответ

0

Попробуйте использовать цветовое пространство HSV вместо пространства RGB.

Заканчивать этот вопрос:

Calculate distance between colors in HSV space

«расстояние» А на ВПГ-пространстве представляет собой лучше, что наши меры глаза как «расстояние» при сравнении цвета. Вы можете попробовать и поиграть, применив различные веса к цветам оттенка, насыщенности и значения. Наш глаз имеет 20-кратное количество рецепторов для яркого/темного распознавания, как для распознавания цвета, поэтому попробуйте дать Value-part немного больший вес.

Для исполнительной части: вы можете хорошо управлять работой цветового приближения параллельно, так как каждый пиксель не зависит от всех остальных.

И наконец: 256 цветов довольно низки, поэтому не ожидайте отличного качества изображения. Вы уменьшаете 16.700.000 цветов до 256, помните об этом.

+0

Я пробовал цветное пространство L * a * b *, которое лучше HSL HSV, но это тоже не принесло хорошего результата. – gnikesh

Смежные вопросы