Потопете се в методите за анализ на матричната структура и методите за разпознаване на QR кода
Съдържанието на статията
Вездесъщият баркод вече не е изненадващ. В реалния живот представянето на информация под формата на поредица от черно-бели ивици стана толкова разпространено, колкото стана закупуването на продукт в супермаркет. Информацията за даден продукт (държава на произход, директно производител на стоките, вид стоки и т.н.) се кодира, за да се опрости по-нататъшното му извличане чрез автоматизирани средства. Точно за това е подходящ баркод, който поради своята линейна структура е добре четим в хоризонтална посока.
За да не се получи в крайна сметка „бъркотия“ от дефинициите, предлагам да се придържате към общата класификация на методите за кодиране на информация. Както бе споменато в началото, има два фундаментално различни типа кодиране:
- Линейна (едномерна). Най-често срещаният представител - (популярно наричан "баркод").
- Двуизмерни. На свой ред тя се разделя на:
- многостепенна (подредена);
- матрица.
Ние не се интересуваме от многостепенни кодове, тъй като те са просто „многослоен“ линеен код. На свой ред матричните кодирания „опаковат“ информация както хоризонтално, така и вертикално, което ви позволява радикално да увеличите обема на съхраняваните данни и съответно да премахнете ограниченията върху техния тип - сега става възможно кодирането на текстови данни.
От цялото разнообразие от матрични кодове, ние се интересуваме от QR кода. Неговата повсеместност (само Япония използва тези кодирания с такава завидна популярност, като например ние използваме табели, указващи името на улицата и номера на къщата) се дължи главно на високата степен на разпознаване и, като следствие, на простотата на разпознаването оборудване. Между другото, съкращението QR е получено от английския. „Бърза реакция“, което в превод на страхотен и мощен означава „бърза реакция“.
Xakep Online: https://xakep.ru
Какво да направите с получената информация (следвайте връзката към уеб ресурс, запазете връзката в бележки или контакти и т.н.), вие решавате сами.
Повечето от софтуера са свободно достъпни и безплатни, но малко разработчици споделят изходния код на своя софтуер. Може би този факт се дължи на липсата на интерес на крайния потребител, а може би производителят не иска да разкрие подробностите за алгоритъма за разпознаване. По един или друг начин, ние ще разберем самостоятелно подробностите за разпознаване на QR код програмно, като напишем пълноценно приложение, което в буквалния смисъл ще ни позволи да получим съдържащата се в него текстова информация от снимката.
Инструменти за готвене
Ще разработим приложението за платформата .NET в C #. Изборът на този набор от инструменти се основава не само на удобството и скоростта на разработване на приложения, но и на получаването на резултат от много платформи. По дефиниция проект, компилиран за .NET Framework, е снабден с междуплатформени свойства поради редица функции. Освен това, ако компилираме получения проект с поддръжка на средата .NET Compact Framework, получаваме приложение с висока производителност, специално пригодено за работа на мобилни платформи. Посочената съвместимост без допълнителни разходи за труд се обяснява със следната функция: Microsoft .NET Compact Framework е донякъде премахната версия на .NET Framework, поради което в повечето случаи разработчикът на приложения за мобилни устройства не се нуждае от допълнителни стъпки с изходни кодове за прехвърляне на функционалност към настолни платформи.
Въпреки че всичко е почти очевидно с избора на инструмента за създаване на софтуер, ситуацията с инструментите за манипулиране на QR кода е малко по-сложна. В .NET Framework няма „местни“ инструменти за работа с матрични кодировки.
В процеса на търсене на библиотеки на трети страни за работа с матрични кодове попаднах на уеб ресурс на източна компания, занимаваща се с професионална работа с изображения и обработка на баркодове (двуизмерни кодове, които включват и QR). Разработчиците на компанията любезно споделят резултатите от своите дейности под формата на демо версии на компоненти за кодиране/декодиране на редица двуизмерни представители на баркод с посетителите. SDK е достъпен за изтегляне и съдържа библиотеки за различни платформи: Windows, * NIX, Windows Mobile, Symbian и iPhone (Mac OS). За платформата на Windows, която ни интересува, както и за Windows Mobile, SDK се предоставя заедно с динамична библиотека (.dll), което го прави лесен за използване в проекти на .NET/VC/VB. В допълнение към манипулирането на QRCode, библиотеката може да работи и с DataMatrix и PDF417. Така че, ако имате желание да разширите хоризонтите си и да играете с други видове кодиране, тогава всички действия, описани по-долу, обикновено са подходящи за посочените кодировки.