Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации
Содержание | Предыдущий | Следующий

  Глава 6

Цвет

Цветная обработка изображений является одним из фундаментальных компонентов любой графической системы, и это часто - источник большой сложности в модели обработки изображений. Java 2D™ API оказывает поддержку для высококачественного цветного вывода, который удобен и позволяет усовершенствованным клиентам делать сложное использование цвета.

Ключевые классы управления цветом в Java 2-D API ColorSpace, Color, ColorModel:

6.1 Классы

Класс
Описание
ColorSpace
Идентифицирует цветовое пространство a Color объект, Image, BufferedImage, или GraphicsDevice. Имеет методы, чтобы преобразовать между RGB и цветовыми пространствами CIEXYZ.
ICC_ColorSpace
Расширяется: ColorSpace
Представляет независящие от устройств и зависящие от устройств цветовые пространства, основанные на Спецификации Формата Профиля ICC.
ICC_Profile
Представление цветных данных профиля для независимого от устройств и устройства зависимые цветовые пространства, основанные на Спецификации Формата Профиля ICC.
ICC_ProfileGray
Расширяется: ICC_Profile
Представление серого типа цветового пространства.
ICC_ProfileRGB
Расширяется: ICC_Profile
Представление цветового пространства вводит RGB.

6.2 Цветные Понятия

A ColorModel используется, чтобы интерпретировать пиксельные данные в изображении. Это включает отображающиеся компоненты в полосы изображения к компонентам определенного цветового пространства. Это могло бы также включить пиксельные компоненты извлечения от упакованных пиксельных данных, получение многократных компонентов от единственной полосы, используя маски, и преобразовывая пиксельные данные через таблицу поиска.

Чтобы определить значение цвета определенного пикселя в изображении, Вы должны знать, как информация о цвете кодируется в каждом пикселе. ColorModel связанный с изображением инкапсулирует данные и методы, необходимые для того, чтобы преобразовать пиксельное значение в и от его составляющих компонентов цвета.

6.2.0 Цвет

Java 2D™ API обеспечивает две цветовых модели в дополнение к DirectColorModel и IndexColorModel определенный в JDK 1.1 выпуска программного обеспечения:

6.2.0.1 ColorSpace

A ColorSpace объект представляет систему для того, чтобы измерить цвета, обычно используя три отдельных числовых значения. Например, RGB и CMYK являются цветовыми пространствами. A ColorSpace объект служит тегом colorspace, который идентифицирует определенное цветовое пространство a Color возразите или через a ColorModel объект, Image, BufferedImage, или GraphicsConfiguration. ColorSpace обеспечивает методы, которые преобразовывают Colors в определенном цветовом пространстве к и от sRGB и к и от четко определенного CIEXYZ цветовое пространство.

Все ColorSpace объекты должны быть в состоянии отобразить цвет от представленного цветового пространства в sRGB и преобразуйте sRGB цвет в представленное цветовое пространство. Начиная с каждого Color содержит a ColorSpace объект, набор явно или по умолчанию, каждый Color может также быть преобразован в sRGB. Каждый GraphicsConfiguration связывается с a ColorSpace возразите, что поочередно имеет связанное ColorSpace. Цвет, определенный в любом цветовом пространстве, может быть выведен на экран любым устройством, отображая это через sRGB как промежуточное цветовое пространство.

Методы, используемые для этого процесса, toRGB и fromRGB:

Хотя отображаясь через sRGB всегда работы, это - не всегда лучшее решение. С одной стороны, sRGB не может представить каждый цвет в полной палитре CIEXYZ цвета. Если цвет определяется в некотором пространстве, у которого есть различная палитра (спектр представимых цветов) чем sRGB, тогда использование sRGB поскольку промежуточное пространство приводит к потере информации. Рассмотреть эту проблему, ColorSpace класс может отобразить цвета на и от другого цветового пространства, “пространство преобразования” CIEXYZ.

Методы toCIEXYZ и fromCIEXYZ отобразите значения цвета от представленного цветового пространства до пространства преобразования. Эти методы поддерживают преобразования между любыми двумя цветовыми пространствами в разумно высокой степени точности, один Color за один раз. Однако, ожидается, что Java 2-D реализации API будет поддерживать высокоэффективное преобразование, основанное на базовых системах управления цветом платформы, работающих на всех изображениях. (См. ColorConvertOp в "Обработке изображений" на странице 67.)

 Рисунок 6-1 и  рисунок 6-2 иллюстрируют процесс преобразования цвета, определенного в цветовом пространстве CMYK для дисплея на цветном мониторе RGB.  Рисунок 6-1 показывает отображение через sRGB. Поскольку это число иллюстрирует, преобразование цвета CMYK к цвету RGB не точно из-за несоответствия палитры. 1

