bonjour
je suis étudiante en L1 de maths informatique appliquées. Je travaille sur scilab:
le but est de compléter un code scilab pour obtenir une image qui aurait un nombre identiques de pixels dans chaque couleur entre le blanc et le noir (entre 0 et 255)
ça c'est ce que j'ai traduite de l'énoncé qui est : compléter le code du fichier egal_hist.sci le voici
exec("hist_cumul.sci");
//Transformation de l'égalisation
function q = T(p, Hist)
à compléter
endfunction
function im_out = hist_egal(im)
à compléter
endfunction
on me donne cette indication :
Pour une image Ia(u, v) de taille M × N dont l'histogramme cumulé est Ha(p), l'´egalisation d'histogramme
consiste à transformer Ia(u, v) en une image Ia0(u, v) = T(Ia(u, v)) de manière à ce que le nouvel histogramme cumulé Ha soit le plus possible linéaire. Pour cela, on applique la transformation
suivante aux pixels de l'image :
T(p) = partie entière de(255*MN/Ha)
avec ceci j'ai donc pu le remplir comme cela:
exec("hist_cumul.sci");
//Transformation de l'égalisation
function q = T(p, Hist)
q = floor((255*Hist(p))/(M*N))
endfunction
function im_out = hist_egal(im)
[M,N]=size(im)
im_out=T(im)
// for i=1:M
// for j=1:N
// im_out(i,j)=T(im(i,j))
// end
// end
endfunction
mais il y a toujours ce message :indice invalide ...
je précise que pour le faire marcher j'ai deux programme un qui crer l'histogramme et un autre qui fait un histogramme cumulée:
function classes = mk_classes(n)
N = 2^n;
classes = zeros(1, N+1);
classes(1) = -1;
for i = 1:N
classes(i+1) =classes(i)+(256/N) // à compléter
end
endfunction
exec("mk_classes.sci");
function Hist = hist_cumul(im)
// calcul de l'histogramme
n=8
hist = histc(mk_classes(n), im, normalization=%f);
// calcul de l'histogramme cumulé
Hist=zeros(256)
Hist(1)=hist(1)
for i=2:256
Hist(i)=Hist(i-1)+hist(i)
end
endfunction