Calculando el núcleo difuminado entre 2 imágenes

A diferencia de los escenarios estándar (y más desafiantes) de desenfoque y súper resolución, tengo acceso a la imagen original (nítida)G y es versión borrosaB. Simplemente estoy buscando el núcleo borrosoh. Entonces porqueB Se toma usando una cámara real la relación es:

B=G*h+N (dónde* denota convolución yN es un poco de ruido aditivo)

Naturalmente, este es un problema demasiado restringido ya queh es pequeño en tamaño en comparación conG yB y así cada pocos píxeles en el par de imágenes generan una ecuación en las entradas deh.

Pero, ¿cuál sería la forma más sencilla de implementar esto? Mis pensamientos hasta ahora:

Pasando al dominio de la frecuencia y haciendo división (comoesta respuesta sugiere). Pero esto sería inevitablemente numéricamente inestable debido al ruido, ¿no?Correlación cruzada: solo he encontrado ejemplos de señales 1-D y no pude averiguar cómo usarlas en el caso 2D de las imágenes.Construyendo cuidadosamente un sistema lineal demasiado restringido.G'h'=B' buscandoh' que es una versión vectorial de las entradas del kernel.h utilizando algún procedimiento de optimización. Pero esto es muy tedioso y la matriz.G' y vectorB' están obligados a ser enormes en tamaño.

Un ejemplo concreto en cualquier lenguaje de programación desde C ++ hasta MATLAB sería extremadamente útil.

Respuestas a la pregunta(1)

Su respuesta a la pregunta