Предыдущий контекст описывает эту графику.

Рисунок 6-1, Отображающийся Через sRGB

 Рисунок 6-2 показывает то же самое использование процесса CIEXYZ как пространство преобразования. Когда CIEXYZ используется, через цвет проходят точно.

Предыдущий контекст описывает эту графику.

Рисунок 6-2, Отображающийся Через CIEXYZ

6.2.0.2 ICC_Profile и ICC_ColorSpace

ColorSpace фактически абстрактный класс. Java 2-D API обеспечивает одну реализацию, ICC_ColorSpace, который основан на данных Профиля ICC как представлено ICC_Profile класс. Можно определить свои собственные подклассы, чтобы представить произвольные цветовые пространства, пока методы, обсужденные выше, реализуются. Однако, большинство разработчиков может просто использовать значение по умолчанию sRGB ColorSpace или цветовые пространства, которые представляются обычно доступными Профилями ICC, такими как профили для мониторов и принтеров, или профили, встроенные в данные изображения.

“ColorSpace” на странице 90 описывает как ColorSpace объекты представляют цветовое пространство и как цвета в представленном пространстве могут быть отображены на и от пространства преобразования. Системы управления цветом часто используются, чтобы обработать отображение между цветовыми пространствами. Типичная система управления цветом (CMS) управляет профилями ICC, которые подобны ColorSpace объекты; профили ICC описывают входное пространство и пространство соединения, и определяют, как отобразиться между ними. Системы управления цветом очень хороши в выяснении, как отобразить цвет, тегированный с одним профилем в цветовое пространство другого профиля.

Java 2-D API определяет вызванный класс ICC_Profile это содержит данные для произвольного Профиля ICC. ICC_ColorSpace реализация краткого обзора ColorSpace класс. ICC_ColorSpace объекты могут быть созданы из ICC_Profiles. (Есть некоторые ограничения — не, все Профили ICC являются подходящими для определения ICC_ColorSpace).

ICC_Profile имеет несколько подклассов, которые соответствуют определенным типам цветового пространства, такой как ICC_ProfileRGB и ICC_ProfileGray. Каждый подкласс ICC_Profile имеет четко определенное входное пространство (такое как пространство RGB) и четко определенное пространство соединения (как CIEXYZ). Java 2-D API может использовать CMS платформы, чтобы получить доступ к цветным профилям для различных устройств, таких как сканеры, принтеры, и мониторы. Это может также использовать CMS, чтобы найти лучшее отображение между профилями.

6.2.1 Описание Цветов

Color класс обеспечивает описание цвета в определенном цветовом пространстве. Экземпляр Color содержит значение компонентов цвета и a ColorSpace объект. Поскольку a ColorSpace объект может быть определен в дополнение к компонентам цвета когда новый экземпляр Color создается, Color класс может обработать цвета в любом цветовом пространстве.

Color у класса есть много методов, которые поддерживают предложенное стандартное вызванное цветовое пространство RGB sRGB (см. http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html). sRGB пространство цвета по умолчанию для Java 2-D API. Несколько конструкторов, определенных Цветным классом, опускают ColorSpace параметр. Эти конструкторы предполагают, что значения RGB цвета определяются в sRGB, и используйте экземпляр по умолчанию ColorSpace представлять то пространство.

Java 2-D использование API sRGB как удобство прикладным программистам, не как ссылочное цветовое пространство для цветного преобразования. Много приложений прежде всего касаются изображений RGB и мониторов, и определение стандартного цветового пространства RGB делает запись таких приложений легче. ColorSpace класс определяет методы toRGB и fromRGB так, чтобы разработчики могли легко получить цвета в этом стандартном пространстве. Эти методы не предназначаются, чтобы использоваться для очень точной коррекции цвета или преобразований. См. “ColorSpace” на странице 90 для получения дополнительной информации.

Создать цвет в цветовом пространстве кроме sRGB, Вы используете Color конструктор, который берет a ColorSpace возразите и массив плаваний, которые представляют компоненты цвета, соответствующие тому пространству. ColorSpace объект идентифицирует цветовое пространство.

