Pull to refresh

Comments 33

Спасибо, исправили. Сложно под эту тематику объективно подходящие хабы подобрать.

А если охота поиграть в камушки,

то можно ещё вот так

"Фельдфебель начал свертывать цигарку. Швейк между тем разглядывал номер винтовки и вдруг воскликнул:      - Четыре тысячи двести шестьдесят восемь! Такой номер был у одного паровоза в Печках. Этот паровоз стоял на шестнадцатом пути. Его собирались увести на ремонт в депо Лысую-на-Лабе, но не так-то это оказалось просто, господин фельдфебель, потому что у старшего машиниста, которому поручили его туда перегнать, была прескверная память на числа. Тогда начальник дистанции позвал его в свою канцелярию и говорит: "На шестнадцатом пути стоит паровоз номер четыре тысячи двести шестьдесят восемь. Я знаю, у вас плохая память на цифры, а если вам записать номер на бумаге, то вы бумагу эту также потеряете. Если у вас такая плохая память на цифры, послушайте меня повнимательней. Я вам докажу, что очень легко запомнить какой угодно номер. Так слушайте: номер паровоза, который нужно увести в депо в Лысую-на-Лабе,-- четыре тысячи двести шестьдесят восемь. Слушайте внимательно. Первая цифра - четыре, вторая - два. Теперь вы уже помните сорок два, то есть дважды два - четыре, это первая цифра, которая, разделенная на два, равняется двум, и рядом получается четыре и два. Теперь не пугайтесь! Сколько будет дважды четыре^ Восемь, так ведь? Так запомните, что восьмерка в номере четыре тысячи двести шестьдесят восемь будет по порядку последней. После того как вы запомнили, что первая цифра - четыре, вторая - два, четвертая - восемь, нужно ухитриться и запомнить эту самую шестерку, которая стоит перед восьмеркой, а это очень просто. Первая цифра-- четыре, вторая-два. а четыре плюс два - шесть. Теперь вы уже точно знаете, что вторая цифра от конца - шесть; и теперь у вас этот порядок цифр никогда не вылетит из головы. У вас в памяти засел номер четыре тысячи двести шестьдесят восемь. Но вы можете прийти к этому же результату еще проще......"

Я думал там спец код, с переворотами, как в cd дисках и радипередачах и помоему в шинах данных. Чтобы не было длинных одинаковых последовательностей. Оказалось что нет. А потом подумал, что это работает в одном измерении, а в 2д могут соседнии ряды мешать и нужнл придумывать 2д коды, чтобы они не создавали острова одинаковых бит.

Для избежания сплошных пятен из чёрных и белых модулей в кодах используется маска, которая может иметь восемь разных форм.

И явно описана процедура штрафов для результатов применения масок.
Выбирается результат с меньшим штрафом.
В качестве метрик как раз используются длинные последовательности и последовательность обнаружения якорей.

Вот место, где указывается использованный шаблон маски:

Это место всегда фиксированное для данной версии кода?

Во-первых, оно фиксированное (возле опознавательных меток) вообще всегда, независимо от версии. Во-вторых, оно записывается в двух копиях -- горизонтально и вертикально. В-третьих, оно сопровождается кодом для коррекции ошибок, так что фактически от выбора шаблона маски и уровня коррекции ошибок (5 битов данных) зависят 30 ячеек QR: 15 в вертикальном ряду, и 15 в горизонтальном.

🙈
🙈

Квадратик просто не закрасился или он не из "особой области"?

Вы про чёрный посередине? Он из другой "особой области" -- наравне с опознавательными метками и метками тайминга; смотрите, на иллюстрации ниже ссылки на "Ящерицы М. К. Эшера" он выделен одинаково с ними.

Смутно подозревал, что одна и та же информация может быть закодирована различными вариантами, есть приложение под Андроид чтобы не таскать с собой все скидочные карты, просто отсканировал их и показываешь потом на телефоне. Так вот, иногда сохранённая QR метка визуально выглядит не как оригинал, сначала думал ошибка в приложении, а и правда так может быть.

Будет ли работать QR-код, если красные области, именуемые как: Опознавательные метки (finder pattern) выставить по всем четырем углам квадрата?

А остальное заполнение пространства между метками позиционирования оставить как есть, пусть и с потерей количества вмещаемой информации?

а как мы определим тогда, откуда начинать?

