Re: Понижение глубины цвета
- From
- Sergey Andrianov (2:5020/1507.400)
- To
- Max Pervukhin
- Date
- 2002-12-07T21:56:08Z
- Area
- RU.ALGORITHMS
Здравствуй, Max!
Однажды 23-Nov-02 в 22:43 Max Pervukhin (2:5000/111.35)
написал Vladimir Siltchenko по поводу
-=- Понижение глубины цвета -=-
VS>>> Есть исходная картинка в 24 битном цвете.
VS>>> Нужно понизить глубину цвета до 256 цветов (т-е цветовая карта).
VS>>> Первое, что пришло в голову: все возможные цвета разбиваются на
VS>>> 256 групп.
MP> Есть так называемый алгоритм двоичного разбиения цветового пространства.
MP> Состоит в следующем.
MP> Рассматриваем цвет как координаты точки в трехмерном пространстве.
MP> Все цвета использованные в картинке дадут нам множество точек в этом самом
MP> пространстве.
MP> Для этого множества строим минимальный ограничивающий паралелипипед. То
MP> есть по каждой цветовой координате находим максимальное и минимальное
MP> значения.
MP> Рубим этот паралелепипед вдоль самой длинной стороны. Мнощество точек
MP> (цветов) таким образом тоже делится на две части. Для каждого из этих
MP> множеств опять же строим минимальный ограничивающий паралелипипед, каждый
MP> из которых, в свою очередь рубим вдоль длинной стороны и делим множество
MP> цветов тоже пополам и тд.
MP> Рекурсивный алгоритм, как легко увидеть. На каждом уровне рекурсии
MP> количество подмножеств исходного цветового множества удваивается.
MP> Kогда их станет столько, сколько нужно (в данном случае 256) работу
MP> алгоритма можно закончить и приблизить все цвета одного подмножества одним
MP> цветом - средним цветом или еще как нибудь.
Вот здесь и имеет значение алгоритм приведения к фиксированной палитре: при округлении можно брать средний, а при дизеринге предпочтительнее цвета расположенные ближе к периферии.
MP> После этого заменить цвета в исходном изображении на посчитанные таким вот
MP> образом. Для улучшения результатов можно использовать дизеринг.
До свидания, в 21:54 MSK
Sergey
---
* Origin: Sergiev Posad (2:5020/1507.400)