1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Гамма-коррекция

Тема в разделе "Eyeon Fusion & Generation", создана пользователем rozzza, 24 сен 2009.

Модераторы: Григорий Чаленко
  1. rozzza

    rozzza Знаток

    С нами с:
    10.12.2007
    Сообщения:
    113
    Симпатии:
    0
    Баллы:
    22
    Гамма-коррекция — коррекция функции яркости в зависимости от характеристик устройства вывода. Значение гаммы, равное 1, соответствует «идеальному» монитору, который имеет линейную зависимость отображения от белого к черному. Но таких мониторов не бывает — зависимость, в особенности для электронно-лучевых устройств, нелинейна. Для дисплеев компьютера значение гаммы обычно составляет значения от 1.5 до 2.2. (http://ru.wikipedia.org/wiki/Гамма-коррекция)
    Если мы выводим на экран монитора картинку без гаммы-коррекции, то наблюдаем на дисплее более темную картинку с пониженной гаммой. Конечно, некоторые форматы изображений могут содержать в себе информацию о гамма-коррекции монитора, тогда при выводе ее на экран мы видим картинку без гамма-искажений.
    ПО, с помощью которого мы просматриваем картинки, тоже не редко вносит свою гамма-коррекцию. При этом, мне кажется, должны существовать какие-то алгоритмы в этих программах, согласно которым не применяется гамма-коррекция к изображениям, которые содержат в своем формате гамму.
    Хотелось бы узнать, что делает фьюжен с картинкой, когда мы видим ее во вьюпорте. И зачем мы используем параметр conversion gamma?
     
  2. Григорий Чаленко

    Григорий Чаленко Moderator Команда форума

    С нами с:
    23.04.2005
    Сообщения:
    1.997
    Симпатии:
    13
    Баллы:
    1.254
    Очень хороший вопрос (и введение!).

    Фьюжн не производит каких-либо скрытых операций с гаммой картинки.
    Все преобразования задаются явно.

    Например, когда мы импортим DPX, по умолчанию он конвертируется из логарифмического в истинно-линейный (Conversion Gamma=1 by default).
    Чтобы скомпенсировать нелинейность дисплея, во Фьюжене мы можем пойти несколькими путями:

    1a. Изменить Conversion Gamma прямо в лоадере. Типичное значение для большинства мониторов Conversion Gamma=2.2
    1b. Оставить лоадер в покое и прицепить сразу за ним инструмент Gamut, установить в нем Output Space=sRGB
    1c. Вместо Gamut прицепить Brightness/Contrast и установить Gamma=2.2

    Наиболее точный из вышеперечиселнных способов - 1b. Наименее точный, хотя наиболее наглядный - 1c.
    Разница в том, что BC производит простую гамма-коррекцию, в то время как Gmt учитывает стандартный прямой участок графика конверсии в самых темных областях.
    В смысле гамма-компенсации, то, что делает BC (Gamma=2.2), эквивалентно Gmt (Output Space=Simplified sRGB).

    Но дело в том, что остальные инструмены Фьюжн, как и большинство инструментов большинства других софтов делают вид, что они ничего не знают о гамма-компенсации.
    И проблема становится очевидной, когда мы пытаемся накладывать полупрозрачные изображения (или изображения с очень размытыми краями) поверх других изображений. Переднеплановое изображение становится будто более явное, где фоновая картинка светлая и скрадывается поверх темных областей фона.
    Проблема, так же, настигает нас, когда мы делаем дефокус и моушн-блюр. Мы с удивлением обнаруживаем, что в дефокусе не получается красивых четких кружочков (bokeh) на месте, где в оригинале были блики, а на моушнблюре блики не превращаются в красивые четкие линии.

    В результате, люди всего мира пришли к выводу, что в подобной ситуации подобным инструментам нужно подсовывать картинку не гамма-компенсированную.
    Но как же быть тогда, ведь картинка выглядит темной!

    Предлагаю несколько вариантов:
    2a. включить LUT=Fusion View LUT в Display View, нажать Edit..., установить Color Gamma=2.2. Этот способ применяет Simplified sRGB, т.е. тупо извлекает корень 2.2 из значений цвета, но делает это очень быстро, т.к. использует GPU нашей (ну, или вашей) видеокарты.
    2b. Взять прекрасный Gamut (Output Space=sRGB) и сохранить его как .settings в папку Fusion:\LUTs. Затем выбрать его из списка LUT в Display view. Более правильно, но медленно.
    2с. Дождаться, пока кто-нибудь напишет гамма-компенсирующий view shader в качестве LUT, либо найти этот шейдер, написанный без моего ведома, либо написать самим (для скриптописателей это очень простая задача). Можно, так же, послать запрос в Eyeon, убедившись, что такого шейдера, действительно, нет и что скриптописателей нет под рукой.
    2d. Смотреть свою картинку, подключая выход к специально созданной в композиции ноде Gamut (Output Space=sRGB). Это наименее удобный, но наиболее наглядный способ.

    Такой воркфлоу имеет свои неудобства во Фьюжн. Особенно, это заметно при применении ColorCorrector, который ведет себя не совсем адекватно, хотя и предсказуемо.

    Поэтому предлагаю третий, эксклюзивный вариант (которым сам в Чаще Всего пользуюсь):
    3a. Делаем гамма-компенсацию, как в пунктах 1x. Перед применением дефокуса, моушнблюра и сложением полупрозрачных (или с мягкими краями) картинок, понижаем гамму через BC (Gamma=1/2.2), после применения - возвращаем гамму в зад через BC (Gamma=2.2).
    3b. То же самое, только через Gamut (Source Space=sRGB), затем Gamut (Output Space=sRGB).
    По возможности, это удаление-возвращение гамма-компенсации должно соответствовать тому, что вы сотворили с картинкой при начальной гамма-компенсации, т.е. использовать везде Gmt, либо везде BC.

    Ну вот, вроде бы, и все.

    Предлагаю прочитать еще эту статью с картинками: Working with Gamma.

    Если остались какие-то вопросы, не стесняйтесь задавать.
     
  3. rozzza

    rozzza Знаток

    С нами с:
    10.12.2007
    Сообщения:
    113
    Симпатии:
    0
    Баллы:
    22
    Разве? А как же нода CineonLog?
     
  4. Григорий Чаленко

    Григорий Чаленко Moderator Команда форума

    С нами с:
    23.04.2005
    Сообщения:
    1.997
    Симпатии:
    13
    Баллы:
    1.254
    В CineonLog гамма-компенсация задается явно (просто в моих сеттангах умолчальное 1 заменено на 2.2). Конверсия лог-лин - отдельная тема.
     
  5. rozzza

    rozzza Знаток

    С нами с:
    10.12.2007
    Сообщения:
    113
    Симпатии:
    0
    Баллы:
    22
    Гриша, спасибо за такой развернутый ответ!
     
  6. vlk2k

    vlk2k Пользователь сайта

    С нами с:
    22.03.2006
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    2
    Григорий, спасибо большое за подробный и информативный ответ!!! :)
    а Rozz'е, персональное спасибо за правильный вопрос :)
     
  7. Григорий Чаленко

    Григорий Чаленко Moderator Команда форума

    С нами с:
    23.04.2005
    Сообщения:
    1.997
    Симпатии:
    13
    Баллы:
    1.254
    Для полноты картины еще стоит добавить о пользе прегрейда.

    Если вам пришлось иметь дело с сильно искаженными цветами в исходнике (как это традиционно бывает со сканами, сделанными одной московской компанией), необходимо перед вкомпаживанием новых элементов выставить для исходника правильные точку белого и черного.

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

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

    Проще всего сделать прегрейд так, чтоб потом можно было вернуть цвет назад, следующими двумя способами:
    1. Во время конвертации лог-лин (и Loader и CineonLog умеют работать с разными параметрами для всех трех цветовых каналов). После операций композитинга нужно просто выставить те же параметры при обратной лин-лог конверсии.
    2. Инструментом ColorCurves. Чтобы вернуть исходный цвет, достаточно сделать копию ноды CCv и в редакторе сплайнов сделать для нее Invert (кнопка в виде X).

    В общем, смысл всего выше и гораздо выше написанного в том, что при композитинге нужно работать с линейным изображением, у которого правильно выставлены точки черного, белого, серого и отсутствует гамма-компенсация.
     
  8. LabEG

    LabEG Знаток

    С нами с:
    13.10.2005
    Сообщения:
    126
    Симпатии:
    3
    Баллы:
    56
    Т.е. нужно работать с уже цветокорректорной картинкой?
    В смысле в цветокорректирующей программе делаем ее нормальную, а потом передаем в композ? Тогда как луше передавать в композ?
     
  9. rozzza

    rozzza Знаток

    С нами с:
    10.12.2007
    Сообщения:
    113
    Симпатии:
    0
    Баллы:
    22
    Для меня смысл всего выше и гораздо выше написанного свелся к тому, что надо использовать при композе линейное изображение с гаммой 2.2, если это не операции дефокуса, моушнблюра и сложение полупрозрачных (или с мягкими краями) картинок, или ты сам себе противоречишь, или я вообще ничего не понимаю.
     
  10. rozzza

    rozzza Знаток

    С нами с:
    10.12.2007
    Сообщения:
    113
    Симпатии:
    0
    Баллы:
    22
    Ноду CC ставить после конвертации log->lin?

    Как определить правильные точки белого и черного?
     
  11. Григорий Чаленко

    Григорий Чаленко Moderator Команда форума

    С нами с:
    23.04.2005
    Сообщения:
    1.997
    Симпатии:
    13
    Баллы:
    1.254
    Да, после. Но не CC, а CCv, т.к. CC невозможно инвертировать.

    Например, лист белой бумаги должен быть белым. Самые темные области не должны синить-краснить-зеленить.
    Можно, так же, вывести гистограмму и следить, чтоб диапазон уровней по трем каналам совпадал.
     
  12. Григорий Чаленко

    Григорий Чаленко Moderator Команда форума

    С нами с:
    23.04.2005
    Сообщения:
    1.997
    Симпатии:
    13
    Баллы:
    1.254
    В идеале - так, но часто сканы приходят без прегрейда. В этом случае, прегрейд можно делать прямо во Фьюжене перед применением мерджей, дефокусов и т.д.
     
  13. LabEG

    LabEG Знаток

    С нами с:
    13.10.2005
    Сообщения:
    126
    Симпатии:
    3
    Баллы:
    56
    Немножко перефразирую вопрос, в какой формат нужно выгнать из люстры что бы передать во фьюжен, есл в дпх то фьюжен не востановит цвета, ибо не ест люты, можно ли гнать через тифы, не будет ли потерь и искажений?
     
  14. Григорий Чаленко

    Григорий Чаленко Moderator Команда форума

    С нами с:
    23.04.2005
    Сообщения:
    1.997
    Симпатии:
    13
    Баллы:
    1.254
    Вообще-то, Фьюжн может импортить и 1D, и 3D люты.
    В этом смысле, между разными форматами изображений нет никакой разницы.
    Проще всего из Люстры выдавать ДПХ, т.к. он при сопоставимой точности значительно меньше 32 битных тифов.
     
  15. Григорий Чаленко

    Григорий Чаленко Moderator Команда форума

    С нами с:
    23.04.2005
    Сообщения:
    1.997
    Симпатии:
    13
    Баллы:
    1.254
    Обращаю внимание на то, что для правильного композитинга необходимо конвертировать логарифмические DPX в линейное пространство в любом случае.
    Исключение - совсем простые композиции, где нужно подвигать кадр или отдельные его части и где нет мягких масок, моушн блюров, дефокусов и полупрозрачных слоев.

    Конверсия может быть сделана либо прямо в Loader, либо Loader может быть установлен в режим Bypass Conversion и сразу за ним прицеплена нода CineonLog.

    Если применяется CineonLog, необходимо проверить, не клипятся ли цветовые значения за пределами диапазона 0..1. Если да, указать в Loader явно глубину цвета Float 16 или Float 32.
     
Модераторы: Григорий Чаленко

Поделиться этой страницей