Parece que conceptualmente estás casi allí:
- Tome uno de los tres canales de color como referencia (por ejemplo: rojo)
- Empareja el verde contra el rojo
- Empareja el azul contra el rojo
El problema es, entonces, la correspondencia con la precisión de subpíxeles. Obtener números significativos es un poco complicado, ya que los errores de interpolación que cualquier método tendrá tendrán un impacto en la precisión.
Se me ocurren dos métodos de registro de imágenes utilizables:
Registro de imagen de Lucas-Kanade . Es posible que el uso de la interpolación lineal no le brinde resultados lo suficientemente precisos, así que considere los métodos bicúbicos u otros.
Neil Dodgson tiene uno hecho una buena descripción. Es importante que los diferentes cambios de subpíxeles del núcleo de interpolación tengan una transferencia de frecuencia similar. Para la familia cúbica, la b-spline aproximada es mucho mejor que cattmull-rom, en este caso.
Primero amplíe la imagen, luego realice el registro de imágenes con precisión de píxeles utilizando su técnica favorita. (correlación cruzada en el dominio de Fourier debería hacer). Esto solo funciona si la ampliación se realiza con cuidado. Lo más probable es que bilineal o bicúbico no le brinde suficiente precisión. Puedo pensar en tres formas:
a. Interpolación de yenes . Ver la ecuación 11 de su artículo. Muy lento, pero óptimo. Aunque pareces tener un alias en la señal, la suposición 'limitada de banda' que Yen hace podría no ser válida.
si. Calcule FFT de la imagen, rellene con ceros las frecuencias altas, FFT inversa.
C. Escalado no lineal. Dado que los bordes son bastante nítidos, la imagen no está correctamente limitada en banda, esa podría ser la principal limitación de los métodos anteriores. La interpolación direccional dependiente del borde podría ser mejor en este caso.
Una vez que tenga la traducción de subpíxel entre los dos, la corrección al canal verde y azul ya está resuelta, sin importar el método que elija.