Чтобы вывести на экран прямоугольник определенного цвета, такого как синий смесевой цвет, Вы нуждаетесь в способе описать этот цвет к системе. Есть много различных способов описать цвет; например, цвет мог быть описан как ряд красного, зеленого, и синего (RGB) компоненты, или ряд синего, пурпурного, желтого, и черного (CMYK) компоненты. Эти различные методы для того, чтобы определить цвета вызывают цветовыми пространствами.

Как Вы, вероятно, знаете, цвета на мониторе сгенерированы, смешивая различное количество красного, зеленого, и синего света. Поэтому, использование цветового пространства RGB является стандартным для того, чтобы отобразить на компьютерных мониторах. Точно так же использование печати процесса с четырьмя цветами синяя, пурпурная, желтая, и прибыль, чтобы произвести цвет на печатной странице; печатные цвета определяются как проценты в цветовом пространстве CMYK.

Из-за распространенности компьютерных мониторов и цветной печати, RGB и цветовые пространства CMYK оба обычно используются, чтобы описать цвета. Однако, у обоих типов цветовых пространств есть фундаментальный недостаток — они являются зависящими от устройств. Синие чернила, используемые одним принтером, не могли бы точно соответствовать синие чернила, используемые другим. Точно так же цвет, описанный как цвет RGB, мог бы выглядеть синим на одном мониторе и багрянистый на другом.

6.2.2 Отображение Цветов через sRGB и CIEXYZ

Java 2-D API именует RGB и CMYK как типы цветового пространства. Определенная модель монитора с ее определенным фосфором определяет свое собственное цветовое пространство RGB. Точно так же у определенной модели принтера есть свое собственное цветовое пространство CMYK. Различный RGB или цветовые пространства CMYK могут быть связаны друг с другом через независящее от устройств цветовое пространство.

Стандарты для независящей от устройств спецификации цвета были определены Международной Комиссией по Освещению (CIE). Обычно используемое независящее от устройств цветовое пространство является цветовым пространством XYZ с тремя компонентами, разработанным CIE. Когда Вы определяете цветное использование CIEXYZ, Вы изолируетесь от зависимостей от устройства.

К сожалению, это не всегда практично, чтобы описать цвета в CIEXYZ цветовое пространство — есть допустимые причины представления цветов в других цветовых пространствах. Чтобы получить непротиворечивые результаты, когда цвет представляется, используя зависящее от устройств цветовое пространство, такое как определенное пространство RGB, необходимо показать, как то пространство RGB касается независящего от устройств пространства как CIEXYZ.

Один способ отобразиться между цветовыми пространствами состоит в том, чтобы присоединить информацию к пробелам, которая описывает, как зависящее от устройств пространство касается независящего от устройств пространства. Эту дополнительную информацию вызывают профилем. Обычно используемый тип цветного профиля является Профилем Цвета ICC, как определено Международным Цветным Консорциумом. Для получения дополнительной информации см. Спецификацию Формата Профиля ICC, версия 3.4, доступная в http://www.color.org.

 Рисунок 6-3 иллюстрирует, как чистый цвет и отсканированное изображение передают к Java 2-D API, и как они выводятся на экран различными устройствами вывода. Как можно видеть в  рисунке 6-3, у и входного цвета и изображения есть присоединенные профили.

использование профилей, чтобы отобразиться между цветовыми пространствами

Рисунок 6-3 Используя Профили, чтобы Отобразиться Между Цветовыми пространствами

6.2.2.1 Согласование цветов

Как только у API есть точно указанный цвет, он должен воспроизвести тот цвет на устройстве вывода, таком как монитор или принтер. У этих устройств есть собственные характеристики обработки изображений, которые должны быть приняты во внимание, чтобы удостовериться, что они приводят к корректным результатам. Другой профиль связывается с каждым устройством вывода, чтобы описать, как цвета должны быть преобразованы, чтобы привести к точным результатам.

Достижение непротиворечивого и точного цвета требует, чтобы и входные цвета и устройства вывода профилировались против стандартного цветового пространства. Например, входной цвет мог быть отображен от его исходного цветового пространства в стандартное независящее от устройств пространство, и затем отображен от того пространства до цветового пространства устройства вывода. Во многих отношениях преобразование цветов подражает преобразованию графических объектов в (xy) координатное пространство. В обоих случаях преобразование используется, чтобы определить координаты в "стандартном" пространстве и затем отобразить те координаты на специфичное для устройства пространство для вывода.

1Of курс, цвета, используемые в этих схемах, иллюстративны, не точны. Дело в том, что цвета не могли бы быть отображены точно между цветовыми пространствами, если соответствующее пространство преобразования не используется.

 


Содержание | Предыдущий | Следующий

Oracle и/или его филиалы Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами