Pages: [1]   Go Down
Print
Author Topic: [Matlab] Calcolo NEGATIVA, operatore MEDIANO e operatore MEDIA di un immagine  (Read 939 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Shin
Forumista
***
Offline Offline

Gender: Male
Posts: 822

Io sono ciò che sono per ciò che siamo tutti


WWW
« on: 24-07-2012, 14:51:12 »

Non sono ancora molto pratico con Matlab perciò ho deciso di allenarmi un po' provando a calcolare la NEGATIVA, l'operatore  MEDIANO e l'operatore  MEDIA di un immagine.

Probabilmente il codice contiene schifezze e parti che potrebbero essere implementate in maniera migliore, quindi ogni genere di consiglio/critica/insulto [Emoticon] Asd/suggerimento/etc... è ben accetto

Code:
I1 = imread('lena.jpg');
[m,n,t]=size(I1);

% I2 -> NEGATIVO
I2 = uint8(zeros(size(I1)));

for i=1:m
    for j=1:n
        % calcolo il negativo del punto I2(i,j)
        I2(i,j,1)=255-I1(i,j,1);
        I2(i,j,2)=255-I1(i,j,2);
        I2(i,j,3)=255-I1(i,j,3);
    end
end

% I3 -> MEDIANO
I3 = uint8(zeros(size(I1)));

% calcolo il mediano in ogni punto dell'immagine ad esclusione dei bordi
for i=2:m-1
    for j=2:n-1
        % calcolo il mediano del punto I3(i,j)
        for k = 1:3
            vett = size(9,1);
            count = 1;
            for x=i-1:i+1
                for y=j-1:j+1
                    vett(count) = I1(x,y,k);
                    count = count + 1;
                end
            end
           
            sort(vett);
            I3(i,j,k) = vett(5);
        end
    end
end

% calcolo il mediano nel bordo sinistro
for i=2:m-1
        for k = 1:3
            vett = size(9,1);
            vett(1) = I1(i-1,1,k);
            vett(2) = I1(i-1,1,k);
            vett(3) = I1(i-1,2,k);
            vett(4) = I1(i,1,k);
            vett(5) = I1(i,1,k);
            vett(6) = I1(i,2,k);
            vett(7) = I1(i+1,1,k);
            vett(8) = I1(i+1,1,k);
            vett(9) = I1(i+1,2,k);
            sort(vett);
            I3(i,1,k) = vett(5);
        end
end

% calcolo il mediano nel bordo destro
for i=2:m-1
        for k = 1:3
            vett = size(9,1);
            vett(1) = I1(i-1,n,k);
            vett(2) = I1(i-1,n,k);
            vett(3) = I1(i-1,n-1,k);
            vett(4) = I1(i,n,k);
            vett(5) = I1(i,n,k);
            vett(6) = I1(i,n-1,k);
            vett(7) = I1(i+1,n,k);
            vett(8) = I1(i+1,n,k);
            vett(9) = I1(i+1,n-1,k);
            sort(vett);
            I3(i,n,k) = vett(5);
        end
end

% calcolo il mediano nel bordo superiore
for j=2:n-1
        for k = 1:3
            vett = size(9,1);
            vett(1) = I1(1,j,k);
            vett(2) = I1(1,j,k);
            vett(3) = I1(1,j+1,k);
            vett(4) = I1(1,j,k);
            vett(5) = I1(1,j,k);
            vett(6) = I1(1,j+1,k);
            vett(7) = I1(1,1,k);
            vett(8) = I1(1,1,k);
            vett(9) = I1(1,j+1,k);
            sort(vett);
            I3(1,j,k) = vett(5);
        end
end

% calcolo il mediano nel bordo inferiore
for j=2:n-1
        for k = 1:3
            vett = size(9,1);
            vett(1) = I1(m,j,k);
            vett(2) = I1(m,j,k);
            vett(3) = I1(m,j+1,k);
            vett(4) = I1(m,j,k);
            vett(5) = I1(m,j,k);
            vett(6) = I1(m,j+1,k);
            vett(7) = I1(m,1,k);
            vett(8) = I1(m,1,k);
            vett(9) = I1(m,j+1,k);
            sort(vett);
            I3(m,j,k) = vett(5);
        end
end

% I4 -> media
I4 = uint8(zeros(size(I1)));

% calcolo la media in ogni punto dell'immagine ad esclusione dei bordi
for i=2:m-1
    for j=2:n-1
        % calcolo la media del punto I4(i,j)
        for k = 1:3
            vett = size(9,1);
            count = 1;
            for x=i-1:i+1
                for y=j-1:j+1
                    vett(count) = I1(x,y,k);
                    count = count + 1;
                end
            end
           
            I4(i,j,k) = mean(vett);
        end
    end
end

% calcolo la media nel bordo sinistro
for i=2:m-1
        for k = 1:3
            vett = size(9,1);
            vett(1) = I1(i-1,1,k);
            vett(2) = I1(i-1,1,k);
            vett(3) = I1(i-1,2,k);
            vett(4) = I1(i,1,k);
            vett(5) = I1(i,1,k);
            vett(6) = I1(i,2,k);
            vett(7) = I1(i+1,1,k);
            vett(8) = I1(i+1,1,k);
            vett(9) = I1(i+1,2,k);
            I4(i,1,k) = mean(vett);
        end
end

% calcolo la media nel bordo destro
for i=2:m-1
        for k = 1:3
            vett = size(9,1);
            vett(1) = I1(i-1,n,k);
            vett(2) = I1(i-1,n,k);
            vett(3) = I1(i-1,n-1,k);
            vett(4) = I1(i,n,k);
            vett(5) = I1(i,n,k);
            vett(6) = I1(i,n-1,k);
            vett(7) = I1(i+1,n,k);
            vett(8) = I1(i+1,n,k);
            vett(9) = I1(i+1,n-1,k);
            I4(i,n,k) = mean(vett);
        end
end

% calcolo la media nel bordo superiore
for j=2:n-1
        for k = 1:3
            vett = size(9,1);
            vett(1) = I1(1,j,k);
            vett(2) = I1(1,j,k);
            vett(3) = I1(1,j+1,k);
            vett(4) = I1(1,j,k);
            vett(5) = I1(1,j,k);
            vett(6) = I1(1,j+1,k);
            vett(7) = I1(1,1,k);
            vett(8) = I1(1,1,k);
            vett(9) = I1(1,j+1,k);
            I4(1,j,k) = mean(vett);
        end
end

% calcolo la media nel bordo inferiore
for j=2:n-1
        for k = 1:3
            vett = size(9,1);
            vett(1) = I1(m,j,k);
            vett(2) = I1(m,j,k);
            vett(3) = I1(m,j+1,k);
            vett(4) = I1(m,j,k);
            vett(5) = I1(m,j,k);
            vett(6) = I1(m,j+1,k);
            vett(7) = I1(m,1,k);
            vett(8) = I1(m,1,k);
            vett(9) = I1(m,j+1,k);
            I4(m,j,k) = mean(vett);
        end
end

subplot(2,2,1);   imshow(I1), title('Originale');   subplot(2,2,2);   imshow(I2), title('Negativa');
subplot(2,2,3);   imshow(I3), title('Mediano');   subplot(2,2,4);   imshow(I4), title('Media');
Logged

"Il peggiore analfabeta è l’analfabeta politico. Egli non sente, non parla, nè s’importa degli avvenimenti politici. Egli non sa che il costo della vita, il prezzo dei fagioli, del pesce, della farina, dell’affitto, delle scarpe e delle medicine dipendono dalle decisioni politiche.

L’analfabeta politico è così somaro che si vanta e si gonfia il petto dicendo che odia la politica.

Non sa, l’imbecille, che dalla sua ignoranza politica nasce la prostituta, il bambino abbandonato, l’assaltante, il peggiore di tutti i banditi,
che è il politico imbroglione, il mafioso corrotto, il lacchè delle imprese nazionali e multinazionali."

(Bertolt Brecht)

Collettivo SDAI: collettivosdai.altervista.org, facebook.
Movimento Studentesco Catanese: www.movimentostudentesco.org

https://github.com/ShinDarth
http://shinworld.altervista.org
http://www.openprogrammers.it

LinuxMint user.
Pages: [1]   Go Up
Print
Jump to: