Code covered by the BSD License  

Highlights from
Image processing laboratory

image thumbnail

Image processing laboratory

by

 

11 Aug 2010 (Updated )

An application with an intuitive GUI that you can use for some image processing exercises.

equalizza.m
function equalizza(im,scelta,m)
%Questa funzione effettua l'equalizzazione di una immagine rgb o b/n a
%seconda del valore assunto dal parametro "scelta" che pu valere
%rispettivamente 1 o 2.
%Il primo parametro rappresenta l'immagine da equalizzare mentre il terzo
%parametro rappresenta l'esponente della funzione di equalizzazione.


if scelta==1            %Se si  scelto di equalizzare RGB

rgb={'Red','Green','Blue'};     %Definisco un record di 3 stringhe per i titoli
figure                          %Apro una nuova figura
subplot(2,4,1)                  
imshow(im)                      %plotto l'immagine originale
title('Originale')

for k=1:3                       %Per ogni componente dell'immagine RGB:
    T=0;
    img=im(:,:,k);              %Salvo la singola componente
    h=hist(img(:),0:255);       %Memorizzo le frequenze di ogni livello di colore
    %Effettuo il grafico dell'istogramma:
    subplot(2,4,k+1)            %Seleziono la finestra di subplot
    hist(img(:),0:255)          %Traccio l'istogramma
    title(rgb(k));              %Setto il titolo
    
    T=cumsum(h.^m);             %Calcolo la funzione di equalizzazione
    T=T.*(256/max(T));
    im(:,:,k)=T(im(:,:,k)+1);   %Salvo ci che ho ottenuto in im
end
im=round(im);                   %Arrotondo i nuovi livelli ottenuti

subplot(2,4,5)                  %Seleziono la finestra di subplot
imshow(im)                      %Mostro l'immagine equalizzata
title('Equalizzata')
for k=1:3                       %Per ogni componente dell'immagine equalizzata:
    img=im(:,:,k);
    subplot(2,4,k+5)            %Seleziono la finestra di subplot
    hist(img(:),0:255)          %Traccio l'istogramma
    title(rgb(k));              %Setto il titolo
end


elseif scelta==2            %Se si  scelto di equalizzare B/N
    
    im=.299.*im(:,:,1)+.587.*im(:,:,2)+.114.*im(:,:,3); %Converto l'immagine in bianco e nero
    
    figure                      %Apro una nuova figura
    subplot(2,2,1)              %Seleziono la finestra di subplot
    imshow(im)                  %Mostro l'immagine originale
    title('Originale')
    
    h=hist(im(:),0:255);        %Memorizzo le frequenze di ogni livello di grigio
    
    
    subplot(2,2,2)              %Seleziono la finestra di subplot
    hist(im(:),0:255);          %Traccio l'istogramma per l'immagine originale
    title('Livelli di grigio');
    
    %Calcolo la funzione di equalizzazione
    T=cumsum(h.^m);
    T=T.*(256/max(T));
    im=T(im+1);
    im=round(im);
    
    
    subplot(2,2,3)              %Seleziono la finestra di subplot
    imshow(im,[])               %Mostro l'immagine equalizzata
    title('Equalizzata')
    
    subplot(2,2,4)              %Seleziono la finestra di subplot
    hist(im(:),0:255);          %Traccio l'istogramma per l'immagine equalizzata
    title('Livelli di grigio');
end
end

Contact us