От Кирилл Ю
К Иван
Дата 01.09.2003 13:00:01
Рубрики 1941; Холмово;

Re: Я именно...

>Собственно, когда я говорил (ранее, когда эта дискуссия возникала, и сейчас) о принципиальной возможности придумать алгоритм, который будет распознавать штрих-код без учета величины S и, следовательно, пробелов между символами, я имелв виду почти в точности то, что Вы написали. Будет ли это декодирование однозначным - нет, при имеющейся структуре штрихов (Вы сами привели пример двух кодов, которые друг от друга отличаются только масштабом, - не уверен, что этот пример единственный).

Это все же единственный пример. В этом легко убедиться, взглянув на таблицу кодировки. Возмем к примеру сет C (все сеты получаются друг из друга путем зеркального отображения и/или инверсии). Это четный сет, т.е. суммарная толщина полосок может быть 2 или 4 молуля. Максимальная толщина знака без учета последнего пробела не должна превышать 6 модулей, чтобы оставить минимальный пробел в 7-модульном знаке. Легко убедиться, что число возможных комбинаций составляет как раз десять, для кодировки цифр от 0 до 9. "6" - единственное в своем роде - самое тонкое, состоит из 3-х модулей. Более толстые комбинации по определению не могут содержать кратных пар (4-х модульные знаки уже потребуют 8 модулей при ограничении в 6). Еще раз хочу заметить, что 2-х кратный разбег между "6" и "1" более чем достаточен для успешного их декодирования. Искаженные до такой степени ШК не осилил бы ни один алгоритм.

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

Пока что это довольно голословное утверждение. Такого рода избыток еще не гарантирует повышения точности.

> Представьте, что искажение произошло из-за плохой пропечатки штрих-кода - где-то тонкий штрих "смазался" и стал в два раза толще.

Расплывание или усыхание штрихов - обычное дело. Алгоритмы декодирования как раз с этой проблемой легко справляются. Только тоже до определенных пределов. Тот же ГОСТ предполагает +/- 0.5 модуля (те самые интервалы RT). Если тонкий штрих увеличить в два раза, то он рискует слиться с соседним штрихом, сделав код абсолютно не читаемым. А +/- 0.5 не представляет никакой проблемы, замеряй мы S или нет.

> Тогда алгоритм ошибется и распознает неверный код, тогда как ГОСТ-овский алгоритм увидит, что один из символов имеет толщину не 7, а 8 модов, и установит факт неправильности самого штрих-кода.

Вообще говоря, если штрихи расплываются, то пробелы между ними сокращаются на ту же величину (то же самое и на оборот). Поэтому никаких 8 модулей не будет. И опять не видно, чем нас так выручает S. Выручает оно, на мой взгляд, именно конспираторов. Замеряя S можно убедиться в том, что ШК в точности соответствует таблице кодировки ГОСТа, т.е. все знаки дополнены до 7 модулей. Иначе говоря, если мы, доказывая наличие там шестерок, подсунем сканеру модифицированный ШК с урезанными до 1-го модуля вторыми пробелами, то гарантированно получим ошибку.