Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Стеганография(Конахович)_FULL.doc
Скачиваний:
617
Добавлен:
09.12.2018
Размер:
11.37 Mб
Скачать

5.3.2.6. Метод квантования изображения

К методам скрытия в пространственной области можно также отнести метод квантования изображения [3, 82], основанный на межпиксельной зависимости, которую можно описать некоторой функцией . В простейшем случае можно вычислить разницу между смежными пикселями ; и (или и) и задать ее как параметр функции :, где — дискретная аппроксимация разницы сигналов .

Поскольку — целое число, а реальная разница — действительное число, то возникают ошибки квантования . Для сильно коррелированных сигналов эта ошибка близка к нулю: .

При данном методе скрытие информации производится путем корректировки разностного сигнала . Стеганоключ представляет собой таблицу, которая каждому возможному значению ставит в соответствие определенный бит, например:

-4

-3

-2

-1

0

1

2

3

4

bi

1

0

1

1

0

0

1

0

1

Для скрытия i-го бита сообщения вычисляется разница . Если при этом bi, не соответствует секретному биту, который необходимо скрыть, то значение заменяется ближайшим , для которого такое условие выполняется. При этом соответствующим образом корректируются значения интенсивностей пикселей, между которыми вычислялась разница Извлечение секретного сообщения осуществляется согласно значению, соответствующему разнице .

Рассмотрим пример программы, реализующей метод квантования изображения

Шаг1

Исходные данные — стандартные.

Шаг 2

Стеганоключ вычисляем по модулям (М.28) и (М.29). При этом модуль (М.28) возвращает все возможные разницы сигналов (от -255 до +255), а модуль (М 29) — значения бит, соответствующие этим разницам.

Значения bi в данном случае рассчитываются на основании массива красной цветовой составляющей. При этом для каждой колонки массива R рассчитывается сумма по модулю 2 составляющих ее элементов с булевым прибавлением к результату суммирования единицы при каждом третьем элементе. В конце модуля полученной вектор b расширяется на длину вектора . Таким образом, элементы массива b носят псевдослучайный характер. Фрагменты сформированного стеганоключа показаны на рис. 5.15.

л-

1

b=

1

1

-255

1

1

2

-254

2

0

3

-253

3

1

4

-252

4

0

254

-2

254

0

255

-1

255

1

256

0

256

0

257

1

257

1

258

2

258

0

508

252

508

0

509

253

509

0

510

254

510

0

511

255

511

1

Рис. 6.15. Фрагменты стеганоключа

Шаг3

Выполним развертывание массива контейнера С (массив синей цветовой составляющей) в вектор, используя модуль (М.16). Зададим стартовый индекс элемента полученного вектора, начиная с которого будет производиться встраивание бит , сообщения (например,).

Для расчета величины шага (псевдослучайного интервала) используем модуль (М.15). Пусть при этом К := 8.

Шаг 4

Алгоритм встраивания реализует модуль (М.30). Формирование вектора двоичных данных из строки символов аналогично представленному в (М.21) (при этом, однако, необходимо заменить на ).

Для каждого -го бита сообщения выполняется вычисление индекса z элемента вектора контейнера Cv. Рассчитывается разница между соседними пикселями Cvz и Cvz-1 Внутренним циклом производится поиск соответствующего значения разницы в векторе . В случае обнаружения, переменной присваивается значение индекса i, который соответствует данной разнице в .

Если значение не соответствует текущему биту скрываемого сообщения, то выполняется поиск ближайшего индекса, при котором bi равняется биту сообщения. Поиск производится вниз (L) и вверх (Н) от индекса .

Предварительное присвоение переменным и значения ±1000 обеспечивает невозможность дублирования предыдущих значений , если движение вниз или вверх от не привело к выполнению поставленного условия (последнее возможно при нахождении индекса слишком близко к нижней или верхней границе вектора b). После того как значения и найдены, выбирается то из них, которое ближе к начальному значению .

Интенсивность пикселя контейнера Svz равна увеличенной на величину интенсивности смежного пикселя Svz-1. Если данное увеличение приводит к выходу значения интенсивности цвета за пределы диапазона [0; 255], то, наоборот, интенсивности смежного пикселя Svz-1 присваивается значение интенсивности пикселя Svz, уменьшенной на величину ). После встраивания последнего бита сообщения внешний цикл прерывается.

Проводим обратное свертывание вектора Sv в матрицу, имеющую размерность первичного массива С (М.7). Получаем массив S.

Шаг 5

При извлечении сообщения предварительно формируется стеганоключ — векторы и b*. Программные модули при этом .идентичны (М.28) и (М.29). Массив контейнера S* развертывается в лектор Sv* (подобно (М. 16)).

Шаг 6

Модуль извлечения (М.31) вычисляет разницу интенсивностей смежных пикселей Sv*z и Sv*z-1 и выполняет поиск соответствующей разницы в кодовой таблице .

Значение бита , соответствующее данной разнице, присваивается текущему элементу вектора М*. В конце модуля вектор двоичных данных преобразуется к символьную строку. Полученные при вычислении визуального искажения результаты сведены в табл. 5.1 (стр. 125).