CS-107 Мини-проект 1 Стеганография - PDF безплатно изтегляне
CS-107: Мини-проект 1 Стеганография B. Goullet, B. Jobstmann, J. Sam Съдържание 1 Презентация 3 2 Структура и предоставен код 4 3 Директно кодиране 6 3.1 Преобразуване в двоично изображение. 6 3.1.1 Кодиране на пиксел. 7 3.1.2 Кодиране на цялостното изображение. 8 3.1.3 Тестове. 9 3.2 Скриване на изображението. 9 3.2.1 Инкрустация. 9 3.2.2 Разкриване. 10 3.2.3 Пример. 10 3.2.4 Тестове. 10 4 Текстово кодиране 11 4.1 Преобразуване на масив в низ от битове и обратно. 11 4.1.1 Цяло число към битова таблица. 11 4.1.2 Низ към масив от булеви числа чрез масив от цели числа. 12 4.1.3 Таблица на битовете към таблица с цели числа. 12 4.1.4 Масив от цели числа към String. 12 4.2 Прикриване и разкриване. 12 4.2.1 От битовата таблица. 13 4.2.2 От струната. 13 4.3 Тестове. 14 1

5 Спирално кодиране 15 5.1 Спирално скриване. 16 5.1.1 Преобразуване на двоичното изображение в едномерен масив. 16 5.1.2 Кодиране. 17 5.2 Разкриване на кодирано по спирала съобщение. 17 5.2.1 Преобразуване на едномерния масив в двоично изображение. 17 5.2.2 Разкриване на изображението. 17 5.3 Тестове. 18 6 Теоретично допълнение Цветове, пиксели и двоично 19 6.1 Двоично представяне на цели числа. 20 6.2 Справки. 20 2
getred (цвят); // -> 240 (0xF0) гетгрийн (цвят); // -> 15 (0x0F) getblue (цвят); // -> 85 (0x55) int grey = getgray (цвят); // -> 113 getbw (сиво, 128); // -> false // Кодираме цветове getrgb (0, 0, 255); // -> 255 (0 x0000ff) getrgb (127); // -> 8355711 (0 x7f7f7f) getrgb (вярно); // -> 16777215 (0 xffffff) // Обърнете внимание, че компонентите са ограничени в [0, 255] getrgb (-175, 0, 255); // -> 255 (0 x0000ff) getrgb (-255); // -> 0 (0x000000) 3.1.2 Кодиране на цялостното изображение Използвайки предишните функции, внедрете togray (int [] [] image), което преобразува дадено изображение в RGB формат в изображение в сиво (int [] []); tobw (int [] [] сиво, int праг), което преобразува изображение в сива скала в двоично черно-бяло изображение (ние използваме като тип на връщане булево [] [], където входовете за false представляват черно, а това в истинско бяло ). torgb (булева [] [] bw), която преобразува в другата посока двоично изображение в изображение в RGB формат torgb (int [] [] сиво) и което прави същото за изображение в сива скала. За да направите това, трябва да създадете масив с правилния размер и да използвате getgray, getbw или getrgb за всеки пиксел. // 2x2 цветно изображение int [] [] изображение = <, >; // Преобразуваме го в сиво int [] [] сиво = togray (изображение); // -> < //, // // >; // Връщаме се към RGB int [] [] back = torgb (сиво); 8
За да приложите embedbwimage (int [] [] корица, булево [] [] съобщение), ще трябва да кодирате embedinlsb (int стойност, булево m), което взема RGB пиксел (стойност) и булева m стойност и връща този пиксел с най-десния си бит, зададен на 0, ако m е false, или на 1, ако е true. Например можете да използвате двоични оператори, като &, оператора и двоичен файл (вижте допълненията, както и слайдовете, представени в клас). 3.2.2 Разкриване За да можете да декодирате скритото изображение, след това ще приложите revebwimage (int [] [] cover), което образува двоично изображение, като чете стойностите на най-малко значимия (най-десния) бит на всеки пиксел в RGB корица на изображението. Както и преди, ще внедрите допълнителен метод getlsb (int value), който при дадена стойност на RGB пиксел връща true, ако последният му бит е 1, и false, ако е 0. 3.2.3 Пример int [] [] cover = Helper четене ("cover.jpg"); int [] [] message = Helper.read ("message.jpg"); int [] [] сиво = ImageMessage. togray (съобщение); boolean [] [] bw = ImageMessage. tobw (сиво, 240); int [] [] hidden = Стеганография. embedbwimage (корица, bw); // връщаме носителя, съдържащ скритото съобщение boolean [] [] декодирано = Стеганография. showbwimage (скрито); 3.2.4 Тестове За тази част продължете както за предишната, но с файла LinearEncodingTests.java. На този етап в проекта тестовете getlsbtest, embedinlsbtest, revebbimagetest и embedbwimagetest трябва да са зелени. За да тествате тази част графично, можете да използвате програмата, предоставена в MainImages.java, която разбира се можете да увеличите, колкото желаете. 10