Qué ocurre dentro de tu smartphone en el momento en que escaneas
Siete procesos en solo un segundo
Cuando acercas la cámara del smartphone a un patrón en blanco y negro, la página enlazada se abre en aproximadamente un segundo. Durante ese segundo, dentro del smartphone se ejecutan siete procesos a toda velocidad. (1) La cámara captura un fotograma, (2) se detectan en la imagen las zonas candidatas a contener el patrón, (3) se identifican los tres patrones de búsqueda y se calculan la posición y la inclinación, (4) se divide el patrón en una cuadrícula y se determina si cada casilla es blanca o negra, (5) los datos binarios se convierten en una cadena de texto, (6) la corrección de errores repara los datos dañados y (7) la cadena se reconoce como URL y se abre el navegador.
Estos procesos se reparten entre la CPU del smartphone y su chip de procesamiento de imágenes. En un smartphone típico, la cámara captura de 30 a 60 fotogramas por segundo e intenta detectar el patrón en tiempo real en cada fotograma. Es decir, desde el momento en que acercas la cámara, el proceso de "buscar el patrón" se ejecuta de 30 a 60 veces por segundo.
Pasos 1 y 2: Captura y detección de zonas candidatas
La imagen que captura la cámara es un conjunto de millones de píxeles (elementos de imagen). Para encontrar en ella dónde está el patrón, primero se convierte la imagen a dos colores, blanco y negro (binarización). Después, las zonas en las que se concentran muchos píxeles negros se detectan como "candidatas a patrón".
Lo importante en este proceso es el "contraste". Si el patrón negro está impreso con nitidez sobre un fondo blanco, la detección de las zonas candidatas se completa en un instante. Sin embargo, en lugares oscuros o cuando el color del patrón es claro, el límite entre el blanco y el negro se vuelve difuso, y la detección tarda o falla. Si te dicen "escanea en un lugar bien iluminado", es para aumentar la precisión de este paso.
Pasos 3 y 4: Localización de la posición y división en cuadrícula
Una vez encontrada una zona candidata, lo siguiente es buscar los tres patrones de búsqueda (grandes marcas cuadradas). A partir de la relación de posición entre estos tres, se calculan la posición exacta, el tamaño y la inclinación del patrón. Si se puede leer aunque se escanee en diagonal, es porque este cálculo corrige la inclinación.
Una vez identificada la posición, todo el patrón se divide en una cuadrícula como la de un tablero de go, y se determina si cada casilla es blanca o negra. Esta determinación no es un simple "claro u oscuro", sino que se basa en el brillo relativo respecto a las casillas de alrededor. Gracias a esta determinación relativa se puede leer con precisión aunque la iluminación no sea uniforme.
Pasos 5 y 6: Decodificación y corrección de errores
El resultado de la determinación de blanco y negro se convierte en una secuencia de ceros y unos (una cadena de bits). Convertir esta cadena de bits en una cadena de caracteres según la norma del patrón es la "decodificación". En los primeros bits se registran el tipo de datos (números, caracteres alfanuméricos, kanji, etc.) y su longitud, así que el decodificador los lee antes de convertir los datos principales.
Al mismo tiempo que la decodificación, también se ejecuta el proceso de corrección de errores. Si algunas casillas no se pudieron leer correctamente por suciedad o rayones, los datos originales se restauran con los datos de reserva (códigos de corrección de errores). Este proceso se basa en un algoritmo matemático llamado código Reed-Solomon y, según la norma, con el ajuste de nivel de corrección de errores más alto se pueden restaurar daños de hasta el 30%.
Un proceso instantáneo crea la sensación
Desde que apuntamos la cámara a un código hasta que se abre la página de destino, solo lo percibimos como un instante. Sin embargo, por detrás se ejecutan en orden varios procesos, como la captura, el hallazgo del patrón, la identificación de su posición, la lectura de claros y oscuros, la corrección de errores y el reconocimiento de la URL. Precisamente porque todos ellos se encadenan sin tropiezos, casi no tenemos la sensación de estar esperando. Si alguno de los procesos falla, la lectura no se completa y hay que repetirla. La comodidad de un instante cualquiera se apoya en una cadena de procesos que se acumulan con precisión en el interior.
Lo que ocurre por detrás cuando no se puede leer
Cuando la lectura no sale bien, dentro del smartphone algún proceso no ha podido completarse y se ha detenido. No se encuentra el patrón, no se fija la posición, no se distinguen los claros de los oscuros o falta tanta información que no se puede corregir del todo. Las causas son variadas, pero en todos los casos la serie de procesos se ha atascado en algún punto. Por eso, si cambias un poco la distancia, ajustas la iluminación o limpias la suciedad del código, el proceso detenido avanza y la lectura tiene éxito. Si entiendes que no poder leer es una interrupción del proceso que ocurre en el interior, te resultará más fácil saber qué hacer.
Paso 7: Reconocimiento de la URL y apertura del navegador
Si la cadena decodificada es una URL (una cadena que empieza por https://), el sistema operativo del smartphone la reconoce, abre el navegador y muestra esa página. En el caso de datos que no son URL (números de teléfono, direcciones de correo electrónico, información de Wi-Fi, texto), se abre la aplicación correspondiente a cada uno.
En iPhone, cuando la aplicación de cámara detecta una URL, aparece un banner amarillo en la parte superior de la pantalla y, al tocarlo, se abre el navegador. En Android, el comportamiento varía según el modelo, pero en muchos casos el navegador se abre automáticamente. Que todo, incluido este último paso, se complete en menos de un segundo demuestra la gran capacidad de procesamiento de los smartphones.