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)