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

Interv = In[Beg:End] if X == ’1>: Zg = sgn.lfiltic(B_Pl,1., y=[EndFilt],x = EndOrig) FltHide,Zg = sgn.Ifilter(B_P1,1., Interv,zi=Zg) else: Zg = sgn.lfiltic(B_Min,l., y=[EndFilt],x = EndOrig) FltHide.Zg = sgn.Ifilter(B_Min,1., Interv,zi=Zg) EndOrig[:] = Interv[Inds] Interv [:]= FltHide[:] Beg += LnFragm End += LnFragm return LnFragm Функция внедрения бита приведена в скрипте 12. В комментариях нуждается только момент, связанный с функцией lfiltic. Модификация фрагментов контейнера состоит в применении одного из двух фильтров к оригиналам. После этого модифицированные контейнеры соединяются встык. Назначение функции lfiltic состоит в сглаживании перехода от конца одного фрагмента к началу второго. Также отметим, что изменение контейнера осуществляется «на месте». 2 .7 .2 . И звлечение Ц В З Если внедрение ЦВЗ не представляет труда, то извлечение битов представляет некоторые трудности. Хотя позиция, в которой должен проявиться скачок корреляционной функции, известна заранее, иногда этот момент обнаружить достаточно трудно, поскольку реально имеют дело с нестационарным процессом. Функция, реализующая процедуру извлечения, представлена в скрипте 13.

RkJQdWJsaXNoZXIy MTExODQxMg==