Qraft

Los límites de la velocidad de lectura de los códigos QR - Cuántas veces se puede escanear en un segundo

La velocidad de escaneo de los smartphones - La diferencia entre la percepción y la medición

Cuando escaneas un código QR con un smartphone, parece que el resultado aparece casi al instante. Sin embargo, dentro de ese "casi al instante" se encadenan varios procesos a gran velocidad. La cámara captura un fotograma, se detectan los patrones de búsqueda en la imagen, se aplica una corrección geométrica, se muestrean los módulos y se aplica la corrección de errores para decodificar los datos. En un smartphone común, toda esta secuencia termina en muy poco tiempo.

El investigador de usabilidad Jakob Nielsen situó en un libro de 1993 el límite en el que los usuarios perciben algo como "instantáneo" en unos 0,1 segundos (100 milisegundos), y el procesamiento de un código QR en un smartphone común se siente incluso más breve que ese límite. Es decir, cuando sentimos que un código "se leyó en un instante", en realidad dentro del smartphone se está realizando una cantidad enorme de cálculos.

Dónde está el cuello de botella

Los factores que limitan la velocidad de lectura de los códigos QR son, a grandes rasgos, tres.

1. La tasa de fotogramas de la cámara: La cámara de un smartphone suele capturar video a 30 fps (30 fotogramas por segundo). Esto significa que, incluso a la máxima velocidad, solo se puede capturar una imagen del código QR aproximadamente una vez cada 33 milisegundos. Con una cámara de 60 fps el intervalo se reduce a unos 16 milisegundos, pero aumentar la tasa de fotogramas no sirve de nada si el procesamiento de imagen no puede seguir el ritmo.

2. La detección de los patrones de búsqueda: Encontrar los tres patrones de búsqueda dentro de una imagen exige recorrer toda la imagen, por lo que la cantidad de cálculo es grande. Cuanto mayor es la resolución de la imagen, más tiempo lleva el recorrido. En los algoritmos eficientes es habitual un método de dos etapas: primero se reduce la imagen y se recorre, y cuando se encuentran candidatos se detectan con precisión a la resolución original.

3. La decodificación de la corrección de errores: La decodificación del código Reed-Solomon incluye operaciones con polinomios sobre un campo finito, por lo que el tiempo de cálculo aumenta cuanto mayor es la cantidad de datos. En un código QR de gran capacidad con nivel de corrección de errores H, la decodificación también puede tardar más.

Captura del fotogramaA 30 fps, una vez cada 33 milisegundos aprox.
Detección de los patrones de búsquedaSe examina toda la imagen
Corrección geométrica
Muestreo de los módulos
Corrección de erroresCuantos más datos, más tiempo
Decodificación
El orden del procesamiento en una lectura y los tres puntos que influyen en el tiempo (texto en el color de advertencia).

El mundo de los escáneres industriales de alta velocidad

En las líneas de producción de las fábricas, hay que escanear decenas de veces por segundo los códigos QR de los productos que avanzan a gran velocidad por la cinta transportadora. En este ámbito, que exige velocidades de un orden completamente distinto al de los smartphones, se utilizan escáneres industriales especializados.

Entre los escáneres industriales fijos hay productos capaces de leer 60 o más códigos QR por segundo. Para lograrlo, unos chips de procesamiento de imagen especializados (FPGA o ASIC) procesan en paralelo, a nivel de hardware, la detección de los patrones de búsqueda y la decodificación. Su arquitectura es fundamentalmente distinta de la de los smartphones, que realizan el procesamiento por software en una CPU de uso general.

Cabe señalar que los escáneres láser se usan principalmente para códigos de barras (códigos unidimensionales), y que para leer códigos QR se utilizan lectores basados en cámara (sensor de imagen).

El límite teórico de velocidad

El límite teórico de la velocidad de lectura de los códigos QR no lo determina la velocidad de la luz, sino la cantidad de cálculo del procesamiento de imagen. Si un código QR de la versión 1, la más pequeña (21 por 21 módulos), se procesa con un algoritmo optimizado, se estima que el cálculo necesario para una decodificación es de unas 100.000 operaciones. Teniendo en cuenta el número de operaciones que una CPU común puede procesar por segundo (varios miles de millones), en teoría son posibles decenas de miles de decodificaciones por segundo.

Sin embargo, en la práctica existen cuellos de botella distintos del cálculo, como la tasa de fotogramas de la cámara, la velocidad de transferencia de imágenes y la velocidad de acceso a la memoria, por lo que nunca se alcanza el valor teórico. Se considera que el límite realista ronda varios cientos de veces por segundo, incluso con hardware especializado.

Esta velocidad supera con creces la velocidad de percepción humana. La rapidez con la que el ojo humano puede distinguir fotogramas individuales tiene un límite, y varios cientos de escaneos por segundo equivalen, para una persona, a "estar escaneando continuamente".

El equilibrio entre velocidad y precisión

Buscar más velocidad de lectura conlleva el riesgo de sacrificar la precisión. Si se reduce la resolución para acortar el tiempo de procesamiento de imagen, la distinción entre blanco y negro de los módulos pequeños se vuelve ambigua y aumenta la probabilidad de una lectura errónea. Si se simplifica el procesamiento de la corrección de errores, disminuye la resistencia a la suciedad y a los daños.

El equilibrio óptimo entre velocidad y precisión varía según el uso. En las líneas de las fábricas, a veces se adopta un método de "escaneo redundante", en el que se escanea varias veces el mismo código QR y se decide el resultado correcto por mayoría. En lugar de elevar la precisión de un solo escaneo del 99% al 99,9%, escanear tres veces y adoptar el resultado que coincide dos o más veces puede resultar más ventajoso para lograr a la vez velocidad y precisión.