Теоретически это возможно в версии 1 -- потому что начиная с 2 в четвёртом углу будет обязательная выравнивающая метка. При высоком уровне коррекции ошибок в код версии 1 помещаются 7 байт данных, и допускается порча 8 байтовых блоков; метка позиционирования по размеру как раз 8 блоков и занимает.

Практически -- не все сканеры нормально читают такой QR; можете сами попробовать, справится ли ваш: (мой телефон справляется)

Для такого рода экспериментов очень удобен мой редактор https://tyomitch.github.io/qr.html о котором я писал день в день четыре года назад: https://habr.com/ru/articles/518476/

Кстати да первый код не читается на чёрном фоне, абсолютно, а вот следующий с красными квадратами без проблем, это не только проблему QR кодов, штрих коды тоже не читаются на чёрном фоне если нет белой рамки. Столкнулся с этим когда получал на озоне по картинке с кодом, сменил тему и сразу прочиталось.

Существуют ли модули считыватели QR или DataMatrix кодов, которые бы в UART выдавали не только данные внутри QR/DataMatrix кода, но также и угол наклона QR кода относительно камеры?


Очевидно же, что где-то внутри DSP алгоритма фигурирует переменная угол кода. Иначе же не выделить биты.

А то, ведь, можно сделать датчик угла на основе считывателя QR кода.

Измерять угол наклона считываемого кода относительно самого считывателя (камеры).

Нсли шаблон был "два чёрных, одна белая", диагональный шаблон получается из двух белых, одной чёрной?

Бывают коды, в которых в центре лого системы, ссылку на которую содержит код: телега, лого банка и т.д. В какую область эта картинка помещается?

Если с 4-5 лет обучать, можно ли вырастить человека, который qr сможет читать легко и непринужденно, как сканер?)

Ну если есть люди, которые легко и непринужденно читают иероглифы из 108 штрихов, то QR-код особой проблемы не составит.

Скрытый текст

Советское образование считают "лучшем в мире" потому что
a) конструкторов учили определять диаметр труб на ощупь (в том числе горячих труб),
b) инженеров перемножать трехзначные hex числа в уме.

Первое - чтобы компенсировать дефицит штангенциркулей, второе чтобы компенсировать дефицит калькуляторов.

Сегодня же с Aliexpress очевидно, что навыки “a” “b” гроша ломаного не стоят.

Подозреваю, что если бы CCCР просуществовал еще 30 лет, то сейчас бы в ВУЗах учили еще штрих/QR коды распознавать на глаз.

конструкторов учили определять диаметр труб на ощупь

Наглое враньё!

На глаз!
Лазарев Л. Коснувшись неба. — М., Профиздат, 1988. — c. 220
Лазарев Л. Коснувшись неба. — М., Профиздат, 1988. — c. 220

А ты даже нониусом пользоваться не умеешь,%USERNAME%!

Вот вот. Даже в советской литературе оказывается пропагандировали делать измерения "на ощупь".

Стране нужны были мастера своего дела, а не посредственности, как сейчас.

Спасибо за Вашу статью! Столько заблуждений и ошибок в одной публикации давно не видел.

Данная статья (как и аналогичные) помогает развивать сферу мошенничества, скрывая истинную информацию, которая заложена в "бинарный коврик". Если по существу, то:

  • здесь представлен алгоритм не по ГОСТ/ISO, а выдумка первого модуля QR Code ассоциации GAFAM;

  • в байтовом режиме разные алгоритмы обхода, в зависимости от величины матрицы;

  • индикаторы обозначены правильно, а вот код БЧХ описан абсолютно неверно;

  • про маски - насмешили, зачем Эшера вспомнили? Это обычное XOR маскирование;

  • алгоритм определения режима - "фтопку";

  • алгоритм определения количества символов кода - "фтопку";

  • использование ASCII - "фтопку";

  • ...

    Изучайте ГОСТ, пжта, перед тем как публиковать столь выгодные Ассоциации заблуждения!

з.ы.: подготовил полные инструкции по кодированию и декодированию Micro QR Code M1-M4 по ГОСТ и не по ГОСТ. Пока не опубликовал. Если кому интересно поучаствовать, пишите.

з.з.ы.: готовы альтернативные алгоритмы кодирования по алгоритму Хэмминга и тернарные коды (как при шифровании в "Тележке"). Пока не опубликовал. Если кому интересно поучаствовать, пишите.

Жду статью "Выходим в интернет без компьютера"

Sign up to leave a comment.