От Иван
К Виктор А.К.  
Дата 26.12.2000 22:50:14
Рубрики Прочее;

Re (3): Может ли человек декодировать штрих-код безо всякого сканера?  Может!

> Ответ несовсем правильный. :-) Существуют штрихкоды в которых закодированы и буквы. Это код, а уж чего именно определяет его разработчик.
 
 
Мы обсуждаем конкретный штрих-код, EAN-13.
 
 
> Ответ: да, он ставится на товарах видимым образом, человеком вполне читаем и распознаваем.
 
> Это некорректно, любой графический знак распознаваем( в смысле видим) человеком
 
 
Ну уж нет.  Тот же штрих-код можно нанести краской, невидимой для человека.  Знак можно сделать микроскопически малым, знак может быть таким, что его и не заметишь — Watermarks на рисунках, и т.п.  Штрих-код же лепится на все товары
 
 
> Распознать послания Алекса Юстасу ты тоже можешь, но что именно скрывается за столбиками цифр, это уже врядли.
 
 
1) Вроде, мы незнакомы
 
2) А вот штрих-кодом явно несколько проще — всего-то по 3 максимум разновидности значков для каждой цифры.  Даже не имея таблицы с изображениеми штрихов, но взяв нескоько разных штрих-кодов (теперь в каждом доме они есть, — демократия!) и сравнивая цифры снизу.
 
 
>>4. Если рассматривать штрих-код с точки зрения сканера и существующих стандартных и нестандартных алгоритмов его декодирования, декодируются ли разделители в цифры и если декодируются, то в какие?  
 
Ответ для меня до конца неясен, возможно, что вопрос некорректен.  
 
> На самом деле именно это и обсуждалось. А ответ прост, декодировать разделители можно, но ненужно. А тот кто хочет может декодировать их в любую цифру , хотя это и не соответствует ГОСТу и алгоритм перестает быть обратимым. То есть каждый поступает здесь по своей воле, но не по ГОСТу.  
 
 
Вместо подробного ответа приведу ссылки на три исследования штрих-кода, где все приведенные в том числе Вами доводы подробно анализируются: http://www.voskres.ru/taina/barcode.html , http://www.voskres.ru/taina/invest.html ,
 
http://orthodoxy.newmail.ru/apostasia/zarubin.html
 
Кстати, Олег Зарубин — участник этого форума, может ответить и на вопросы по своему анализу.
 
 
> Ответ: как три шестерки: 666.  
 
> Это в случае если его так рассматривать, но он предназначен не для человека, а для сканера.
 
 
Это кто сказал?  ГОСТ, или диакон Кураев?  А надпись на заборе предназначена, чтобы предохранить его от плесени :)
 
 
> А 666 они представляются только по не знанию.
 
> Если же человек обратит внимание на пробелы, то для него они перестанут быть 666.
 
 
Скажите, вот тут что написано: «МАМА и ПАПА»?  
 
А тут: «М А М А   И   П А П А»?
 
А тут: «М А М А  И ПАПА»?
 
Одно и то же или разные фразы?
 
А если еще шрифт поварьировать — моноширинный там, или нет...
 
Так что про восприятие знаков человеком лучше не надо рассказывать...
 
  
 
> Для меня например ясно зачем разделители нужны.
 
> Ведь данный код по краям начинается с пробелов и его нужно отделить от пустого места, а по середине не дать слиться крайним темным полоскам. При этом вполне естественно выбраны минимальные последовательности из единичных полосок. Тем более, что именно такая последовательность применятеся  кажется в протоколах по обмену данными для сигнализации, что сигнал пошел.
 
> Код семитричен возможно для того, что бы внезависимости от ориентации сканер мог начать считывание и определить в какую половину он попал.
 
 
Никто не спорит, что две тонкие полоски по краям нужны, и именно тонкие.  По поводу средней полоски поспорить можно (см. ссылки выше).  А вот объясните мне, почему две токие полоски присутствуют в кодах для цифры 6, и только для нее, а не для цифры 0, 1, 2, 3, 4, 5, 7, 8, 9?  Случайное совпадение?  Вероятность сможете посчитать этой «случайности»?
 
 
>>1) В большинстве случаев на штрих-коде присутствует и цифровая запись кода, что дает любому неискушенному человеку возможность определить соответствие между штрихами и цифрами.  Особенно если есть шестерка, представленная в виде двух тонких линий (пр то, что есть среди трех возможных представлений шестерки и отличное от трех тонких штрихов редставление, знали всегда)
 
