Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Interazione e Multimedia, 9 CFU => Topic started by: Raro89 on 30-11-2009, 21:50:08



Title: Aiuto esercizio kernel
Post by: Raro89 on 30-11-2009, 21:50:08
ciao ragazzi ho provato a fare l'esercizio che ha detto il prof oggi a lezione, applicare il kernel ad una immagie, ma ho un problema con la formula della sommatoria...potete postare per favore il codice della formula se qualcuno lo ha fatto????
grazie in anticipo...
ciao a tutti...


Title: Re:Aiuto esercizio kernel
Post by: Raro89 on 01-12-2009, 11:31:35
ragazzi quindi nessuno sa dirmi come scrivere questa formula in matlab????
(http://img682.imageshack.us/img682/1535/formula1t.jpg)

oppure questa???
(http://img697.imageshack.us/img697/1484/formula2.jpg)

grazie in anticipo

ciao a tutti...!!!


Title: Re:Aiuto esercizio kernel
Post by: Vivynz on 02-12-2009, 16:38:27
c'è un problema però...la seconda sommatoria dovrebbe scorrere il kernel cioè f considerando gli indici da 1 a 3 però andando a sostituire la i nella formula si ottengono invece gli indici da -1 a 1...non capisco..


Title: Re:Aiuto esercizio kernel
Post by: rox on 02-12-2009, 21:38:35
per quanto ho capito io la prima formula considera il kernel in cui l'elemento centrale ha coordinate 0,0;mentre la seconda formula considera l'elemento centrale avente coordinate seed(k/2),seed(h/2).Spero d non aver sbagliato e di essermi spiegato...


Title: Re:Aiuto esercizio kernel
Post by: Vivynz on 03-12-2009, 00:50:29
Si infatti..quindi gli indici della seconda dovrebbero andare da 1 a 3 per f invece vanno da -1 a 1


Title: Re:Aiuto esercizio kernel
Post by: Alex_47 on 03-12-2009, 17:50:03
Ragazzi ho fatto la convoluzione con il kernel usando la formula , mi è venuta in questo modo...

Code:
%convoluzione

G = imread('lena.jpg');
figure,imshow(I,[]),title('originale');


F=[1 1 1;...
   1 1 1;...
   1 1 1];

[m,n] = size(G);

B = zeros(m,n);

val = 0;



for i = 2 : (m-1)
   
    for j = 2 : (n-1)
       
        for x = 1 : 3
           
            for y = 1 : 3
               
                val = val + F(x,y) * G(i+(x-3+1),j+(y-3+1 ) );
            end
        end
       
        B(i,j) = val;
        val = 0;
    end
end

figure,imshow(B,[]),title('filtro Applicato');



se si sono domande , o consigli per migliorare il codice postate pure...


Title: Re:Aiuto esercizio kernel
Post by: Alex_47 on 03-12-2009, 18:06:44
Questa è per impostare li intorni a 0

Code:
B = zeros(m+1,n+1);

val = 0;

for i = 1 : m
   
    if i==1
        B(i,:) = 0;
    elseif i==m
        B(i,:) = 0;
    end
       
   
    for j = 1 : n
       
        if j==1
            B(:,j) = 0;
        elseif j==n
            B(:,j) = 0;
        elseif i ~= 1
            B(i,j) = G(i,j);
        end
    end
end

figure,imshow(uint8(B),[]),title('immagine a intorno 0');