Дослідження принципів заводостійкого кодування. QR-коди

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2018
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Інформаційні технології

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра БІТ З В І Т до лабораторної роботи №4 з дисципліни: «Інформаційні технології» на тему: «Дослідження принципів заводостійкого кодування. QR-коди» Варіант № 24 Мета роботи – ознайомитися з особливостями завадостійкого кодування інформації на прикладі QR-кодів; навчитись проводити ручне декодування такої інформації. 1. Завдання 1.1. Ознайомитись із теоретичними відомостями побудови QR-коду. 1.2. За допомогою web-сторінки генерації QR-кодів закодувати власне прізвище латинськими літерами у форматі прізвище_іб, з рівнями завадостійкості L, M та Q. 1.3. Для коду з рівнем завадостійкості L провести ручне декодування перших 20 біт інформації – визначити тип даних (1..4), кількість байт даних (5..12) та 1-й символ (13..20). 1.4. За допомогою скрипта Matlab/Scilab повністю розкодувати QR-код з рівнем L в автоматичному режимі. Отримати підтвердження результатів з п. 2.3. 1.5. У файли згенерованих QR-кодів за допомогою програми графічного редактора (напр. MS Paint) внести довільні (окрім блоків орієнтування, центрування та ліній синхронізації) спотворення у кількості менше та більше відповідного рівня завадостійкості. 1.6. За допомогою мобільного пристрою або web-cторінки сканування QR-кодів розкодувати повідомлення початкових та спотворених зображень. Для кожного рівня завадостійкості визначити максимальну кількість спотворених кодових слів (байт) при яких вдається повністю відновити закодований текст. 1.7. Зробити висновки щодо коректуючої здатності QR-кодів. 2. Результати виконання роботи 2.1. Генерація QR-кодів За допомогою програми онлайн-генератора (https://www.qr-code.com.ua) було закодовано повідомлення (Sorokin_OV) для різних рівнів завадостійкості.  Рис. 1. QR-код з рівнем завадостійкості L  Рис. 2. QR-код з рівнем завадостійкості M  Рис. 3. QR-код з рівнем завадостійкості Q 2.2. Результати ручного декодування Біти QR-коду Призначення поля Двійкове значення Декодоване значення  1..4 тип даних 1000 двійковий формат  5..12 к-ть символів 00110110 10  13..20 1-й символ 01101111 ‘S’   2.3. Текст скрипт файла для автоматичного декодування clc; n=21; QR_code = [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0; 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0; 0 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 1 0 1 1 0; 0 1 1 1 1 0 0 0 1 0 0 1 1 1 0 1 0 0 0 1 1; 0 0 1 0 0 0 0 0 1 0 1 1 0 1 1 1 1 1 0 1 1; 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 1; 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 1 1 1 0; 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1; 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0; 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 1; 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0; 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1] Mask = zeros (n,n); for i=0:n-1 for j=0:n-1 if (mod((fix(i/2)+fix(j/3)),2) == 0) Mask(i+1,j+1)= 1; end end end Mask(1:9,1:9) = 0; Mask(1:9,end-7:end) = 0; Mask(end-7:end,1:9) = 0; Mask(10:end-8,7) = 0; Mask(7,10:end-8) = 0; Matrix = xor(Mask, QR_code); Matrix(:,7) = []; Matrix(7,:) = []; j = n-1; infobits = []; while (j>0) if (j>(n-1-8)) start = n-1; stop = 9; elseif (j > 9) start = n-1; stop = 1; else start = n-1-8; stop = 9; end column_1 = Matrix(stop:start,j-1:j); column_2 = Matrix(stop:start,j-3:j-2); t3 = [(fliplr(flipud(column_1)))' (fliplr(column_2))']; infobits = [infobits; t3(:)]; j = j-4; end num = polyval(infobits(5:12),2); fprintf('************************************\n'); fprintf('>>> %s %d%d%d%d\n', 'Data Type code:', infobits(1:4)); fprintf('>>> %s %d', 'Number of bytes:', num); fprintf('\n************************************\n'); for i=1:num c = polyval(infobits(5+i*8:12+i*8),2); fprintf('>>> %d byte code: 0x%x -> ''%c''\n', i, c, c); end 2.4. Результати декодування з командного вікна Matlab/Scilab ************************************ >>> Data Type code: 0100 >>> Number of bytes: 10 ************************************ >>> 1 byte code: 0x53 -> 'S' >>> 2 byte code: 0x6f -> 'o' >>> 3 byte code: 0x72 -> 'r' >>> 4 byte code: 0x6f -> 'o' >>> 5 byte code: 0x6b -> 'k' >>> 6 byte code: 0x69 -> 'i' >>> 7 byte code: 0x6e -> 'n' >>> 8 byte code: 0x5f -> '_' >>> 9 byte code: 0x4f -> 'O' >>> 10 byte code: 0x56 -> 'V' 2.5. Внесення спотворень в QR-код   а) б) Рис. 4. Внесення спотворень в QR-код (з рівнем L) а) в межах 3-х байт б) в межах 4-х байт   а) б) Рис. 5. Внесення спотворень в QR-код (з рівнем M) а) в межах 5-ти байт б) в межах 6-ми байт   а) б) Рис. 6. Внесення спотворень в QR-код (з рівнем Q) а) в межах 6-ми байт б) в межах 7-ти байт 2.6. Сканування QR-кодів   а) б) Рис. 7. Результати сканування QR-кодів (з рівнем L) зі спотвореннями а) в межах 3-ох байт б) в межах 4-ох байт   а) б) Рис. 8. Результати сканування QR-кодів (з рівнем M) зі спотвореннями а) в межах 5-ти байт б) в межах 6-ти байт   а) б) Рис. 9. Результати сканування QR-кодів (з рівнем Q) зі спотвореннями а) в межах 6-ми байт б) в межах 7-ти байт Таблиця Визначення коректуючої здатності QR-коду Закодоване повідомлення К-ть інформації, байт      L (7%) M (15%) Q (25%)  Sorokin_OV 10 10 10  Службові поля 2 2 2  Блок корекції 7 10 13  Залишок (порожні блоки) 7 4 1  Всього 26 26 26  Максимально допустимі спотворення 3 5 6   Висновки В даній роботі я провів ручне декодування QR-коду та ознайомився з його структурою. Також я дізнався про рівні завадостійкості та їх можливості коригування. Експериментальним методом визначив допустимо можливу кількість спотворених байтів в QR-коді.
Антиботан аватар за замовчуванням

21.11.2018 09:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!