2014-04-21 4 views
1

Я использую matlab для выполнения некоторых вычислений на изображениях, и первым впечатлением было то, что значения, сохраненные в матрице matlab после чтения из файла jpeg, были исправлены гамма-коррекцией. Следовательно, я должен написать следующий код:Коррекция гаммы Matlab при открытии и записи файлов

im = (double((imread('Myimage.jpg')))/255).^2.2; 

, чтобы получить матрицу со значениями в линейном пространстве. Тем не менее, я попытался следующие: сформировать линейный градиент:

for x=1:256 
gradient(:,x) = ones(128,1) * (x-1)/255; 
end 

Тогда я пишу это в файл в формате JPEG и читать его снова:

imwrite(gradient, 'gradient.jpg', 'Quality', 100); 
gradient_jpg = double(imread('gradient.jpg'))/255; 

Теперь я ожидал бы градиент и gradient_jpeg быть разными, поскольку последний был гамма-исправлен, когда был записан как файл jpg, а другой - нет. Оказывается, обе матрицы одинаковы. И в этом я не понимаю. В предыдущем тесте я попытался открыть одно и то же изображение jpg из Matlab и HDRShop. Оба изображения выглядят одинаково на экране, но когда я просматриваю значения в изображениях, они не То же самое. Значения в matlab - это значения, которые я получаю в HDRShop при мощности 2,2 (примерно). Итак, myquestion ... ... Matlab сохраняет значения в линейном пространстве, когда он читает файл jpeg, или я должны конкретно применять термин гамма (.^2.2) для того, чтобы получить линейные значения?

заранее спасибо

ответ

0

Это хороший вопрос. Я здесь по той же причине.

в документы для imread, я не вижу выбора ионах для гамма-коррекции, и в этом нет ничего общего.

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

Так что я не уверен, что это ответ, но есть дополнительная информация.

+0

В итоге я решил использовать гамма 2.2 для всех изображений и открывать их как (double (imread ('im.whatever "))/255)^2.2 –