Documentaciónconvolucion_2d(M, K)

convolucion_2d(M,K)\texttt{convolucion\_2d}(M, K)

Nombre

convolucion_2d - Aplica una convolucion 2D sobre una matriz.

Sinopsis

out = matrices.convolucion_2d(M, K)

Descripcion

Aplica un kernel bidimensional K sobre una matriz M y devuelve una matriz del mismo tamano.

Formula:

Y[i,j]=mnX[im,jn]K[m,n]Y[i,j] = \sum_m \sum_n X[i-m, j-n] K[m,n]

Es util para suavizado, deteccion de bordes, realce y procesamiento matricial estilo imagen.

Por cuestiones de eficiencia, la variante 2D tambien fue implementada como funcion interna. Ver CONVOLUCION().

Comportamiento

  • Usa padding implicito con ceros fuera de los limites.
  • Mantiene las dimensiones generales de la matriz de entrada.
  • Retorna una MATRIZ nueva con la convolucion centrada.

Funciones API relacionadas

  • matrices.convolucion_1d()
  • matrices.convolucion_2d_rapida()

Parámetros

ParámetroTipoDescripción
MMATRIZMatriz de entrada, de tamano filas x columnas.
KMATRIZKernel o filtro bidimensional.

Valor de retorno

MATRIZ - Matriz del mismo tamano general que la entrada con el resultado de la convolucion centrada.

Ejemplo

ejemplo.blox
INCLUIR "matrices.api"
INCLUIR "imagenes.api"
INCLUIR "strings.api"


FUNCION PRINCIPAL
INICIO


    // --------------------------
    // Test convolucion_2d
    // --------------------------
    MATRIZ M[][]
    MATRIZ K2[3][3], C[][]

    K2 = [[-1, -1, -1],
          [-1,  8, -1], 
          [-1, -1, -1]]

    IMPRIMIR("\nCargando Imagen PGM...")
    M = imagenes.cargar_pgm("dog.pgm")

    IMPRIMIR("\nImagen PGM cargada...")

    IMPRIMIR("\n\nConvolucionando con k2")
    C = matrices.convolucion_2d(M, K2)

    IMPRIMIR("\n\nGuardando imagen PGM")
	  imagenes.guardar_pgm(C, "PROG80 - API - MATRICES - convolucion 2D cargar_pgm().pgm", 255)


FINAL