Convolución en matlab

function = convol2(I, K)
I = double(I);
%Se obtiene el tamaño en n,m y n1,m1 respectivamente, de la imagen (Ima) y del kernel (K).
[n m]=size(I);
[n1 m1]=size(K);
%Verifica que el tamaño del kernel sea mayor a la imagen.
if n>n1 && m>m1
%Se calcula el padding de cada kernel.
pad=(n1-1)/2;

%Rota el kernel a 180°.
K=rot90(K,2);

%Se crea una matriz que contendrá a la imagen, para insertarle ceros alrededor dependiendo del padding.
zIm=zeros(n+(pad*2), m+(pad*2));
zIm(pad+1:n+pad,pad+1:m+pad)=I;
[n m] = size(zIm);
%Se crean variables auxiliares

I0 = zeros();
for x = pad+1: n-pad
for y=pad+1: m-pad
aux1 = zIm(x-pad: x+pad, y-pad: y+pad);
aux2 = aux1 .* K;
I0(x,y) = sum(aux2();
end
end

%Devuelve la imagen a su tamaño original, quitandole el padding.
I = I0(pad+1: n-pad,pad+1: m-pad);
I = uint8(I);



%Error que envia al ser mayor el kernel que la imagen.
else
display('error');
end

end

Les anexo una pequeña función para hacer la convolución en matlab, aunque ya hay una predefinida. Espero les sirva.

Besos

7 comentarios - Convolución en matlab

@4ever073
amigo, sabes que, necesito ayuda... necesito crear una funcion convolucion en Matlab tambien, pero quiero modificar tu condigo, pero no lo entiendo... me puedes dar una ayuda?? Gracias... igual te dejo 10 puntos porque de alguna manera me ayuda
@negro2602
como hago para ejecutar esta funcion
@barquera
me marca error en tu código a la hora de ejecutarlo, saludos!
@Flamac
Casualmente sabes como hacer convoluciones entre polinomios usando matlab?
@sanray
??? function = convol2(I, K)
|
Error: Function definitions are not permitted in this context.

u.u me salio este error