Подтвердить что ты не робот

Гамма-коррекция:. ^ (гамма) или. ^ (1/гамма)?

Я ищу простую формулу гамма-коррекции для изображений в оттенках серого со значениями от 0 до 255.

Скажем, что гамма моего экрана равна 2,2 (это ЖК-экран, поэтому мне, вероятно, придется оценить его с более сложной процедурой, но пусть предположим, что мой экран ведет себя красиво).

Какая из следующих формул будет правильной?

(1) Исправлено = 255 * (Изображение/255). ^ 2.2

ИЛИ

(2) Исправлено = 255 * (Изображение/255). ^ (1/2.2)

(те, которые предназначены для того, чтобы быть кодами matlab, но я надеюсь, что они понятны даже для людей, не являющихся членами Matlab).

Я смотрю в Интернете, но нашел обе формулы, которые идут вокруг. Я подозреваю, что (2) является правильным, и мое замешательство связано с тенденцией называть "гамма-значение" обратной величине фактической гаммы, но я бы очень признателен за отзывы людей, которые знают, о чем они говорят..

Спасибо: -)

4b9b3361

Ответ 1

Гамма-коррекция регулирует общую яркость изображения. Изображения, которые не исправлены, могут выглядеть либо отбеленными, либо слишком темными. Предположим, что монитор компьютера имеет 2.2 функцию мощности как кривую зависимости интенсивности от напряжения. Это означает, что если вы отправите на монитор сообщение о том, что определенный пиксель должен иметь интенсивность, равную x, он фактически отобразит пиксель, который имеет интенсивность, равную x 2.2 Поскольку диапазон напряжений, посылаемых на монитор, находится между 0 и 1, это означает, что отображаемое значение интенсивности будет меньше, чем вы хотели. Говорят, что такой монитор имеет гамма 2.2.

Итак, в вашем случае

Corrected = 255 * (Image/255)^(1/2.2).

Ответ 2

Используются обе формулы, одна для кодирования гамма и одна для декодирования гаммы.

Гамма-кодирование используется для повышения качества теневых значений, когда изображение хранится как целочисленные значения интенсивности, поэтому для гамма-кодирования вы используете формулу:

encoded = ((original / 255) ^ (1 / gamma)) * 255

Гамма-декодирование используется для восстановления исходных значений, поэтому формула для этого:

original = ((encoded / 255) ^ gamma) * 255

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