Цифровой водяной знак на основе дискретного Wavelet-преобразования
Тема защиты авторских прав в нынешнее время стала максимально востребованной, появилось множество способов не допустить нелицензионного тиражирования, Один из таких способов – цифровой водяной знак (англ. Digital Watermarking, ЦВЗ), добавление к исходной информации (цифровому изображению, видео- или звуковому файлу) некоторых скрытых маркеров, устойчивых к каким-либо атакам. В основном Digital Watermarking используют для определения факта нарушения авторских прав, но, конечно же, сфера применения цифровых водяных знаков этим не ограничивается. Например, цифровые водяные знаки могут использоваться для передачи секретной информации, проверки подлинности электронных документов и в ряде других приложений. Во многих приложениях и сайтах внедрена защита видеопродукции при помощи ЦВЗ, где происходит построение множества идентификационных меток, внедрение одной из меток в видеопоследовательность, извлечение метки из пиратской копии видеопоследовательности, поиск участников коалиции по извлеченной метке.
Давайте рассмотрим внедрение и проверку цифрового водяного знака на примере работы алгоритма дискретного wavelet-преобразования для изображения.
Дискретное wavelet-преобразование
Дискретное wavelet-преобразование раскладывает сигнал на взаимно ортогональный набор вейвлетов (математических функций, позволяющих анализировать различные частотные компоненты данных), что является основным отличием от непрерывного вейвлет-преобразования. Вейвлет может быть сконструирован из функции масштаба, которая описывает свойства его масштабируемости. Ограничение состоит в том, что функция масштаба должна быть ортогональна своим дискретным преобразованиям, что подразумевает некоторые математические ограничения на них:
где
После введения некоторых дополнительных условий (поскольку вышеупомянутые ограничения не приводят к единственному решению) мы можем получить результат этих уравнений, т.е. конечный набор коэффициентов
Схема работы алгоритма
Давайте рассмотрим схему работы на растровом изображении.
Зададим двумерный массив
Далее давайте рассмотрим
Для всех
Здесь
Далее мы «обновляем» точки массива
Обновление нужно для того, чтобы средняя энергия изображения
Выполняем наши шаги до того момента, пока наш массив
Заметим, что
Попробуем теперь внедрить наш ЦВЗ в изображение, для этого мы выбираем
Пусть для определенности это будет
Здесь
Произведем обратное wavelet-преобразование и получим новое изображение, назовем его
Теперь, давайте поговорим о том, как автор, имея только
Зная исходное изображение, можно проверить, помечено ли наше изображение, просто сравнивая разность коэффициентов и массив
Теперь рассмотрим случай, когда нам не известно изображение-оригинал
Давайте поймем, как можно применить данную функцию: как и описывалось ранее, если
Для более надежной работы алгоритма, можно ввести порог, после которого будем считать, что ЦВЗ обнаружен, если
где значение
Заключение
Стоит сказать, что приведенный алгоритм на основе дискретного wavelet-преобразования лишь один способ из многих, которыми можно осуществить внедрение цифрового водяного знака и проверить наличие такового в файле. Например, для текста можно использовать кодирование со сдвигом строки, для изображения - водяные знаки домена DСT, а для звука - кодирование с наименьшей значимостью. Преимущество приведенного выше алгоритма заключается в том, что такие водяные знаки устойчивы по отношению к сжатию JPEG (для изображений) и некоторым другим искажения, вот почему данный метод остается актуальным и по сей день.