Читайте также: |
|
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-скрипта, демонстрирующий работу алгоритма разделения секретной визуальной информации.
Результаты
Ниже приведены результаты выполнение операции кодирования и декодирования исходного «секретного» изображения. Рассматриваются различные операции совмещения полученных из исходного теневых изображений: с помощью 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 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Алгоритм визуальной криптографии | | | Составляющие общения |