Я думаю, вы определили c
для нормализации результирующего изображения до допустимого (видимого) диапазона. Тогда рациональное значение для c
может быть:
c = (L - 1)/log(L)
где L
— количество уровней серого. Итак, s
будет:
s = log(r+1) .* ((L – 1)/log(L))
or
s = log(r+1) .* c
Тогда обратное преобразование будет:
s2 = (exp(r) .^ (log(L) / (L-1))) – 1
or
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)');
person
saastn
schedule
14.02.2016