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