Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Matlab-реализация алгоритма

Цифровое изображение. Цифровой звук. Цифровое видео. | Файлы изображений. | Сжатие с потерями. Основано на отбрасывании части информации (как правило наименее воспринимаемой глазом). | BITMAPFILEHEADER – эта структура содержит информацию о типе, размере и представлении данных в файле. Размер 14 байт. | BITMAPV5HEADER – Win95/NT 4.0: приложения могут использовать BITMAPV4HEADER. Win NT 3.51 и более ранние должны использовать структуру BITMAPINFOHEADER. |


Читайте также:
  1. Обоснование алгоритма Флойда.
  2. Оценка алгоритма сортировки
  3. Реализация алгоритма Дейкстры
  4. Тема: Логіко-математичний аналіз алгоритмів і правил шкільного курсу математики. Методика роботи в школі з алгоритмами і правилами
  5. Формальное описание алгоритма
  6. Формы записи алгоритма


Matlab-функция, выполняющая разделения исходного двоичного изображения на два теневых «в лоб», использующая 4 (из 6 возможных, см. рис. 6) состояния пикселя будет иметь следующий вид:

 

function [S1,S2] =getShdwImg(Img)% получение теневых изображений S1 и S2 из исходного бинарного изображения (Img)% % получаем размер исходного изображения[m,n] = size(Img);% запасаемся памятью для каждого теневого изображения:)S1= zeros(2*m,2*n);S2= zeros(2*m,2*n);% для каждого пикселя исходного изображения - действуем согласно Рис. 1% Примечание:for i=1:m-1 for j=1:n-1 r = randi(4); if(Img(i,j)==1) switch r case 1, S1(2*i,2*j)=1; S1(2*i+1,2*j)=1; S1(2*i,2*j+1)=0; S1(2*i+1,2*j+1)=0; S2(2*i,2*j)=1; S2(2*i+1,2*j)=1; S2(2*i,2*j+1)=0; S2(2*i+1,2*j+1)=0; case 2, S1(2*i,2*j)=0; S1(2*i+1,2*j)=0; S1(2*i,2*j+1)=1; S1(2*i+1,2*j+1)=1; S2(2*i,2*j)=0; S2(2*i+1,2*j)=0; S2(2*i,2*j+1)=1; S2(2*i+1,2*j+1)=1; case 3, S1(2*i,2*j)=0; S1(2*i+1,2*j)=1; S1(2*i,2*j+1)=1; S1(2*i+1,2*j+1)=0; S2(2*i,2*j)=0; S2(2*i+1,2*j)=1; S2(2*i,2*j+1)=1; S2(2*i+1,2*j+1)=0; case 4, S1(2*i,2*j)=1; S1(2*i+1,2*j)=0; S1(2*i,2*j+1)=0; S1(2*i+1,2*j+1)=1; S2(2*i,2*j)=1; S2(2*i+1,2*j)=0; S2(2*i,2*j+1)=0; S2(2*i+1,2*j+1)=1; end else switch r case 1, S1(2*i,2*j)=1; S1(2*i+1,2*j)=1; S1(2*i,2*j+1)=0; S1(2*i+1,2*j+1)=0; S2(2*i,2*j)=0; S2(2*i+1,2*j)=0; S2(2*i,2*j+1)=1; S2(2*i+1,2*j+1)=1; case 2, S1(2*i,2*j)=0; S1(2*i+1,2*j)=0; S1(2*i,2*j+1)=1; S1(2*i+1,2*j+1)=1; S2(2*i,2*j)=1; S2(2*i+1,2*j)=1; S2(2*i,2*j+1)=0; S2(2*i+1,2*j+1)=0; case 3, S1(2*i,2*j)=0; S1(2*i+1,2*j)=1; S1(2*i,2*j+1)=1; S1(2*i+1,2*j+1)=0; S2(2*i,2*j)=1; S2(2*i+1,2*j)=0; S2(2*i,2*j+1)=0; S2(2*i+1,2*j+1)=1; case 4, S1(2*i,2*j)=1; S1(2*i+1,2*j)=0; S1(2*i,2*j+1)=0; S1(2*i+1,2*j+1)=1; S2(2*i,2*j)=0; S2(2*i+1,2*j)=1; S2(2*i,2*j+1)=1; S2(2*i+1,2*j+1)=0; end end endend


Функция getShdwImg разбивает исходное изображение так, как показано на Рис. 1, с единственной разницей только в том, что в двоичных изображениях Matlab — черные пиксели изображения равну нулю, а белые, соответственно, равны единице.
Ниже приведен код Matlab-скрипта, демонстрирующий работу алгоритма разделения секретной визуальной информации.


close all% считываем исходное RGB-изображение и преобразуем его в бинарноеbiImg = imread('nordavind_logo.jpg'); biImg = rgb2gray(biImg);level = graythresh(biImg); % пороговая фильтрация по Отсу (Otsu)biImg = im2bw(biImg,level);% выводим результат на экранfigure(1)imshow(biImg);title(['Original binary image']);% получаем два теневых изображения[S1,S2] =getShdwImg(biImg);% выводим их на экранfigure(2)imshow(S1);title(['Shadow image S1']);% figure(3)imshow(S2);title(['Shadow image S2']);% выводим на экран результат их наложения друг на друга % различными способамиfigure(4)% imshow(or(S1, S2));% imshow(and(S1,S2));imshow(~xor(S1, S2)); % операция “~”(NOT) используется, чтобы получить черный текст на белом фоне, а не наоборотtitle(['Superimposed image']);

 

Результаты


Ниже приведены результаты выполнение операции кодирования и декодирования исходного «секретного» изображения. Рассматриваются различные операции совмещения полученных из исходного теневых изображений: с помощью XOR (Рис. 6), AND (Рис. 7) и OR (Рис. 8).


Рисунок 2. Исходное изображение


Рисунок 3. После преобразования изображения в ч/б


Рисунок 4. Теневое изображение 1


Рисунок 5. Теневое изображение 2


Рисунок 6. Результат для NOT(XOR(S1, S2))


Рисунок 7. Результат для AND(S1, S2)


Рисунок 8. Результат для OR(S1, S2)


Заключение


(k, n)-визуальная схема разделения секретной информации является криптостойкой до тех пор, пока k частей изображения не попадут в руки злоумышленника. Если же перехвачено менее k частей, то расшифровка исходного изображения – невозможна.
Если в процессе использования данной системы полностью соблюдается случайный подход к разбитию пикселей на блоки, то визуальная криптография предлагает абсолютную надежность и секретность.
Здесь был рассмотрен классический алгоритм визуальной криптографии. На сегодняшний день существует множество улучшенных моделей этого алгоритма, например, для кодирования цветных изображений [4, 6], или схемы, где, вместо теневых изображений в виде белого шума, используются семантически значимые изображения [5], а также схемы визуальной криптографии на основе техник стеганографии [2, 7].


 


Дата добавления: 2015-11-16; просмотров: 101 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Алгоритм визуальной криптографии| Составляющие общения

mybiblioteka.su - 2015-2024 год. (0.005 сек.)