
- •На тему: «представлення і обробка статичних зображень. Стеганографія»
- •1. Мета роботи
- •Короткі теоретичні відомості
- •3. Лабораторне завдання Написати програму для відкриття 24-бітного bmp файлу, яка перетворює кольорове зображення в відтінки сірого. Реалізувати стеганографічне кодування та декодування тексту.
- •4.Код програми
- •Файл Program.Cs
- •Файл Text.Cs
- •Файл TextExtracter.Cs
- •Файл TextHider.Cs
- •5.Результат виконання програми
- •6.Висновок
Міністерство освіти і науки, молоді та спорту України
Національний університет «Львівська політехніка»
Кафедра САПР
ЗВІТ
до лабораторної роботи №8
На тему: «представлення і обробка статичних зображень. Стеганографія»
з курсу:
« Методи та засоби комп’ютерних інформаційних технологій»
Виконала:
ст. гр. КН – 33
Нарушинська О.О.
Прийняв:
Мазур В. В.
Львів – 2013
1. Мета роботи
Мета роботи – вивчити формати представлення статичних зображень і методи їх обробки, а також можливості використання графічних файлів для стеганографії.
Короткі теоретичні відомості
Статичні і динамічні зображення відтворюються на екрані дисплея сукупністю елементів – пікселів. Кожен піксел характеризується його координатами та кольором. Сукупність пікселів екрана дисплея утворює растр. Діаметр пікселя (точки) на екрані –0.3-0.4 мм. Максимальна кількість елементів зображення на екрані (кількість пікселів по горизонталі помножити на кількість пікселів по вертикалі) визначає розрізнюючу здатність дисплея, яка характеризує можливість відтворення максимальної кількості різних точок. Розрізнююча здатність дисплея визначає чіткість і детальність зображення. Збільшення розмірів екрана при незмінній розрізнюючій здатності (наприклад при використанні комп’ютерного проектора) обумовлене збільшенням розмірів пікселя і не підвищує деталізації зображення. В сучасних рідкокристалічних (LCD) дисплеях та у більшості дисплеїв на електронно-променевій трубці використовується растровий принцип формування зображення. Рідкокристалічні дисплеї мають фіксовану максимальну розрізнюючу здатність (в основному 1280*1024 для дисплеїв формату 4:3), яка визначається кількістю рідкокристалічних елементів. Використання цих дисплеїв в режимах з іншою розрізнюючою здатністю вимагає використання інтерполяції і може привести до погіршення зображення. Сучасні мультичастотні дисплеї на електронно-променевій трубці забезпечують високоякісне зображення при різних значенях розрізнюючої здатності (640*480 (VGA), 800*600 (SVGA), 1024*768 (SVGA), 1280*1024 (SVGA), 1600*1200 (SVGA)).
В комп’ютерній техніці найбільш широко використовуються дві системи кольороутворення: адитивна та субстактивна. Адитивна система (RGB – Red, Green, Blue) використовується в пристроях, які випромінюють світло різного кольору, зокрема в дисплеях, а субстрактивна (CMY – Cyan, Magenta, Yellow) – в пристроях, які базуються на відбитті і поглинанні певних кольорів освітленою поверхнею з нанесеним кольоровим зображенням (кольоровий друк на білому папері). Системи кольорів вказані на рис. 1.
блакитний
Рис. 1. Куби кольорів
На практиці замість системи CMY частіше використовують систему CMYK (Cyan, Magenta, Yellow, Black), яка забезпечує краще відтворення чорного кольору. Взаємодія чорного, білого та чистого кольору представлена на рис. 2.
Чистий колір
Розбіли
Відтінки
Білий
Чорний
Сірий
Рис. 2. Відтінки, розбіли і тони чистого кольору.
Перетворення кольорового зображення у відтінки сірого (інформація про яскравість для чорно-білих зображень) здійснюється по такій формулі
Y=0.299R+0.587G+0.114B
Кількість кольорів, які відображаються на екрані дисплея залежить від кількості бітів, які виділяються для опису кольору пікселя. В стандартних графічних режимах SVGA для опису кольору пікселя виділяють 4, 8, 15, 16, 24 і 32 біти.
Опис кольору пікселя може здійснюватись за допомогою палітри і безпосередньо (безпалітрова система). В безпалітровій системі кольорів RGB кожна складова описується певною кількістю бітів, які визначають діапазон її можливих значень. Для графічного режиму truecolor для опису кожної складової використовується один байт (три байти на піксель), що забезпечує діапазон можливих значень 0-255. Таким чином, загальна кількість кольорів для цього режиму становить 256*256*256=16777216. Для режиму hicolor для опису кольору одного пікселя використовується 15 чи 16 бітів. При 15-ти бітовому представленні кожна складова RGB описується 5-ма бітами (біти 0-4 - B, біти 5-9 – G, біти 10-14 – R, біт 15 не використовується. Цей режим забезпечує опис і відтворення 32 К кольорів. При 16-ти бітовому представленні для опису синьої компоненти використовується 5 бітів (0-4), для опису зеленої – 6 бітів (5-10), для опису червоної – 5 бітів (11-15). При цьому режимі кількість кольорів становить 64 К. Безпалітрові системи забезпечують точне відтворення великої кількості кольорів, однак потребують значних обсягів оперативної пам’яті для опису кольорового зображення. Так при розрізнюючій здатності 1280*1024 для графічного режиму truecolor необхідно 3.7 MB оперативної пам’яті, а для режиму hicolor – 2.5 MB.
Палітрова система використовується при обмеженій кількості кольорів зображення. При цьому кольори самої палітри описуються масивом байтів (по три байти RGB на кожен колір), а опис зображення представлений масивом індексів палітри. При палітрі на 256 кольорів кожен піксел зображення представлений одним байтом (8 бітів), а при палітрі на 16 кольорів – тетрадою (4 біти). Відповідно необхідні обсяги пам’яті для опису зображення при розрізнюючій здатності 1028*1024 становитимуть 1.3 MB для восьмибітного представлення пікселя і 768 KB – для чотирьохбітного. Крім того, 1024 (768) байтів потрібно для опису самої палітри на 256 кольорів і 64 (48) байтів – для опису палітри на 16 кольорів.
При зберіганні графічних файлів на зовнішніх пристроях для зменшення необхідного обсягу пам’яті використовуються різноманітні методи стиснення (JPEG, RLE, LZW). Вказані методи забезпечують стиснення без втрат (RLE, LZW) чи з втратами (JPEG). Стиснення без втрат забезпечує повну відповідність відновленого зображення оригіналу,що стискався. Для підвищення швидкості комп’ютерної обробки стиснені зображення конвертуються у растровий графічний формат BMP (Microsoft Windows Bitmap).
Структура BMP файла містить чотири розділи: заголовок файлу, заголовок растру, палітра кольорів, растрові дані. В безпалітровій системі кольорів розділ “Палітра кольорів” відсутній. Опис полів кожного розділу представлений у таблиці.
Заголовок файлу |
||
Назва поля |
Ім’я поля |
Розмір |
Тип файлу (для BMP-файлу – ‘BM’- 4D42h) |
FileType |
WORD |
Розмір файлу в байтах |
FileSize |
DWORD |
Зарезервоване (завжди 0) |
Reserved1 |
WORD |
Зарезервоване (завжди 0) |
Reserved2 |
WORD |
Початок даних зображення |
BitmapOffset |
DWORD |
Загаловок растру |
||
Назва поля |
Ім’я поля |
Розмір |
Розмір заголовку в байтах |
Size |
DWORD |
Ширина зображення у пікселях |
Width |
DWORD |
Висота зображення у пікселях |
Height |
DWORD |
Кількість площин кольору (для BMP файлів завжди 1) |
Planes |
WORD |
Кількість бітів на піксель (1, 4, 8, 24) |
BitPerPixel |
WORD |
Стиснення (0 – відсутнє, 1 – RLE (8 біт), 2 – RLE (4 біти) |
Compression |
DWORD |
Розмір растру в байтах |
SizeOfBitmap |
DWORD |
Розрізнююча здатність по горизонталі (пікселів/метр) |
HorzResolution |
DWORD |
Розрізнююча здатність по вертикалі (пікселів/метр) |
VertResolution |
DWORD |
Кількість кольорів в зображенні |
ColorUsed |
DWORD |
Мінімальна кількість ”важливих” кольорів |
ColorsImportant |
DWORD |
Палітра кольорів (при BitPerPixel 8 –відсутня) |
||
Назва поля |
Ім’я поля |
Розмір |
Синя складова |
Blue |
BYTE |
Зелена складова |
Green |
BYTE |
Червона складова |
Red |
BYTE |
Заповнювач (завжди 0) |
Reserved |
BYTE |
Растрові дані |
||
Назва поля |
Ім’я поля |
Розмір |
Червона складова кольору першого пікселя (при використанні палітри – восьмибітовий індекс кольору першого пікселя) |
Red |
BYTE |
Зелена складова кольору першого пікселя (при використанні палітри – восьмибітовий індекс кольору другого пікселя) |
Green |
BYTE |
Синя складова кольору першого пікселя (при використанні палітри – восьмибітовий індекс кольору третього пікселя) |
Blue |
BYTE |
Нестиснуті растрові дані представляють собою або індекси палітри кольорів, або реальні байтові RGB-значення. Пікселі впорядковуються по стрічках розгортки. Кожна стрічка повинна закінчуватися на границі подвійного слова, тому при потребі використовуються заповнювачі (1-3 нульові байти). При додатньому значенні параметра Height стрічки розгортки записуються знизу вверх, при від’ємному – зверху вниз.
Монохромні растри містять по 1 біту на піксель (опис 8 пікселів байтом – лівий піксель у старшому біті байта). При цьому палітра складається з двох елементів. Чотирьохбітові пікселі пакуються по два в байті (лівий піксель – у старшій тетраді). Восьмибітові пікселі описуються байтом.
Найпоширенішими контейнерами для методів стеганографії на сьогодні є файли зображень та відеофайли. А програми для практичної реалізації данного методу захисту інформації можна знайти в Інтернеті.
Найбільш наглядними є програми, які дозволяють приховати деяке повідомлення всередині зображення.
Найрозповсюдженішим методом, який дозволяє приховувати повідомлення в графічних файлах, є метод НЗБ (найменшого значущого біта). Чому саме він? Тому що це один з найпростіших методів цифрової стеганографії, який дозволяє створити прихований канал з досить великою пропускною здатністю без суттєвої втрати якості контейнера.
Цей метод приховування даних із спотворенням контейнера базується на особливостях людського сприйняття. Конкретніше, ідея методу полягає ось у чому: якщо взяти картинку у форматі BMP, найкраще TrueColor, в 24-х бітному форматі та змінити молодші значущі біти кольору, то на око це не буде помітно. Чому 24 біта? Існує такий важливий фактор, як обсяг контейнера - скільки всього можна вставити в картинку, поки це не стане явним. Логічно припустити, що чим більший контейнер, тим більше можна і втиснути, а поширені на сьогодні 24-х бітні BMP - насприятливіші для цього.
До того ж 24 біта є зручним форматом зберігання інформації про зображення. При такому поданні за один канал кольору відповідає один байт, цим усі і користуються.
Здійснити перетворення можна так:
Беремо повідомлення і попередньо готуємо його: шифруємо і пакуємо. Цим досягається відразу дві мети - підвищення ККД та збільшення стійкості системи. Перед усім, для зручності можна записати сигнатуру методу, що не є таємницею, зате просто.
Беремо контейнер і впроваджуємо підготовлене повідомлення в молодші біти контейнера будь-яким зручним для нас способом. Наприклад:
розкладаємо упаковане повідомлення в бітову послідовність;
замінюємо надлишкові біти (НЗБ) контейнера бітами повідомлення.
Надійність такого втиснення прямо пропорційна відповідності характеру розподілу НЗБ в контейнері і повідомленні. А ці розподіли в переважній більшості випадків збігатися й не будуть. Хоча в деяких випадках це буде візуально помітно на картинці, побудованій з одних тільки молодших бітів контейнер