DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

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

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

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

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

Рік:
2018
Тип роботи:
Лабораторна робота
Предмет:
Інформаційні технології
Група:
КН-31
Коротко про документ

Про що ця робота

У роботі досліджено принципи завадостійкого кодування інформації на прикладі QR-кодів. Проведено ручне та автоматичне декодування даних і визначено коректувальну здатність.

У роботі розглядаються

  • Завадостійке кодування
  • QR-коди
  • Декодування інформації
  • Коректуюча здатність
  • Алгоритми обробки даних
  • Програмне забезпечення MATLAB

Зміст і розділи

  1. Завдання
  2. Результати виконання роботи
  3. Генерація QR-кодів
  4. Результати ручного декодування
  5. Текст скрипт файла для автоматичного декодування
  6. Внесення спотворень в QR-код
  7. Сканування QR-кодів
  8. Висновки
Для кого:Студенти технічних спеціальностей та вищих навчальних закладів вивчення комп'ютерних технологій.
Викладачі:Решетар Я. В.

Ключові поняття

QR-кодЗавадостійке кодуванняДекодуванняМатрицяБайтСкриптСпотворенняКоригуванняРівень завадостійкостіMATLAB

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра БІТ З В І Т до лабораторної роботи №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-коді.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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