Qraft

Códigos QR e ilusiones ópticas - Por qué el ojo humano y la cámara ven cosas distintas

Por qué el ojo humano no puede "leer" un código QR

Aunque una persona mire un código QR, no puede leer los datos almacenados en él. Aunque se entienda que el patrón en blanco y negro representa algún tipo de información, el proceso de convertir ese patrón en números, aplicar la corrección de errores y restaurar el texto o la URL originales es imposible para el cerebro humano.

Esto parece obvio a primera vista, pero desde el punto de vista de la ciencia de la visión es un hecho interesante. El sistema visual humano puede reconocer al instante los caracteres (el alfabeto, los kanji y los números arábigos). Esto es la acumulación de miles de años de aprendizaje cultural. En cambio, el patrón del código QR se inventó apenas en 1994, y todavía no ha pasado el tiempo suficiente para que el sistema visual humano se entrene en "leer" este patrón.

En teoría, si memorizaras por completo la especificación del código QR, convirtieras a simple vista el patrón en blanco y negro en números binarios y realizaras de cabeza la decodificación del código Reed-Solomon, incluso una persona podría "leer" un código QR. Sin embargo, incluso el código QR más pequeño, el de la versión 1 (21 por 21 módulos), tiene 441 módulos, y descifrarlo con precisión a simple vista sería, en la práctica, casi imposible.

Cómo "ve" la cámara un código QR

El proceso por el que la cámara de un smartphone reconoce un código QR es radicalmente distinto de la visión humana. La cámara obtiene la imagen como una matriz de píxeles y procesa el valor de luminancia de cada píxel como un número.

El reconocimiento del código QR se realiza en cuatro pasos principales. (1) Detección del patrón de búsqueda: se buscan en la imagen tres patrones de cuadrados anidados y se identifican la presencia y la posición del código QR. (2) Corrección geométrica: se corrige la distorsión causada por el ángulo de la toma (distorsión trapezoidal) y se convierte la imagen en cómo se vería de frente. (3) Muestreo de módulos: se divide la imagen corregida en una cuadrícula y se determina el blanco o el negro a partir del valor de luminancia de cada celda. (4) Decodificación de datos: se convierte el patrón en blanco y negro en una secuencia de bits y se aplica la corrección de errores para restaurar los datos.

Lo interesante de este proceso es la corrección geométrica del paso (2). Cuando una persona mira un código QR en ángulo, lo ve deformado en un trapecio, pero el cerebro lo corrige y lo reconoce como "esto debería ser un cuadrado". La cámara también realiza una corrección similar, pero su método es una transformación proyectiva matemática, totalmente distinta del mecanismo de corrección del cerebro humano. La misma "corrección de la distorsión" la logran, cada uno a su manera, los circuitos neuronales biológicos y los algoritmos digitales.

Códigos QR de diseño que aprovechan ilusiones ópticas

Aprovechando a la inversa las características del sistema visual humano, es posible crear diseños que "al ojo humano parecen arte, pero que la cámara reconoce como códigos QR". Se trata de una aplicación de las ilusiones ópticas que aprovecha con habilidad la diferencia entre la visión humana y el reconocimiento de la cámara.

Aplicación de la ilusión de la cuadrícula de Hermann: La "ilusión de la cuadrícula de Hermann", en la que aparecen puntos grises en las intersecciones de las líneas blancas de una cuadrícula, también se produce en la disposición de los módulos de un código QR. Al ojo humano, las intersecciones de los módulos blancos pueden parecer grises, pero como la cámara mide los valores de luminancia con precisión, no se ve afectada por esta ilusión. Los diseñadores pueden aprovechar esta propiedad para diseñar códigos QR que tienen un efecto visual peculiar para el ojo humano, pero que la cámara puede leer con precisión.

Uso de la constancia del color: El sistema visual humano tiene la "constancia del color", que le permite percibir el color de un objeto como constante aunque cambien las condiciones de iluminación. Sin embargo, los sensores de las cámaras no tienen esta función, y el mismo objeto se registra con colores distintos según la temperatura de color de la iluminación. Aprovechando esta diferencia, en teoría también es posible diseñar un código QR que solo pueda escanearse en condiciones de iluminación específicas.

Diversidad en la visión del color y accesibilidad del código QR

Alrededor del 5% de los hombres japoneses (unos 3 millones de personas) tienen "diversidad en la visión del color", es decir, características de visión del color distintas de las de la mayoría. Para las personas con visión del color de tipo P / tipo D, a quienes les cuesta distinguir el rojo del verde, un código QR formado por módulos verdes sobre fondo rojo se ve con un contraste extremadamente bajo, y es posible que "ni siquiera noten que hay un código QR".

Para garantizar la accesibilidad del código QR, es importante un diseño de contraste que no dependa del color. En concreto, se asegura una diferencia de luminancia suficiente (contraste de luminosidad) entre los módulos oscuros y los claros, y se diseña sin depender solo de las diferencias de tono. En la práctica, la referencia es asegurar una relación de contraste de 4:1 o más entre los módulos oscuros y los claros. El 4,5:1 de las WCAG (Web Content Accessibility Guidelines), que se usa para la legibilidad del texto en la web, es un criterio distinto pensado para que las personas lean texto, así que no puede usarse tal cual para decidir si un código QR es válido o no. Cuando decidas la combinación de colores, incluye en el procedimiento de diseño el paso de escanearlo con un dispositivo real para comprobarlo.

El código QR más accesible es la combinación tradicional de blanco y negro. La relación de contraste entre el negro y el blanco es de 21:1, y es la combinación más fácil de distinguir para personas con cualquier característica de visión del color. Hay que evitar sacrificar la accesibilidad por buscar demasiado el diseño.

El misterio de "ver" que nos enseñan los códigos QR

Los códigos QR son un material didáctico cercano que permite experimentar en el día a día la diferencia entre la visión humana y la visión por computadora. Aunque se mira el mismo patrón en blanco y negro, la persona solo puede reconocerlo como un "dibujo", mientras que la cámara lo lee como "datos". Esta diferencia nos enseña que el acto de "ver" no es una simple recepción de luz, sino un procesamiento de información avanzado.

El sistema visual humano realiza al instante tareas que todavía son difíciles para las cámaras, como reconocer caras, leer emociones y comprender el espacio tridimensional. En cambio, la cámara ejecuta con precisión tareas que son imposibles para las personas, como decodificar códigos QR, detectar patrones minúsculos y medir la luminancia de forma constante. Ambos logran el mismo acto de "ver" con enfoques totalmente distintos.