Введение

В компьютерной графике квантование цвета или квантование цветного изображения - это квантование, применяемое к цветовым пространствам; это процесс, который уменьшает количество различных цветов, используемых в изображении, обычно с намерением, чтобы новое изображение было как можно более визуально похоже на оригинальное изображение. Компьютерные алгоритмы для выполнения квантования цвета на бит-картах изучаются с 1970-х годов. Цветовая квантование имеет решающее значение для отображения изображений с большим количеством цветов на устройствах, которые могут отображать только ограниченное количество цветов, обычно из-за ограничений памяти, и позволяет эффективно сжимать определенные типы изображений. Название "квантизация цвета" в основном используется в литературе по исследованию компьютерной графики; в приложениях используются такие термины, как оптимизированное генерация палитры, оптимальное генерация палитры или уменьшение глубины цвета. Некоторые из них вводят в заблуждение, поскольку палитры, генерируемые стандартными алгоритмами, не обязательно являются наилучшими.

Алгоритмы

Большинство стандартных методов рассматривают квантование цвета как проблему кластеризации точек в трехмерном пространстве, где точки представляют цвета, найденные на оригинальном изображении, а три оси представляют три цветных канала. Практически любой алгоритм трехмерного кластеризации может быть применен к квантованию цвета и наоборот. После расположения кластеров, как правило, в каждом кластере усредняются точки, чтобы получить представительный цвет, к которому отображаются все цвета в этом кластере. Три цветных канала обычно красные, зеленые и синие, но еще один популярный выбор - это цветовое пространство Lab, в котором евклидово расстояние более соответствует различию восприятия. Самый популярный алгоритм квантования цвета, изобретенный Полом Гекбертом в 1979 году, - это алгоритм медианного разреза. В настоящее время используется множество вариантов этой схемы. До этого времени большинство квантования цветов проводилось с использованием алгоритма популяции или метода популяции, который по сути строит гистограмму диапазонов равного размера и присваивает цвета диапазонам, содержащим наибольшее количество точек. Более современный популярный метод - кластеризация с использованием октарей, впервые задуманный Гервауцем и Пургатхофером и улучшенный исследователем Xerox PARC Дэном Блумбергом. Если палитра фиксирована, как это часто бывает в системах квантования цвета в реальном времени, таких как те, которые используются в операционных системах, квантование цвета обычно выполняется с использованием алгоритма "расстояние прямой линии" или "ближайший цвет", который просто берет каждый цвет в оригинальном изображении и находит ближайшую входную палитру, где расстояние определяется расстоянием между двумя соответствующими точками в трехмерном пространстве. Другими словами, если цвета и , мы хотим минимизировать расстояние Евклида: это эффективно расщепляет цветовой куб в диаграмму Воронои, где вхождения палитры являются точками, а ячейка содержит все цвета, отображающие одну входную палитру. Существуют эффективные алгоритмы из вычислительной геометрии для вычисления диаграмм Воронои и определения того, в какую область попадает данная точка; на практике индексированные палитра настолько малы, что они обычно являются чрезмерными. Количественная оценка цвета часто сочетается с дитером, который может устранить неприятные артефакты, такие как полосы, которые появляются при количественном оценке гладких градиентов и придают внешний вид большему количеству цветов. Некоторые современные схемы квантования цвета пытаются объединить выбор палитры с дитеррацией на одном этапе, а не выполнять их независимо. Было изобретено несколько других методов, которые используются гораздо реже, но используют совершенно другие подходы. Алгоритм Local K means, разработанный Олегом Веревкой в 1995 году, предназначен для использования в оконных системах, где основной набор "резервированных цветов" фиксирован для использования системой, и одновременно может отображаться много изображений с различными цветовыми схемами. Это схема посткластеризации, которая делает первоначальный прогноз палитры, а затем итеративно ее уточняет. В первые дни квантования цвета алгоритм кластеризации k-средств считался непригодным из-за его высоких вычислительных требований и чувствительности к инициализации. В 2011 году М. Эмре Селеби повторно исследовал эффективность k-средств в качестве цветового квантизатора. Он продемонстрировал, что эффективная реализация k средств превосходит большое количество методов квантования цвета. Высококачественный, но медленный алгоритм NeuQuant сокращает изображения до 256 цветов, обучая нейронную сеть Кохонена, которая самоорганизуется, учится соответствовать распределению цветов в входном изображении. Позиция каждого нейрона в пространстве RGB дает высококачественную цветовую карту, в которой соседствующие цвета похожи". Это особенно выгодно для изображений с градиентами. Наконец, одним из новых методов является пространственная квантование цвета, задуманный Пузича, Хелд, Кеттере, Бухман, и Фелнер из Боннского университета, который сочетает в себе колебание с палитрой генерации и упрощенной модели человеческого восприятия для получения визуально впечатляющих результатов даже для очень небольшого количества цветов. Он не рассматривает выбор палитры строго как проблему кластеризации, п...

