Друзья!
Давно ничего не писал — исправляюсь. Во-первых, следующая тема канала — избыточное кодирование — то, чем я занимаюсь последний год. Вкратце, избыточное кодирование — это о том, чтобы исправлять данные после частичного повреждения. Практически в любой ситуации когда данные хранятся долго или передаются в не очень благоприятной среде ошибки неизбежны и избыточное кодирование помогает от этого защититься. Самый важные сферы применения — это собственно алгоритмы для обеспечения физических накопителей (флеш-карты, ленты, HDD) и передача данных (ethernet, WiFi), но к сожалению просто так заглянуть в них не получится... 😢 Однако у меня для вас есть наглядный пример — избыточное кодирование в QR коде!
QR коды сейчас используются повсеместно, его легко визуально распознать, и я уверен что вы очень часто видели стилизованные QR коды с логотипами. Вот только если вы посмотрите на технические стандарты QR-кодов, вы нигде не увидите описание того, как и куда можно добавить логотип. Всё потому, что никакого регламента по логотипам в них нет и не было (и скорее всего никогда не будет), так как же так получилось, что логотипы просто лепят поверх данных, а QR коды все равно работают?
Дело в том, что во все QR коды заложено избыточное кодирование, предполагалось, что это должно помочь считыванию в случае код нанесен на физическую поверхность, с которой со временем сходит краска. На второй картинке изображено подробное описание что к чему относится в QR коде: сине-голубая часть — исходные данные, желтая — данные избыточного кодирования, все остальное — вспомогательная информация для сканнера. Зеленые/красные границы фигур из в 8-ми квадратиков — это то, как биты формируют байты в QR коде. На третей картинке видно как логотип закрывает в 8-ми фигурках хотя бы по 2 квадратика и еще в двух частично закрывает один квадратик. Стандартные сканнеры могут считать конкретно этот QR код если закрыты не больше 8-ми фигурок (на самом деле можно больше, но об этом в другой раз) и если бы логотип был чуть-чуть больше, то QR код уже не считывался бы.
В ближайшее время скрипты для отрисовки кодов на картинках доделаю и выложу в открытый доступ — можно будет поэкспериментировать, ссылку оставлю в одном из следующих постов
Post #713
602
