Цифровая обработка сигналов. Водяные знаки в аудиофайлах: учебное пособие / Е.Л. Столов.

2 .5 .2 . Конструирование ЦВ З на основе фильтра Создание ЦВЗ состоит из нескольких шагов. 1. Выделяем фрагмент Frag, внутрь которого будет помещен ЦВЗ, и длину фильтра М. Длина этого фрагмента должна превышать длину ЦВЗ примерно в два-три раза. 2. Находим спектр файла, в который будет внедряться водяной знак. Обычно это делается с помощью ДПФ. 3. Выделяем участки спектра, содержащие частоты с большими мощностями. 4. С помощью функции firwin из модуля scipy.signal строим нужный симметричный фильтр. В большинстве случаев достаточно использовать фильтр высоких частот. Выбираем коэффициенты фильтра в качестве ЦВЗ. Рассмотрим пример. Скрипт 9. Спектр фрагмента, в который внедряется ЦВЗ [import пшпру as пр from s c i p y . i o . w a v f i l e import r e a d ,w r i t e from s c ip y import s i g n a l as sgn from m a t p l o t l i b import pyp lo t as p i t [Fr,Dat] = r e ad ( ’ka .wav’ ) Pos = 10000 M = 127 # Длина фильтра должна быть нечетной Frag = np . f lo a t 3 2 (D a t [P o s -M:Pos+2*M]) F_Frag = a b s ( n p . f f t . f f t ( F r a g ) ) p i t . p lo t (F_F ra g [ : (2*M)/ 2 ] , ’k ’ ) Скрипт 9 создает спектр фрагмента, в который будет внедряться ЦВЗ. Спектр представлен на рис.2.3 Как видно из рисунка, все коэффициенты, начиная с 10 0, имеют примерно

RkJQdWJsaXNoZXIy MTExODQxMg==