DEMO.DESIGN
Frequently Asked Questions
 
оглавление | demo party в ex-СССР | infused bytes e-mag | новости от ib/news | другие проекты | письмо | win koi lat

следующий фpагмент (2)
- [93] Computer Graphics (2:5030/84) ----------------------------- SU.GRAPHICS - Msg : 13 of 13 From : Serguey Zefirov 2:5020/620.15 30 Dec 96 11:54:00 To : Alexey Stahnov Subj : изменение яркости -------------------------------------------------------------------------------- AS> Hе подскажет ли достопочтимый All каким образом сделать плавное AS> уменьшение/ увеличение яркости картинки без потери цветопередачи.( dec AS> rgb не предлагать т.к. из- за повышенной чувствительности глаза к AS> зеленому картинка резко зеленеет). newrgb=(destrgb-srcrgb)*fadestep+srcrgb; А если и это глаз чувствовать будет, гамма коppекцию сделай. ;) rgb=0..rgbmax; newrgb=exp(gamma_coef*ln(rgb/rgbmax)); gamma_coef=0.3 по стандаpту, указанному в докфаке. Buy! Сеpега - raider in the Q [Team sz * -k] ... Каждому свое - а мне самое лучшее.
следующий фpагмент (3)|пpедыдущий фpагмент (1)
- [93] Computer Graphics (2:5030/84) ----------------------------- SU.GRAPHICS - Msg : 49 of 50 From : Alexander Samotohin 2:5020/69.28 20 Nov 96 15:19:00 To : Andrey Filimonov Subj : Re: gamma correction -------------------------------------------------------------------------------- Hello Andrey! Понедельник Hоябpь 18 1996, письмо Andrey Filimonov к All: AF> Вот,но хотелось бы знать более точную функцию зависимости реальной AF> интенсивности от числового значения.Hеужели этого тоже никто не знает? Hиже описание гамма-коррекции, заимствованное из спецификации формата TIFF 5.0. Перевод с английского мой. С уважением А.Самотохин === Cut === VII. ColorResponseCurves Этот тег определяет три таблицы цветопередачи, по одной для красной, зеленой и синей компонент. Ширина каждого элемента равна 16 битам, т.е. соответствует типу SHORT. Минимальная интенсивность представляется 0, а максимальная 65535. апример, черный цвет описывается как 0,0,0, и белый как 65535, 65535, 65535. Размер каждой таблицы равен 2**BitsPerSample. Поле ColorResponseCurves для RGB-данных, в которых каждая компонента имеет глубину в 8 бит, состоит из 3*256 элементов. Сначала должны следовать 256 красных элементов, затем 256 зеленых и 256 синих. Цель поля ColorResponseCurves состоит в создании таблицы соответствия между значениями цветовых компонент и указанными значениями интенсивности, чтобы изображения, созданные на одной системе, могли высвечиваться в другой с минимальными потерями цветовой точности. Таким образом, поле ColorResponseCurves описывает "гамму" изображения, и программы чтения TIFF или другие системы могут выполнить компенсацию гаммы изображения и гаммы читающей системы. Гамма - это термин, относящийся к обычно нелинейному отклику большинства систем высвечивания, включая мониторы. В большинстве систем высвечивания напряжение, направляемое в ЭЛТ, прямо пропорционально значению компонент красного, зеленого и синего цвета. Однако результирующее свечение возбуждаемого фосфора не прямо пропорционально напряжению. Приближенное уравнение для для большинства дисплеев имеет вид: свечение = напряжение ** гамма Значение гамма 2.2 в стандарте NTSC адекватно описывает большинство видеосистем. Стандартное значение гамма 2.2 предполагает "матовое" высвечивание (ам неизвестны практические рекомендации SMPTE для гамма). Пример, приведенный ниже использует 8-битную компоненту со значением 127: напряжение = 127 / 255 = 0.4980 свечение = 0.4980 ** 2.2 = 0.2157 В последующих примерах мы будем рассматривать только одну компоненту основного цвета и, следовательно, только одну таблицу цветопередачи. Аналогичный анализ применим для каждой из трех (красной, зеленой и синей) компонент и таблиц. Также, не теряя общности, мы будем считать, что если нет аппаратной таблицы цветов (палитры), то мы должны изменять значения пикселов сами. Если же палитра присутствует, то все манипуляции должны проводиться с ней, а не с пикселами. Если для цветного изображения поле ColorResponseCurves отсутствует, то программа чтения должна предполагать, что гамма равна 2.2 для каждой из трех основных компонент цвета. Таблица цветопередачи по умолчанию может быть сгенерирована с помощью следующего кода на C: ValuesPerSample = 1 << BitsPerSample; for (curve[0] = 0, i = 1; i < ValuesPerSample; i++) curve[i] = floor(pow(i/(ValuesPerSample - 1.0), 2.2) * 65535.0 + .5); Прикладные программы высвечивания и визуализации могут знать свое собственное гамма, которое мы будем называть "получаемым гамма" (екалиброванные системы обычно считают, что их гамма равно 2.2, что не приводит к большим ошибкам). Используя эту информацию, программа может выполнить компенсацию для гаммы изображения способом, описанным ниже. Если исходная система и система-получатель адекватно описываются с помощью гамма, равного 2.2, то программа записи может пропустить поле ColorResponseCurves и программа чтения может просто прочитать данные в основной буфер. Если программа записи записала поле ColorResponseCurves, то программа чтения должна предполагать, что значения гамма различаются. Она может выполнить следующие вычисления для каждой компоненты изображения: NewSampleValue = floor (pow(curve[OldSampleValue]/65535.0, 1.0 / DestinationGamma) * (ValuesPerSample - 1.0) + .5); Конечно, если гамма системы-получателя плохо аппроксимируется экспоненциальной функцией, для уточнения можно использовать некоторую таблицу, которая будет выдавать значения, подставляемые на место 1.0/DestinationGamma. Пропустите поле ColorResponseCurves, если вы используете значение гамма по умолчанию. Это сэкономит в общем случае около 1.5K и, кроме того, выбрасывание - это наилучший способ сжатия. е используйте это поле для запоминания палитры. Для этого предназначен тег ColorMap. Однако отметим, что поле ColorResponseCurves может использоваться для уточнения информации поля ColorMap, если это нужно. В приведенных выше примерах предполагалось, что характеристики отклика исходной системы и системы-получателя адекватно аппроксимируются единственным параметром гамма. Обычно это верно, но использование таблицы вместо одного параметра гамма придает гибкость для описания более сложных отношений, без дополнительных вычислений и усложнения. === Cut ===

Всего 2 фpагмент(а/ов) |пpедыдущий фpагмент (2)

Если вы хотите дополнить FAQ - пожалуйста пишите.

design/collection/some content by Frog,
DEMO DESIGN FAQ (C) Realm Of Illusion 1994-2000,
При перепечатке материалов этой страницы пожалуйста ссылайтесь на источник: "DEMO.DESIGN FAQ, http://www.enlight.ru/demo/faq".