Los secretos de la cámara de tu smartphone - Echemos un vistazo a lo que ocurre detrás de la lectura
La cámara está hecha de "sensores de luz"
Lo que es en realidad la cámara de un smartphone es un chip en el que se alinean decenas de millones de diminutos sensores de luz. Este chip se llama "sensor de imagen". La luz que entra a través de la lente incide en cada uno de los sensores, y una información del tipo "aquí hay claridad" o "aquí hay oscuridad" se convierte en números. Este conjunto de números es lo que es en realidad una foto.
Al leer un patrón en blanco y negro, la cámara se fija en la "diferencia de brillo" más que en el color. Las zonas blancas reflejan mucha luz, por lo que sus números son grandes, y las zonas negras absorben la luz, por lo que sus números son pequeños. Cuanto más clara es esta diferencia entre claro y oscuro, mayor es la precisión de la lectura. Si en lugares oscuros no se lee bien, es porque esta diferencia entre claro y oscuro se reduce.
Cómo se enfoca - Qué es en realidad el enfoque automático
Cuando acercas la cámara a un patrón, enfoca en un instante. Esto se debe a una función llamada "enfoque automático". Muchos smartphones usan un método llamado "AF por detección de fase", que calcula la distancia de enfoque a partir del desfase de la luz que llega al sensor. Es el mismo principio por el que el ojo humano mide la distancia gracias al paralaje entre el ojo izquierdo y el derecho.
El tiempo que tarda en enfocar es de unos 0,03 segundos en un smartphone típico. Es más rápido que un parpadeo. Sin embargo, si la cámara está demasiado cerca del patrón (5 cm o menos), por la estructura de la lente ya no puede enfocar. Al contrario, si está demasiado lejos, el patrón se ve demasiado pequeño y no se pueden leer los detalles. De 10 a 30 cm es la distancia justa.
El software de lectura descifra el "significado del patrón"
La imagen que toma la cámara, tal cual, no es más que una foto en blanco y negro. Aquí es donde entra en juego el software de lectura (el decodificador). El decodificador busca primero en la imagen tres grandes marcas cuadradas. Estas marcas se llaman "patrones de búsqueda" y son las pistas para identificar la posición y la inclinación del patrón.
Una vez encontradas las marcas, el decodificador divide todo el patrón en una cuadrícula como la de un tablero de go y determina si cada casilla es blanca o negra. El blanco se convierte en "0" y el negro en "1", y la secuencia de ceros y unos se restaura en caracteres o en una URL. Este proceso se completa dentro del smartphone en menos de un segundo.
Por qué se puede leer aunque tenga suciedad o rayones
Aunque una parte del patrón esté sucia o rayada, a veces se puede leer. Esto se debe a un mecanismo llamado "corrección de errores". Además de los datos originales, el patrón lleva incrustados unos "datos de reserva", de modo que, aunque falte una parte, los datos originales se pueden restaurar a partir de la información restante.
La corrección de errores tiene cuatro niveles, L / M / Q / H, y con el nivel más fuerte, el H, los datos se pueden restaurar aunque falte alrededor del 30% del total. Sin embargo, existe una contrapartida: cuanto más fuerte es la corrección de errores, más grande (y complejo) se vuelve el patrón. Lo habitual es configurarla más débil cuando quieres imprimir en tamaño pequeño, como en una tarjeta de presentación, y más fuerte en lugares que se ensucian con facilidad, como los letreros exteriores.
Recursos para leer en lugares oscuros
Un código QR se puede leer incluso en una habitación con poca luz o de noche porque la cámara ajusta automáticamente la cantidad de luz que capta según el brillo del entorno. En escenas con poca luz intenta captar más luz, y en escenas demasiado luminosas reduce la cantidad que capta. Si aun así falta luz, la imagen se oscurece, cuesta distinguir las partes claras y oscuras del patrón y la lectura falla con más facilidad. En esos casos, mejora si subes el brillo de la pantalla o te mueves un poco hacia una posición en la que la luz incida sobre el código. Ayudar a la cámara con su ajuste es el atajo para lograr una lectura correcta.
Por qué no se lee ni demasiado cerca ni demasiado lejos
Si acercas demasiado el smartphone a un código QR, a veces, al contrario de lo esperado, no se lee. Esto se debe a que la distancia a la que la cámara puede enfocar tiene un límite. Si está demasiado cerca, no logra enfocar y el patrón se ve borroso. Al contrario, si está demasiado lejos, cada casilla sale demasiado pequeña y ya no se pueden distinguir las partes claras de las oscuras. Cuando la lectura no va bien, ajustas acercando o alejando el smartphone porque estás buscando la distancia a la que la cámara puede enfocar justo. Encontrar una distancia adecuada conduce a una lectura rápida.
Por qué se lee más rápido que un código de barras
Los códigos de barras que se usan en las cajas de los supermercados solo contienen información en dirección horizontal. Es información unidimensional. En cambio, el patrón cuadrado en blanco y negro es un "código bidimensional" que contiene información en dos direcciones, vertical y horizontal. La cantidad de información que puede guardar en la misma superficie es varios órdenes de magnitud mayor, y mientras que un código de barras contiene como máximo unos 20 caracteres, un código bidimensional puede guardar hasta 7.089 caracteres.
La lectura es rápida porque, gracias a las tres marcas, "se puede identificar la posición en un instante desde cualquier ángulo". El código de barras se lee haciendo pasar un láser en horizontal, por lo que hay que ajustar el ángulo. El código bidimensional lo capta la cámara entero de una sola vez, así que se puede leer aunque esté inclinado o del revés.