Понижение глубины цвета
- From
- Max Pervukhin (2:5000/111.35)
- To
- Vladimir Siltchenko
- Date
- 2002-11-23T22:43:32Z
- Area
- RU.ALGORITHMS
│ Салют, *Vladimir*!
[]: Aqua - Turn Back Time
Wednesday November 20 2002 01:50, Andrew Starsh ══ Vladimir Siltchenko:
VS>> Есть исходная картинка в 24 битном цвете.
VS>> Нужно понизить глубину цвета до 256 цветов (т-е цветовая карта).
VS>> Первое, что пришло в голову: все возможные цвета разбиваются на
VS>> 256 групп.
Есть так называемый алгоритм двоичного разбиения цветового пространства.
Состоит в следующем.
Рассматриваем цвет как координаты точки в трехмерном пространстве.
Все цвета использованные в картинке дадут нам множество точек в этом самом
пространстве.
Для этого множества строим минимальный ограничивающий паралелипипед. То есть по
каждой цветовой координате находим максимальное и минимальное значения.
Рубим этот паралелепипед вдоль самой длинной стороны. Мнощество точек (цветов)
таким образом тоже делится на две части. Для каждого из этих множеств опять же
строим минимальный ограничивающий паралелипипед, каждый из которых, в свою
очередь рубим вдоль длинной стороны и делим множество цветов тоже пополам и тд.
Рекурсивный алгоритм, как легко увидеть. На каждом уровне рекурсии количество
подмножеств исходного цветового множества удваивается.
Когда их станет столько, сколько нужно (в данном случае 256) работу алгоритма
можно закончить и приблизить все цвета одного подмножества одним цветом -
средним цветом или еще как нибудь.
После этого заменить цвета в исходном изображении на посчитанные таким вот
образом. Для улучшения результатов можно использовать дизеринг.
.Макс │
... Перед тем, как yлyчшиться, ситyация yхyдшается.
--- [ maxfirst@mail.ru ] --- [ uin: 50245928 ] ---
* Origin: Solus ipse (2:5000/111.35)