Project DelphiTensors Workshop

Deconvolucionar una fotografía real

Desenfoca una fotografía real con un kernel promediador de 9×9, añade ruido pequeño y recupérala con Richardson-Lucy:

recovered = richardson_lucy(np.clip(noisy, 0, 1), psf, num_iter=50) print(err(noisy), err(recovered)) # 0.1157 -> 0.0815

La deconvolución redujo el error cerca de un 30 %. Dos lecciones:

Primera: hay que ignorar el borde. La deconvolución crea artefactos fuertes en los bordes, donde el algoritmo no tiene información sobre lo que hay fuera de la imagen. Si mides sobre la imagen completa, los artefactos del borde dominan y parece que el método falló. No falló.

Segunda: ¿por qué no invertir el desenfoque directamente? Porque el desenfoque destruye el detalle de alta frecuencia, así que invertirlo divide por números muy cercanos a cero y amplifica el ruido enormemente. La inversa ingenua por FFT llega a un error relativo de ≈ 1.4, mucho peor que la imagen borrosa de la que partió.