local histogram equalization

4
Local Histogram Equalization Για κάθε pixel με βάση την αξία των γειτονικών pixel μπορούμε να επιτύχουμε το histogram equalization. Παρακάτω χρησιμοποιώ έναν πίνακα 3x3 για επεξήγηση. Αλλάζοντας το μέγεθος του πίνακα δηλαδή τις τιμές Μ,Ν το hist_eq μπορεί να ενισχυθεί. Βήματα: Αν σκεφτούμε έναν πίνακα, A= 2 1 0 0 1 3 4 1 4 , με εύρος 0-4 Αντιγράφοντας τον πίνακα Α σε έναν άλλον Β και γεμίζοντάς τον μηδενικά έχουμε: Β= 0 0 0 0 0 0 2 1 0 0 0 0 1 3 0 0 4 1 4 0 0 0 0 0 0 Τώρα μπορούμε να σκεφτούμε ένα παράθυρο 3x3 του Β ξεκινώντας από τη θέση (1,1) Β= 0 0 0 0 3 0 0 4 1 4 0 0 0 0 0 0 Έπειτα βρίσκουμε το PDF (probability density) για κάθε τιμή του πίνακα: P(0/4)= 6 9 P(1/4)= 2 9 P(2/4)= 1 9 P(3/4)=0 P(4/4)=0

description

is geometric way to compute the local histogram equalization.

Transcript of local histogram equalization

  • Local Histogram Equalization pixel pixel histogram equalization. 3x3 . , hist_eq .

    :

    v ,

    A= 2 1 00 1 34 1 4 , 0-4

    v

    :

    =0 0 0 0 00 2 1 0 00 0 1 3 00 4 1 4 00 0 0 0 0

    v 3x3 (1,1)

    = 0 0 0 0 3 00 4 1 4 00 0 0 0 0

    v PDF (probability density)

    : P(0/4)=6 9 P(1/4)=2 9 P(2/4)=1 9 P(3/4)=0 P(4/4)=0

  • v CDF (cumulative distribution

    function) : 0, pdf(0/4) 4=6 9 4=3 1, [pdf(0/4)+pdf(1/4)] 4=3.554 2, [pdf(0/4)+pdf(1/4)+pdf(2/4)] 4=4 3, 0 4, 0 v :

    = 0 0 0 0 3 00 4 1 4 00 0 0 0 0

    2 CDF 4. . v :

    4 3 32 2 44 3 4

  • MATLAB CODE: A=imread('lena.png'); Img=A; %megethos parathirou M=10; N=20; mid_val=round((M*N)/2); in=0; %vriskoume ton arithmo stilwn kai grammwn pou tha valloume midenika for i=1:M for j=1:N in=in+1; if(in==mid_val) PadM=i-1; PadN=j-1; break; end end end B=padarray(A,[PadM,PadN]); %gemizoume tin eikona me midenika for i= 1:size(B,1)-((PadM*2)+1) for j=1:size(B,2)-((PadN*2)+1) cdf=zeros(256,1); inc=1; for x=1:M for y=1:N

    if(inc==mid_val) %vriskoume to mesaio stoixeio tou parathirou ele=B(i+x-1,j+y-1)+1;

    end pos=B(i+x-1,j+y-1)+1; cdf(pos)=cdf(pos)+1; inc=inc+1; end end

    for l=2:256 %ipologizoume to cdf gia tis times sto parathiro cdf(l)=cdf(l)+cdf(l-1);

    end Img(i,j)=round(cdf(ele)/(M*N)*255); end end

  • b=zeros(1,256); [row,col]=size(A); for x=1:1:row for y=1:1:col if A(x,y)