История и применение

В первые дни работы ПК видеоадаптеры обычно поддерживали только 2, 4, 16 или (в конечном итоге) 256 цветов из-за ограничений видеопамяти; они предпочитали использовать видеопамять для большего количества пикселей (более высокое разрешение), а не большего количества цветов. Квантизация цвета помогла оправдать этот компромисс, сделав возможным отображение многих высокоцветных изображений в 16 и 256 цветовых режимах с ограниченным визуальным ухудшением. Многие операционные системы автоматически выполняют квантование и дитер, когда просматривают высокоцветные изображения в 256-цветном видеорежиме, что было важно, когда видеоустройства, ограниченные 256 цветовыми режимами, были доминирующими. Современные компьютеры могут отображать миллионы цветов одновременно, намного больше, чем может различать человеческий глаз, ограничивая это применение в основном мобильными устройствами и устаревшим оборудованием. В настоящее время квантование цвета используется в основном в GIF и PNG изображениях. GIF, на протяжении долгого времени самый популярный безпотерь и анимированный формат битмапа во Всемирной паутине, поддерживает только до 256 цветов, что требует квантования для многих изображений. Некоторые ранние веб-браузеры ограничивали изображения использованием определенной палитры, известной как веб-цвета, что приводило к серьезному снижению качества по сравнению с оптимизированными палитрами. Изображения PNG поддерживают 24-битный цвет, но часто могут быть значительно уменьшены в размерах файлов без значительной визуальной деградации путем применения квантования цвета, поскольку файлы PNG используют меньше бит на пиксель для паллетных изображений. Бесконечное количество цветов, доступных через объектив камеры, невозможно отобразить на экране компьютера; таким образом, преобразование любой фотографии в цифровое представление обязательно включает в себя некоторую квантование. Практически говоря, 24-битный цвет достаточно богат, чтобы представлять почти все цвета, воспринимаемые людьми, с достаточно небольшой ошибкой, чтобы быть визуально идентичными (если представлены верно), в пределах доступного цветового пространства. Однако цифровизация цвета, либо в детекторе камеры, либо на экране, обязательно ограничивает доступное цветовое пространство. Следовательно, существует много цветов, которые невозможно воспроизвести, независимо от того, сколько бит используется для представления цвета. Например, в типичных RGB-цветовых пространствах (обычных на компьютерных мониторах) невозможно воспроизвести полный диапазон зеленых цветов, которые способен воспринимать человеческий глаз. С несколькими цветами, доступными на ранних компьютерах, различные алгоритмы квантования производили очень разные выходное изображение. В результате, много времени было потрачено на написание сложных алгоритмов, чтобы они были более реалистичными.

Квантизация для сжатия изображения

Многие форматы файлов изображений поддерживают индексированный цвет. Вся палитра изображений обычно выбирает 256 "репрезентативных" цветов для всего изображения, где каждый пиксель ссылается на любой из цветов в палитре, как в формате файлов GIF и PNG. Палитра блоков обычно выбирает 2 или 4 цвета для каждого блока пикселей 4х4, используемых в BTC, CCC, S2TC и S3TC.

Поддержка редактора

Многие редакторы графики битмапов содержат встроенную поддержку квантования цвета и автоматически выполняют его при преобразовании изображения с большим количеством цветов в формат изображения с меньшим количеством цветов. Большинство из этих реализаций позволяют пользователю установить точное количество желаемых цветов. Примеры такой поддержки включают: Функция Mode→Indexed Color в Photoshop обеспечивает ряд алгоритмов квантования, начиная от фиксированной системы Windows и веб-палеты до проприетарных локальных и глобальных алгоритмов для генерации палит, подходящих для конкретного изображения или изображений. Paint Shop Pro, в диалоговом окне Colors→Decrease Color Depth, предоставляет три стандартных алгоритма квантования цвета: медианный вырез, октри и фиксированную стандартную палитру "web safe". В GIMP 2.8, опция "Конвертировать изображение в индексированные цвета" (Image→Mode→Indexed) позволяет создавать оптимальную палитру с выбором количества цветов от 2 до 256, возможность использования веб-оптимизированной палитра, использования черно-белой палитра (1 бит) или использования пользовательской палитра. Он позволяет удалять неиспользуемые цвета из палитры и предлагает множество вариантов дитеррации: None, Floyd Steinberg (нормальный), Floyd Steinberg (уменьшенное цветное кровотечение) и Positioned, а также возможность включить дитеррацию прозрачности. Квантизация цвета также используется для создания эффектов постеризации, хотя постеризация имеет несколько другую цель - минимизировать количество цветов, используемых в одном и том же цветовом пространстве, и обычно использует фиксированную палитру. Некоторые редакторы векторной графики также используют квантование цвета, особенно для растровых векторных методов, которые создают трассировки бит-карточных изображений с помощью обнаружения краев. Path→Trace Bitmap: Multiple Scans: Функция Color использует квантование октариев для создания цветовых следов.