Встраивание путем модификации отношения между значениями коэффициентов в пределах одного блока 1 страница
Для преодоления описанных выше технических трудностей, Хсу и By предложили вместо сравнения с СЧ-коэффициентами ДКП соседних блоков использовать DC-коэффициент текущего блока. В этом случае,
(5.33)
где — масштабный коэффициент; Q(1,1) — значение квантования для DC-коэффициента.
Обратное преобразование блоков контейнера
Модифицированные матрицы СЧ-коэффициентов отображаются в общие матрицы коэффициентов ДКП (оператор put):
(5.34)
К результату проведенного объединения применяется обратное ДКП (оператор IDСТ)
Извлечение ЦВЗ из контейнера
Процесс извлечения требует наличия оригинального изображения-контейнера, изображения со встроенным ЦВЗ, а также изображения, выступающего в роли ЦВЗ.
Оба изображения (оригинальное — С, и исследуемое на наличие встроенного ЦВЗ — С*) подвергаются прямому ДКП: = FDCT(C), *=FDCT(C*).
Из полученных массивов коэффициентов ДКП проводится выделение матриц СЧ-коэффициентов, которые, в свою очередь, используются для получения шаблонов полярности:
Применяя к полученным массивам полярностей операцию сложения по модулю 2, получают двоичные данные (пока еще переставленные в пространстве и псевдослучайно смешанные):
(5.36)
где
Выполняется обратная пространственная перестановка блоков полученных данных (оператор re-permutе). Индексы соответствующих пар блоков и извлекаемых данных могут быть получены либо путем их считывания из предварительно сохраненных в файле на этапе встраивания ЦВЗ, или же непосредственно при встраивании путем аналогичных действий над изображением-оригиналом и изображением-ЦВЗ:
W*rnd = re-permute( W*sort).
Аналогично проводится обратная псевдослучайная перестановка данных в полученном массиве: W*rnd = re-permute( W*rnd)
В рассмотренном алгоритме можно выделить три особенности, которые можно использовать в качестве секретного ключа:
1. начальное число генератора ПСЧ, которое будет определять первый элемент псевдослучайной перестановки (любое целое число из диапазона );
2. выбор СЧ-коэффициентов ДКП (необходимо выбрать коэффициенты из 64-х для каждого блока, следовательно, за каждым блоком можно закрепить свой набор коэффициентов);
3. алгоритм сведения (отображения) выбранных СЧ-коэффициентов в отдельную матрицу (на рис. 5.32 показан только один из возможных способов такого отображения).
Рассмотрим пример реализации метода Хсу и By в системе MathCAD.
Шаг 1
Пусть изображение-контейнер и изображение-ЦВЗ представляют собой графические файлы C.bmp и W.bmp соответственно (рис. 5.35):
Рис. 5.35. Изображение-контейнер и внедряемый в него ЦВЗ
С:= READBMP ("C.bmp");
W:= READBMP("W.bmp").
При этом соответствующие характеристики указанных изображений составляют:
X:= rows(C), X= 128;
Y:=cols(C), Y= 128;
А:= rows(W), A = 64;
Z:= cols{W), Z = 64.
Шаг 2
Проводим нормирование массива ЦВЗ
Элементы исходного массива W при этом принимают значение 0 или 1.
Шаг 3
Размерность блоков, на которые разбивается контейнер, принимаем равной N:= 8. Количество полученных в этом случае блоков: , .
Размерность, которую должны иметь блоки ЦВЗ для получения их количества , составляет
Выполняем проверку количества получаемых блоков ЦВЗ: , блоков.
Шаг 4
Разбитие контейнера С на блоков размерностью NxN выполняем при помощи программного модуля (М.55).
Шаг 5
Псевдослучайную перестановку элементов ЦВЗ проведем в том порядке, который был предложен Хсу и By. Во-первых, проведем индексацию каждого пикселя ЦВЗ (от 1 до = 4096), для чего просто развернем массив ЦВЗ в вектор (программный модуль M.56)).
Во-вторых, полученные индексы расставим в произвольном (псевдослучайном) порядке, дня чего используем линейный регистр сдвига с обратной связью (ЛРСОС или LFSR — Linear Feedback Shift Register).
Как известно, ЛРСОС состоит из двух частей: собственно регистра сдвига и функции обратной связи (рис. 5.36) [65]. Регистр сдвига представляет собой последовательность битов (разрядов) R, количество которых d определяется длиной регистра сдвига. Обратная связь представляет собой сумму по модулю 2 определенных битов, регистра (эти биты называются отводной последовательностью).
Рис. 6.36. Обобщенный линейный регистр сдвига с обратной связью
Теоретически, d-битовый ЛРСОС может пребывать в одном из внутренних состояний, то есть может генерировать ПСП с периодом в бит. Все Т внутренних состояний регистр пройдет только при определенных отводных последовательностях. Такие ЛРСОС имеют максимальный период, а полученный при этом результат называют М-последовательностью.
На рис. 5.36 значения являются весовыми коэффициентами полинома степени d , ассоциированного с последовательностью:
Если , то соответствующий ключ замкнут. В случае — разомкнут.
Неудачное включение сумматоров в цепь обратной связи может привести к получению ПСП, период повторения которой будет меньшим максимально возможного при имеющейся разрядности регистра. Для того чтобы конкретный ЛРСОС имел максимальный период, полином должен быть примитивным по модулю 2 (то есть не раскладываться на произведение двоичных полиномов меньшей степени). При этом коэффициенты и всегда равняются 1, поскольку, в случае , полином делится на х и не является примитивным; в случае , даже если полином и примитивный, его степень меньше d. Другие коэффициенты выбранного полинома и будут определять схему формирователя ПСП.
В нашем случае, для перестановки чисел в диапазоне от 1 до необходимым и достаточным является количество разрядов регистра . При этом период повторения ПСП составит .
Для d-разрядного регистра в качестве примитивного полинома по модулю 2 выберем следующий: Этот и некоторые другие возможные виды примитивных полиномов степени d = 12 приведены в табл. 5.2 [8].
Таблица 5.2 Примеры примитивных по модулю 2 полиномов степени d = 12
x0 | х1 | х2 | x3 | x4 | x5 | х6 | х7 | х8 | х9 | х10 | х11 | x12 |
ЛРСОС, имеющий d разрядов, реализует программный модуль (М.57), в котором аргумент s определяет собой начальное состояние регистра (в десятичном представлении) — произвольное целое число в пределах от 1 до .
В начале модуля задается вектoр весовых коэффициентов примитивного полинома для элементов отводной последовательности (для наглядности данный вектор изображен в виде матрицы-строки с последующим транспонированием).
Циклом изменения iпроводится изменение состояния регистра. Каждое i-ое состояние из двоичного формата конвертируется в десятичный и сохраняется как значение соответствующего элемента вектора Rdec. Поскольку период последовательности, генерируемой данным регистром, равняется , а псевдослучайная перестановка будет применяться к вектору, количество элементов которого равняется , в конце модуля к сформированному вектору Rdec дописывается еще один элемент, значение которого учитывает верхний граничный индекс элементов вектора
Получение массива Vrnd индексов элементов вектора Wvec, расставленных в псевдослучайном порядке, позволяет в дальнейшем провести генерирование пар координат (по строкам и столбцам) каждого пикселя путем преобразования последовательности ПСЧ в двумерную последовательность. Это, в свою очередь, делает возможным после псевдослучайного выбора элемента из вектора Wvec поместить его значение в обусловленный сгенерированной парой координат элемент массива, размерность которого идентична размерности ЦВЗ.
Вышеприведенная процедура реализована в программном модуле (М.58), в котором для каждого элемента М-последовательности вычисляются индексы а и z элемента массива Wrnd. а который заносится текущий элемент вектора Wvec. Функция trunc(x) возвращает целую часть от аргумента х, отбрасывая его мантиссу; функция mod(k,m) возвращает остаток от деления к на т. Прибавлением единицы учтена возможность возвращения отмеченными функциями нулевого результата.
Результат выполнения модуля (М.58) при s := 12 приведен на рис.5.37
Шаг 6
Модуль разбития массива ЦВЗ на блоков размерностью по своему строению аналогичен модулю (М.55). Отличия заключаются в следующем:
• переменная, которой присваивается результат выполнения модуля (как, собственно, и соответствующая переменная в теле модуля), обозначается как Бw(вместо Бс);
• выделение блоков проводится из массива Wrnd (вместо С);
• вместо размерности массива Nиспользуется размерность n;
• соответственно, изменяется и предельное значение индекса строки (вместо X - значение А).
Общее количество блоков, на которое разбивался контейнер , с учетом такого же их количества в ЦВЗ, можно не изменять.
Шаг 7
С помощью программных модулей (M.59) и (М.60) формируем таблицы результатов сортировки блоков контейнера (по значениям стандартного отклонения элементов блоков) и блоков ЦВЗ (по количеству значащих элементов).
В первый столбец таблиц характеристик блоков контейнера (TC) и ЦВЗ (ТW) вносятся порядковые индексы исследуемых блоков. Во второй — результат вычисления, соответственно, стандартного отклонения и количества значащих (единичных) элементов . После формирования таблиц, последние сортируются по значениям второго столбца (функция csort(T,2)).
Фрагмент результата сортировки для выбранных контейнера и ЦВЗ приведен в табл.5.3.
Таблица 5.3 Примеры сортировки блоков контейнера и ЦВЗ
№ п/п | Индексы блоков контейнера | Значения станд. отклонения | Индексы блоков ЦВЗ | Количество значащих элементов |
66.676 | ||||
65.551 | ||||
65.236 | ||||
... | ... | ... | ... | ... |
44.565 | ||||
44.394 | ||||
44.318 | ||||
... | ... | ... | ... | ... |
33.562 | ||||
33.462 | ||||
33.287 | ||||
... | ... | ... | ... | ... |
22.564 | ||||
22.396 | ||||
21.151 | ||||
... | ... | ... | ... | ... |
Путем выделения первых столбцов из массивов ТC и ТW, сопоставляем индексы блоков контейнера с индексами блоков ЦВЗ:
Шаг 8
В соответствии с полученным массивом приведенных в соответствие друг с другом индексов, проводим перестановку блоков ЦВЗ в порядке, отвечающем данному соответствию. Реализацию данного этапа осуществляет модуль (М.61).
В качестве примера приведем результат выполнения программного модуля (М.61) для первой строки табл. 5.3:
Шаг 9
Используя программные модули (М.46,47) (при этом следует предельное количество блоков контейнера в цикле for заменить с NС на , а вместо Сb под знаком суммы следует использовать ), выполняем прямое ДКП блоков контейнера.
Из полученных массивов коэффициентов ДКП . которые имеют размерность , извлекаем только среднечастотные коэффициенты (см. рис. 5.32), параллельно сворачивая их в массив . Перед началом проведения операции извлечения формируется массив координат выделяемых СЧ-коэффициентов (М.62):
(M.62)
В данном случае, массив будет содержать 16 строк, элементы каждой из которых несут информацию об индексах строки и столбца соответствующего СЧ-коэффициента в массиве (рис.5.38).
Рис. 5.38. Таблица координат СЧ-коэффициентов ДКП
С помощью программного модуля (М.63), в соответствии с таблицей рис. 5.38, для каждого блока b выполняется формирование матрицы выбранных для модификации коэффициентов. Результат извлечения проиллюстрирован на рис. 5.39.
Рис. 5.39 Пример извлечения СЧ-коэффициентов из массива для 232-го блока контейнера
Шаг 10
Проводим вычисление массива полярностей блоков контейнера. При этом в основу программного модуля (М.64) положена реализация выражения (5.29). Матрица СЧ-коэффициентов 1-го блока сравнивается с матрицей последнего ( -го) блока. Для создания более стойкого встраивания ЦВЗ данный модуль можно модифицировать в соответствии с (5.33) путем внесения соответствующей замены.
Шаг 11
В соответствии с выражением (5.30) проводим изменение текущего массива полярности согласно значениям элементов переставленного ЦВЗ — модуль (М.65).
Шаг 12
На основании текущих матриц СЧ-коэффициентов формируем новые . причем претерпевают изменения те элементы первичной матрицы, по координатам которых выполняется неравенство вида (программный модуль (М.66)).
Модификация проводится таким образом, чтобы при выполнении программного модуля (М.64) можно было получить массив идентичный массиву , в том случае, если при вычислении параметра в качестве уменьшаемого будет выступать элемент матрицы . В случае же модификации отношения между значениями коэффициентов в пределах одного блока (то есть полярность Р предварительно определялась по формуле (5.33)), в модуле (М.66 а) выражение, вычисляемое при выполнении условия . необходимо заменить программным блоком (М.66 б).
Шаг 13
Модифицированные для каждого блока матрицы СЧ-коэффициентов ( ) отображаются в общие матрицы коэффициентов ДКП — программный модуль (М.67). При этом также используется таблица координат среднечастотных коэффициентов ДКП (см. (М.62) и рис. 5.38).
Шаг 14
После объединения, к модифицированным матрицам необходимо применить операцию обратного ДКП (модуль (М.68)) и сформировать на основе полученных блоков общий массив изображения-контейнера (модуль (М.69)).
Полученное при этом изображение с встроенным ЦВЗ при определенных обстоятельствах может существенно потерять в яркости, что вызвано несколькими причинами: во-первых, для упрощения программных модулей не была проведена оптимизация встраивания по формуле (5.31); во-вторых, соседние блоки контейнера могут иметь достаточно разные значения интенсивностей и, соответственно. СЧ-коэффициентов ДКП, что вызывает необходимость при построении алгоритма по (5.29) существенно изменять значения этих коэффициентов для удовлетворения поставленных условий. В комплексе эти две причины вызывают появление пикселей контейнера, яркость которых после проведения обратного ДКП выходит за пределы диапазона [0. 255]. Последнее устраняется путем нормирования значений элементов массива в конце модуля (M.69), которое и вызывает снижение общей яркости изображения.
Результаты встраивания ЦВЗ в контейнер путем модификации отношения между значениями коэффициентов соседних блоков и в пределах одного блока приведены, соответственно, на рис. 5.40 а и б.
Шаг 15
Рассмотрим процесс извлечения ЦВЗ из изображения-контейнера. Как было указано выше, для извлечения ЦВЗ помимо контейнера с, возможно, встроенным водяным знаком (С*), необходимо наличие оригинального (незаполненного) контейнера (С) и изображения ЦВЗ (W).