QRkoder

Timing Pattern

Timing Pattern — временная дорожка QR-кода из чередующихся чёрных и белых модулей, служащая для калибровки размера модулей при декодировании.

Определение Timing Pattern

Timing Pattern (временная дорожка) — служебная область QR-кода, состоящая из двух линий чередующихся чёрных и белых модулей. Первая линия — горизонтальная, проходит по 6-й строке кода между двумя верхними Finder Pattern. Вторая — вертикальная, проходит по 6-му столбцу между левым верхним и левым нижним Finder Pattern. Timing Pattern всегда начинается и заканчивается чёрным модулем, а длина зависит от версии QR-кода: от 5 модулей в версии 1 до 161 модуля в версии 40.

Основная функция Timing Pattern — калибровка размера модулей при декодировании. Когда сканер получает искажённое или размытое изображение QR-кода, точно определить границы каждого модуля по изображению сложно. Чередующиеся чёрные и белые модули Timing Pattern дают эталонную «линейку», по которой декодер восстанавливает точные размеры и позиции каждого модуля в сетке. Это повышает надёжность считывания при плохом освещении, нерезкой печати или наклоне.

Как работает Timing Pattern

После того как сканер нашёл Finder Pattern в трёх углах кода, он может приблизительно определить размер матрицы (количество модулей по стороне). Однако из-за перспективных искажений и неточностей построения точный размер каждого отдельного модуля может варьироваться. Timing Pattern решает эту задачу: чёрно-белые модули чередуются строго через один, и декодер легко считает их количество, проводя линию между центрами Finder Pattern.

По количеству модулей в Timing Pattern сканер вычисляет версию QR-кода и, как следствие, точный размер матрицы. Например, если между Finder Pattern насчитано 25 модулей по горизонтали, это версия 2 (25×25). После этого декодер знает точные координаты каждого модуля данных и может корректно их считать, применив маску и декодировать через Reed-Solomon.

Структура и расположение

ПараметрЗначение
Горизонтальная дорожкаСтрока 6, между Finder Pattern
Вертикальная дорожкаСтолбец 6, между Finder Pattern
Начальный модульВсегда чёрный
Конечный модульВсегда чёрный
ЧередованиеЧёрный, белый, чёрный, белый...
Длина в версии 15 модулей
Длина в версии 40161 модуль

Timing Pattern пересекает Alignment Pattern в больших версиях кода (начиная с 7), но это не создаёт конфликта — стандарт ISO/IEC 18004 определяет, что Alignment Pattern имеет приоритет, и в пересекаемой области рисуется именно он. Декодер при калибровке учитывает эту особенность и корректно интерпретирует составную структуру.

Почему именно 6-я строка и столбец

Выбор позиции 6 (начиная с нуля, седьмая строка и столбец) обусловлен геометрией Finder Pattern. Каждая поисковая метка занимает 7 модулей, плюс 1 модуль сепаратора — итого 8. Timing Pattern располагается прямо за сепаратором на 6-й строке (считая от 0) и начинается с 8-го модуля — сразу после правого сепаратора левой верхней Finder Pattern и продолжается до левого сепаратора правой верхней Finder Pattern.

Такое расположение оптимально: дорожки проходят между двумя соседними Finder Pattern, давая максимальную длину опорной линейки внутри кода. Это важно для точности калибровки: чем длиннее Timing Pattern, тем точнее можно определить размер модулей. В версии 40 временная дорожка достигает 161 модуля, что обеспечивает высокую точность даже при значительных искажениях.

Связанные концепции

  • Finder Pattern — поисковые метки, ограничивающие Timing Pattern.
  • Alignment Pattern — метки выравнивания, пересекающие Timing.
  • Модуль QR — базовая единица кода, размер которой калибруется.

Частые вопросы

Зачем QR-коду нужен Timing Pattern?

Timing Pattern работает как эталонная линейка для калибровки размера модулей. Finder Pattern в углах дают общий каркас кода, но размер отдельных модулей внутри нужно уточнить, особенно при перспективных искажениях или размытой печати. Чередующиеся чёрные и белые модули Timing Pattern позволяют точно сосчитать количество модулей в сетке и определить версию QR-кода. Без Timing Pattern надёжно декодировать код было бы значительно сложнее, особенно в версиях 10+ с большим количеством модулей.

Где расположен Timing Pattern в QR-коде?

Timing Pattern состоит из двух линий. Горизонтальная — на 6-й строке QR-кода (считая от 0), между двумя верхними Finder Pattern. Вертикальная — на 6-м столбце, между левым верхним и левым нижним Finder Pattern. Позиция 6 выбрана, потому что каждая Finder Pattern занимает 7 модулей плюс 1 модуль сепаратора — итого 8. Timing Pattern начинается сразу за сепаратором и идёт до следующей Finder Pattern, формируя служебные линии внутри кода.

Что будет, если Timing Pattern повреждён?

Повреждение Timing Pattern — одна из самых серьёзных ошибок в QR-коде. Без точной калибровки размера модулей сканер не сможет правильно считать данные, даже если Finder Pattern целы. В больших версиях (10+) повреждение временной дорожки приведёт к сдвигу всей сетки модулей на доли модуля, что каскадно сломает декодирование. Поэтому при встраивании логотипа и элементов дизайна ни в коем случае нельзя перекрывать Timing Pattern — даже уровень коррекции H не спасёт от такой ошибки.

Timing Pattern всегда начинается с чёрного модуля?

Да, стандарт ISO/IEC 18004 требует, чтобы Timing Pattern начинался и заканчивался чёрным модулем. Чередование идёт по схеме: чёрный, белый, чёрный, белый... и так до последнего чёрного. Для любой версии QR-кода количество модулей в Timing Pattern нечётное, что гарантирует симметрию «чёрные на обоих концах». Это помогает декодеру легко определить границы дорожки и корректно её интерпретировать при декодировании версии кода.

Может ли Alignment Pattern пересекать Timing Pattern?

Да, в QR-кодах версии 7 и выше Alignment Pattern может пересекать Timing Pattern. В таких случаях стандарт ISO/IEC 18004 определяет приоритет Alignment Pattern: в пересечении рисуется метка выравнивания, а Timing Pattern прерывается на этой области. Декодер это учитывает и корректно интерпретирует обе структуры, используя известные правила их расположения. Это одна из причин, почему QR-код с версии 7 становится сложнее для генерации без специализированной библиотеки.

Создавайте QR-коды бесплатно

Динамические QR-коды с аналитикой, дизайном и без ограничений по сканированиям.

Начать бесплатно
Timing Pattern — временная дорожка QR, QRkoder