Re: Понижение глубины цвета

From
Sergey Andrianov (2:5020/1507.400)
To
Vladimir Siltchenko
Date
2002-12-07T21:51:14Z
Area
RU.ALGORITHMS
Здравствуй, Vladimir!

Однажды 15-Nov-02  в 23:30   Vladimir Siltchenko (2:452/23.25)
написал       All    по поводу
-=-   Понижение глубины цвета  -=-

VS> Есть исходная картинка в 24 битном цвете.

VS> Нужно понизить глубину цвета до 256 цветов (т-е цветовая карта).

VS> Первое, что пришло в голову: все возможные цвета разбиваются на 256 групп. В
VS> каждой группе вычисляется среднее арифметическое по всем цветам из 
VS> картинки, в нее входящим. После проходимся по картинке и кажому цвету 
VS> назначаем индекс из ранее составленного 256`ти байтного массива.
VS> Результат, мягко говоря, не очень. :)

VS> Подскажите, плз, анормально работающий алгоритм.

VS> P.S. Память и скорость работы абсолютно некритичны. Kритична, скорее. 
VS> сложность реализации и понимания. :)

	На самом деле задача разбивается на две:
1. Подбор оптимальной палитры.
2. Приведение картинки к выбранной палитре.
	Самое интересное, что для обеспечения хорошего качества алгоритм первого этапа должен выбираться в зависимости от того, какой алгоритм будет использован на втором. 
	А на втором обычно применяется либо округление к ближайшему, либо дизеринг. И тот и другой случай имеет свои ньюансы. Например, в первом случае, если мы при определении расстояния используем весовые коэффициенты, то и при подборе палитры следует пользоваться этими же коэффициентами. Во втором лучших результатов можно добиться при 4-точечном дизеринге, если чередовать направления проходов. 

                  До свидания,  в  21:46 MSK
                                 Sergey

---
 * Origin: Sergiev Posad (2:5020/1507.400)