Я думаю, что вы определили c
, чтобы нормализовать полученное изображение в допустимый (видимый) диапазон Тогда рациональное значение для c
может быть:
c = (L - 1)/log(L)
, где L
- количество уровней серого. Так что s
будет:
s = log(r+1) .* ((L – 1)/log(L))
или
s = log(r+1) .* c
Тогда обратное преобразование будет:
s2 = (exp(r) .^ (log(L) / (L-1))) – 1
или
s2 = (exp(r) .^ (1/c)) – 1
Это вывод преобразования для L=256
:
Чтобы применить это преобразование к изображению, нам нужно выполнить несколько типов:
figure;
L = 256;
I = imread('cameraman.tif');
log_I = uint8(log(double(I)+1) .* ((L - 1)/log(L)));
exp_I = uint8((exp(double(I)) .^ (log(L) / (L-1))) - 1);
subplot(2, 2, [1 2]); imshow(I); title('Input');
subplot(2, 2, 3); imshow(log_I); title('\itlog(I)');
subplot(2, 2, 4); imshow(exp_I); title('\itexp(I)');