¿Cómo encontrar el desplazamiento del canal de color de una imagen RGB que se suponía que era en escala de grises?

9

Estoy usando un dispositivo de grabación que parece cambiar los colores horizontalmente y me gustaría encontrar la cantidad de cambios que tengo que hacer en 2/3 de los canales para obtener una imagen con una distorsión de color mínima.

imagen capturada

Puede ver aquí que en la imagen original, al menos, el canal azul se desplazó hacia atrás con ~ 1.0 píxeles.

ingrese la descripción de la imagen aquí

La pregunta es cómo puedo detectar los valores óptimos de desplazamiento, estoy seguro de que no son enteros.

Sorin
fuente
¿Cuál de estas imágenes son las imágenes grabadas desde su dispositivo?

Respuestas:

4

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:

  1. 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.

  2. 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.

Señor White
fuente