Эксперимент по гамма-кривой - преобразовать 2,2 в противоположность 1,8? - PullRequest
4 голосов
/ 01 октября 2011

Motorola Photon печально известен тем, что демонстрирует то, что другие называют «черным раздавлением» - при просмотре изображений большая часть деталей в темных частях изображения выровнена до черного. До сих пор почти все обвиняли это в показе Pentile. ОДНАКО, когда я впервые увидел этот эффект, у меня возникла другая мысль ... "Ого, это выглядит так же (плохо), как изображения, закодированные для Windows, выглядели в Linux и Macintosh назад, когда они использовали гамму 1,8 вместо винды "норма 2,2". Моя теория заключается в том, что Motorola создала Android-устройство Photon, используя старую библиотеку, написанную еще тогда, когда Motorola была партнером Apple до iPhone (или, возможно, взяла старый открытый код, который предполагал 1,8 гаммы вместо 2,2).

Почему я так уверен? Несколько дней назад я сделал снимок экрана с одной и той же веб-страницы, используя мой старый Epic 4G (Samsung Galaxy S) и мой новый Photon. Неожиданно, захват экрана .png в Epic выглядел нормально, но захват экрана .png Photon'а при просмотре на моем ПК выглядел точно так же, как и при просмотре на экране Photon'а. В тот момент, когда я увидел это, я вспомнил свою предыдущую мысль о возможной ошибке гамма-картографирования 1.8-vs-2.2 и решил попробовать написать демонстрационное приложение, чтобы показать Motorola и убедить их, что это реальная ошибка, которую МОЖНО исправить.

Один эксперимент, который я хотел бы сделать, - это взять изображение JPEG с высоким динамическим диапазоном и детализацией как в светлых, так и в темных областях, и перекодировать его в нестандартную гамму, которая в основном вдвое больше разницы между 1,8 и 2,2. Идея состоит в том, что если я намеренно неправильно закодирую его в противоположную крайность (2,6?), То лягу в метаданные и скажу, что это 2,2, оно будет выглядеть нормально при просмотре на фотоне (потому что та же ошибка, которая сокрушает 2,2 до 1,8 сократит 2,6 до 2,2).

Итак, два вопроса:

  1. Какая гамма была бы равна и противоположна ошибке, которую вы получили бы, если бы гамма-изображение 2,2 было декодировано, как если бы оно было 1,8? 2,6

  2. Есть ли какой-нибудь простой способ (бесплатный плагин Photoshop / gimp, библиотека кодирования JPEG и т. Д.), Чтобы преднамеренно неправильно кодировать исходное изображение в эту нестандартную гамму?

1 Ответ

1 голос
/ 01 октября 2011

Когда к изображению применяется гамма, вы начинаете с линейных значений в диапазоне [0,0-1,0] и увеличиваете их до степени 1 / гамма, что дает результат, который также находится в диапазоне [0,0-1,0].,Для гаммы 1,8 вы повышаете ее на 0,56, а для гаммы 2,2 вы повышаете ее на 0,45.

Если вы применили стандартную гамму 2,2 и вам нужна вместо нее гамма 1,8, вы поднимаете ее сновас помощью соотношений двух поправочных коэффициентов: 0,56 / 0,45 = 1,22.

Поскольку значения пикселей обычно находятся в диапазоне [0-255], вам необходимо разделить на 255 перед преобразованием и умножить на 255, когдаготово.

Я не уверен, что Photoshop или Gimp могут сделать это просто;Я знаю, что в Paint Shop Pro есть команда для этого.

Основным ресурсом для всего, что связано с гаммой, является Часто задаваемые вопросы Чарльза Пойнтона по гамме .

...