> Как раз и не дает это возможность ничего определить, лично я пока стандарт не увидел, не мог понять как нуль или восемь записываются, а ведь их сочетание тоже дает нечто похожее на разделитель(точно также как  6 и даже еще более).
 
 
Да ничего сложного — отсчитываешь по два штриха от разделителя и объединяешь их в пары, и все.  Ведь в сетах A и B, использующихся между первыми двумя разделителями, слева всегда пробел, а в сете C всегда есть пробел справа, потому штрихи никогда не «слипаются».  По ширине штрихов и расстоянию между ними они почти однозначно декодируются зрительно, без особых проблем.  Поэтому я Вас не понимаю — я раскодировал штрих-кож запросто до изуения всяких стандартов, еще когда их и не было вовсе нигде.
 
 
Вот таблица с описанием штрихов (приводится по афонскому исследованию: http://www.voskres.ru/taina/barcode2.html):
 
 
     A       B       C
 
0 0001101 0100111 1110010
 
1 0011001 0110011 1100110
 
2 0010011 0011011 1101100
 
3 0111101 0100001 1000010
 
4 0100011 0011101 1011100
 
5 0110001 0111001 1001110
 
6 0101111 0000101 1010000
 
7 0111011 0010001 1000100
 
8 0110111 0001001 1001000
 
9 0001011 0010111 1110100
 
 
Отбросим крайние нули, и построим таблицу для декодирования штрихов:
 
 
штрих цифра
 
101    6 (set B, C), разделители (левый, правый, средний)
 
1001   8
 
1011   9
 
1101   0
 
10001  7
 
10011  2
 
10111  4 (set C), 9 (set B)
 
11001  1
 
11011  2
 
11101  4 (set B), 9 (set C)
 
100111 0
 
100001 3
 
100011 4
 
100111 5
 
101111 6
 
110001 5
 
110011 1
 
110111 8
 
111001 0(set C), 5(set B)
 
111011 7
 
111101 3
 
 
Из таблицы видно, что имеются лишь три узких места в декодирвоании на символьной основе, — для пар (4C,9B), (4B,9C), (0C, 5B). Но в каждой из этих пар штрихи принадлежат к разным «классам» сетов, которые встречаются либо тоько между первыми двумя «разделителями», либо между вторыми «двумя».  Разделители «на глаз» также легко опознаются, так как они «почему то» выступают вниз (и зачем это сканеру нужно? :)).  Кстати, с помощью вышеприведенной таблицы можно не только 12 цифр «на глаз» восстановить, но и 13-ю вычислить, так как в сетах A и B для одной и той же цифры нет одинакового «символьного» кода!
 
 
Попробуйте опровергнуть!
 
 
> Забавно, что этот человек не сможет декодировать число, если оно вообще не будет подписано внизу, но никто себе в этом отчет не отдает — что он просто не знает как записываются цифры в штрих-коде.
 
 
Это легко восстановить, собрав некоторое количесвто штрих-кодов.  См. выше.
 
 
> Рассматривается то он рассматривается, только цифры для человека, а штрихкод для машины — это вообщем то ясно указанно.
 
 
Указано кем?
 
 
>>ОДНОЗНАЧНОСТЬ КОДИРОВАНИЯ заключена в том, что по штрихам можно восстановить закодированное число.  Наоборот у Вас не получится и без разделителей, даже с учетом всех пробелов, т.к. каждая цифра имеет 3 разных представления — непонятно, из какого сета брать штрихи.
 
>  
 
> Неправильно, в ГОСТе хорошо описано какие сеты где ставить. Там есть тринадцатое число, так оно кодируется сочетанием сетов в первой половине. Поэтому алгоритм обратим.
 
 
С этим согласен, он обратим с точки зрение машины, но не человека, который просто сопоставляет цифры со-штрих-кодом.  Кстати, а зачем его обращать?  Из спортивного интересу?
 
 
> Но опять же что возможно — то что преднамеренно были вставленны символы _похожии_, но не _являющиеся_ шестерками.
 
> В этом случае всеравно бояться нечего.
 
 
Да никто и не боится, мы просто обращаем внимание на то, что кто-то пакостит у всех на глазах.  И у этого кого-то рожки торчат на голове.