Una fila real como producto Toeplitz
El cuaderno toma 32 píxeles reales de una fila de la fotografía y los convoluciona en modo full con el kernel de longitud 3 [1, 0, -1]. El mismo resultado sale de un solo producto matricial:
C = convmtx_full_1d(kernel_1d, len(scanline)) # (34, 32)
np.allclose(C @ scanline,
np.convolve(scanline, kernel_1d, 'full')) # True
C tiene una columna por píxel de entrada y una fila por posición de salida: 32 + 3 − 1 = 34 filas. Cada fila es una copia desplazada de la regla local de convolución; cada columna es la salida que causa un píxel de entrada.
No pasó nada mágico al aparecer C. Solo cambió la representación: la convolución es un operador lineal estructurado, con los mismos pocos números reutilizados en cada fila.