QR-код — это не просто чёрно-белый узор, который мы видим на упаковках, билетах или рекламных плакатах. Это продуманная инженерная система, созданная для мгновенной передачи данных: от ссылок на сайты до контактной информации. За кажущейся простотой скрывается сложная структура, где каждый элемент играет свою роль. Три квадрата в углах, полосы синхронизации и невидимые коды коррекции позволяют смартфону распознать код за доли секунды даже в сложных условиях. Разберёмся, как устроен QR-код и что делает его таким эффективным.
Три квадрата для ориентации
Три крупных квадрата в углах QR-кода — первое, что замечает камера смартфона. Эти маркеры расположены в левом верхнем, правом верхнем и левом нижнем углах, оставляя четвёртый угол свободным. Каждый квадрат построен по принципу «матрёшки»: чёрный центр размером 3×3 модуля окружён белой рамкой, а затем ещё одной чёрной, образуя узор 7×7. Белая полоса вокруг каждого маркера отделяет его от остальной матрицы, чтобы не путаться с данными.

Эти квадраты — ключ к быстрому распознаванию. Их уникальная структура создаёт чёткий сигнал: чёрные и белые полосы чередуются в соотношении 1:1:3:1:1, что легко обнаружить даже при повороте кода или искажении изображения. Смартфон использует маркеры, чтобы понять, где начинается и заканчивается код, определить его угол наклона и масштаб. Без них камере пришлось бы анализировать каждый пиксель, что сильно замедлило бы процесс.
Сетка для точности
После нахождения угловых квадратов устройство переходит к определению структуры матрицы. За это отвечают линии синхронизации — узкие полосы из чёрных и белых модулей, которые тянутся по шестой строке и шестой колонке, соединяя маркеры. Эти линии работают как линейка, позволяя смартфону подсчитать количество строк и столбцов. Например, в базовой версии QR-кода (21×21 модуль) таких чередований будет 18, а в максимальной (177×177) — гораздо больше.

Для больших кодов добавляются дополнительные точки ориентира — маркеры выравнивания. Это небольшие квадраты 5×5, расположенные в строго рассчитанных местах матрицы. Они помогают скорректировать искажения, если код напечатан на изогнутой поверхности, например, на бутылке или ткани. Вместе линии синхронизации и маркеры выравнивания создают чёткую сетку, по которой устройство «прочёсывает» данные, не теряя времени на лишние расчёты.
Устойчивость к повреждениям
QR-код остаётся читаемым даже при царапинах, пятнах или частичном затемнении. Эту надёжность обеспечивает алгоритм коррекции ошибок Рид-Соломона. Он добавляет к данным избыточные блоки, которые позволяют восстановить информацию, если часть модулей повреждена. В зависимости от выбранного уровня защиты код может выдержать разный процент потерь: от 7% для базового уровня до 30% для самого высокого. Это значит, что даже если пятая часть кода закрыта логотипом или загрязнена, смартфон всё равно извлечёт данные.

Чтобы код не сливался с фоном, вокруг него всегда оставляют белую рамку — так называемую тихую зону шириной не менее четырёх модулей. Она улучшает контраст и предотвращает ложное распознавание, когда рядом с кодом находятся другие узоры или текст.
Хранение и маскировка данных
Сама информация в QR-коде — это текст, ссылка, цифры или даже японские иероглифы — записана в виде чёрных и белых квадратиков, где чёрный означает единицу, а белый — ноль. Данные размещаются зигзагообразно, от нижнего правого угла вверх, по двум столбцам за раз. Перед полезной нагрузкой идут служебные зоны, которые содержат важные метаданные: уровень коррекции ошибок и шаблон маскировки.
Маскировка — это хитрый приём, который распределяет чёрные и белые модули равномерно. Без неё код мог бы содержать большие однотонные области, которые сбивают камеры с толку. Например, если в одном углу слишком много чёрных квадратов, устройство может принять их за случайный узор. Маска меняет цвета модулей по заранее заданному алгоритму, сохраняя данные, но улучшая читаемость. Эти настройки хранятся в небольших зонах рядом с угловыми маркерами, чтобы смартфон мог быстро их считать и применить правильную «размаскировку».
Мгновенное сканирование
Как только камера смартфона захватывает изображение, начинается молниеносный процесс анализа. Картинка преобразуется в чёрно-белую, чтобы упростить расчёты. Алгоритм ищет угловые квадраты, определяет их координаты и угол поворота. Затем он считывает линии синхронизации, чтобы понять размеры матрицы, и проверяет маркеры выравнивания для исправления искажений, например, если код снят под углом.

После этого устройство переходит к служебным данным: извлекает уровень коррекции и маску, чтобы правильно интерпретировать модули. Данные считываются зигзагом, а алгоритм Рид-Соломона проверяет их на ошибки и, если нужно, восстанавливает повреждённые участки. Весь процесс — от захвата кадра до вывода результата — занимает 100-200 миллисекунд. Это возможно благодаря оптимизированным алгоритмам, которые используют простые операции, такие как подсчёт чередующихся пикселей или вычисление геометрических параметров. QR-код работает даже в сложных условиях: при слабом свете, на расстоянии до 20 см или на маленьких поверхностях размером от 2×2 см.
Его структура продумана до мелочей, чтобы камера могла мгновенно «поймать» и расшифровать информацию. Именно эта инженерная точность превращает QR-код в универсальный инструмент, который мы используем каждый день, не задумываясь о его сложности.
Изображение в превью:
Автор: Flux
Источник: Локальная модель Flux