Je pense que vous avez défini c
pour normaliser l'image résultante à une plage (visible) valide. Ensuite, une valeur rationnelle pour c
pourrait être:
c = (L - 1)/log(L)
où L
est le nombre de niveaux de gris. Donc s
serait:
s = log(r+1) .* ((L – 1)/log(L))
ou
s = log(r+1) .* c
Puis la transformation inversée serait:
s2 = (exp(r) .^ (log(L)/(L-1))) – 1
ou
s2 = (exp(r) .^ (1/c)) – 1
C'est la sortie de transformation pour L=256
:
Pour appliquer cette transformation à une image que nous devons faire quelques transtypage:
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)');
en utilisant la base de 10 par défaut. – user461127
+1 * Je pense que c'est plus lisible si vous utilisez '0.1' au lieu de' .1' * – Amro
@Amro, je pense que vous avez raison. Merci. – sarnold