Cómo funciona el escaneo de códigos QR: de la cámara a los datos

Embed This Widget

Theme


      
    

Widget powered by . Free, no account required.

Between camera and payload sits a pipeline that completes in milliseconds. The captured image is binarised first, by adaptive thresholding that compares each pixel with its local neighbourhood instead of one global cutoff, which is what allows the stage to survive uneven lighting, shadows and gradients. The decoder then hunts for the three finder patterns by their 1:1:3:1:1 module ratio along horizontal and vertical scan lines; three valid patterns in the correct geometric relationship establish the symbol's position and orientation. Reading the pipeline in order explains most scan failures, since a stage that cannot complete halts every stage after it.

Cómo funciona el escaneo de códigos QR: de la cámara a los datos

Cuando apunta su smartphone a un código QR, un sofisticado proceso transforma una imagen de cámara en datos decodificados en milisegundos. Comprender este proceso ayuda a explicar por qué algunos códigos QR fallan al escanear y cómo diseñar códigos que se decodifiquen de forma fiable.

Paso 1: captura de imagen y binarización

La cámara captura una imagen en color o escala de grises. El software del escáner la convierte en una imagen binaria (blanco/negro) usando umbral adaptativo — comparando cada píxel con su vecindario local en lugar de un único umbral global. Esto gestiona la iluminación desigual, sombras y degradados.

Paso 2: detección de patrones de localización

El escáner busca los patrones de localización característicos — los tres cuadrados grandes con la proporción de módulos 1:1:3:1:1. Al escanear líneas horizontales y verticales en la imagen, el decodificador identifica patrones candidatos y los verifica. Tres patrones de localización válidos en la relación geométrica correcta confirman la presencia de un código QR.

Paso 3: corrección de orientación y perspectiva

Usando las posiciones de los tres patrones de localización, el escáner determina la rotación y la distorsión de perspectiva del código QR. Para versiones más grandes, los patrones de alineación proporcionan puntos de referencia adicionales para corregir la deformación geométrica — especialmente importante al escanear códigos en superficies curvas.

Paso 4: muestreo de la cuadrícula

Los patrones de sincronización establecen la cuadrícula exacta de módulos. El escáner muestrea cada posición de módulo para determinar si representa un bit negro (1) o blanco (0). Este paso es sensible a la calidad de impresión, el contraste y el tamaño de módulo.

Paso 5: lectura de formato y versión

El escáner lee la información de formato para determinar el nivel de corrección de errores y el patrón de máscara. Para las versiones 7+, también se extrae la información de versión.

Paso 6: desenmascarado

El patrón de máscara identificado en el paso 5 se combina mediante XOR con el área de datos para revertir el enmascaramiento aplicado durante la codificación. El enmascaramiento evita patrones problemáticos que podrían confundir a los escáneres.

Paso 7: corrección de errores

El decodificador aplica corrección de errores Reed-Solomon para detectar y reparar codewords corruptos. Si el número de errores supera la capacidad de corrección del nivel de EC elegido, la decodificación falla.

Paso 8: extracción de datos

Finalmente, el flujo de datos corregido se analiza según los indicadores del modo de codificación. El decodificador lee los marcadores de modo, los recuentos de caracteres y los segmentos de datos para reconstruir la carga útil original — una URL, credenciales WiFi, tarjeta de contacto u otro contenido.

Puntos clave

  • El proceso completo de decodificación: captura, binariza, localiza, orienta, muestrea, desenmascara, corrige, extrae
  • Los patrones de localización permiten la detección desde cualquier orientación
  • El umbral adaptativo gestiona condiciones de iluminación desiguales
  • La corrección de errores repara módulos dañados durante la decodificación
  • Todo el proceso normalmente se completa en menos de 100 milisegundos