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

Fuentes de Información - Convolución en matlab

Dar puntos
25 Puntos
Votos: 4 - T!score: 6.5/10
  • 0 Seguidores
  • 6.632 Visitas
  • 2 Favoritos

7 comentarios - Convolución en matlab

@malayi4 Hace más de 3 años
@4ever073 Hace más de 3 años
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
@picopatumamactm Hace más de 3 años
muy util esta funcion te pasaste +10
@negro2602 Hace más de 3 años
como hago para ejecutar esta funcion
@barquera Hace más de 2 años
me marca error en tu código a la hora de ejecutarlo, saludos!
@Flamac Hace más de 2 años
Casualmente sabes como hacer convoluciones entre polinomios usando matlab?
@sanray Hace más de 2 años
??? function = convol2(I, K)
|
Error: Function definitions are not permitted in this context.

u.u me salio este error