Синхрополосы (Timing Pattern)
Синхрополосы — чередующиеся чёрно-белые модули в 6-й строке и 6-м столбце QR-кода, которые задают сканеру координатную сетку и шаг модуля между позиционными маркерами.
Как работают синхрополосы
Синхрополосы — две тонкие линии из модулей, чередующихся чёрный-белый-чёрный-белый без единого пропуска. Одна идёт горизонтально по 6-й строке, вторая вертикально по 6-му столбцу; отсчёт ведётся от нуля, из левого верхнего угла. Обе всегда начинаются и заканчиваются тёмным модулем.
Регулярность и есть весь смысл. По ровному чередованию декодер понимает, где проходят границы каждого модуля, вычисляет их шаг и общее число столбцов и строк. Отсюда он выводит плотность символа и косвенно его версию: чем больше модулей уложилось между угловыми квадратами, тем выше версия. Без этой встроенной линейки сканер не знал бы, попал центр пикселя камеры в модуль или на стык двух соседних.
Связь с позиционными и выравнивающими маркерами
Синхрополосы работают в паре с позиционными маркерами — тремя крупными квадратами по углам. Маркеры дают камере грубую привязку: где верх, где низ, под каким наклоном лежит код. Синхрополосы соединяют эти квадраты и превращают грубую рамку в точную сетку с известным шагом.
В версиях от 2 и выше добавляются выравнивающие маркеры — маленькие квадраты внутри поля. Они подстраховывают на крупных и искривлённых кодах, где геометрии одних угловых квадратов уже мало. Синхрополосы задают базовый ритм модулей, выравнивающие маркеры корректируют его на длинных дистанциях — вместе они держат сетку ровной по всему полотну. Собрать корректный код со всеми служебными зонами можно в конструкторе QR-кодов.
Что будет при повреждении
Синхрополосы не входят в зону данных, поэтому коррекция ошибок Рида — Соломона их не восстанавливает: она защищает только полезные данные и байты избыточности. Если линия затёрта частично, декодер обычно достраивает ритм по уцелевшим участкам и по позиционным маркерам. На больших версиях выручают выравнивающие маркеры — сетка реконструируется даже без части синхрополосы.
Тяжелее всего мелким кодам версии 1: там выравнивающих маркеров нет, и вся синхронизация держится на одной паре линий. Полностью забитая грязью или обрезанная синхрополоса на таком коде почти гарантированно ломает чтение — сканеру не от чего оттолкнуться, чтобы разложить поле на модули.
Частые вопросы
Где расположены синхрополосы в QR-коде?
Две линии: горизонтальная проходит по 6-й строке между двумя верхними позиционными маркерами, вертикальная — по 6-му столбцу между левым верхним и левым нижним маркерами (отсчёт от нуля из левого верхнего угла). Обе состоят из чередующихся тёмных и светлых модулей и начинаются с тёмного.
Чем синхрополосы отличаются от позиционных маркеров?
Позиционные маркеры — три больших квадрата по углам, по ним камера находит код и определяет его наклон. Синхрополосы — тонкие чередующиеся линии между маркерами, они задают шаг модуля и точную координатную сетку. Маркеры дают грубую привязку, синхрополосы превращают её в точную разметку.
Восстанавливаются ли синхрополосы коррекцией ошибок?
Нет. Коррекция Рида — Соломона защищает только данные и байты избыточности, а синхрополосы относятся к служебным зонам вне этой защиты. При частичном повреждении декодер достраивает ритм по уцелевшим модулям, позиционным и выравнивающим маркерам, но полностью стёртая линия на мелком коде ломает чтение.
Связаны ли синхрополосы с версией QR-кода?
Да, косвенно. По числу модулей, уложившихся вдоль синхрополосы между угловыми маркерами, декодер вычисляет размер сетки, а значит и версию символа — от 1 (21×21 модуль) до 40 (177×177). На кодах версии 7 и выше точный номер версии дополнительно записан в отдельных зонах информации о версии.