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

End = LnFragm EndOrig = О EndFi l t = О f o r X in B i t s : In t e rv = In[Beg:End] F l t l n t e r v = i n sB i t (X ,C o e l ,C o e 2 , EndOr ig ,EndF i l t , In t e rv ) Beg += LnFragm End += LnFragm EndOrig = I n t e r v [ -1] EndFi l t = F l t l n t e r v [ -1 ] I n t e r v [ : ] = F l t l n t e r v [ : ] re turn LnFragm Обратим внимание, как в процедуре i nsBi t осуществляется стыковка двух фрагментов. Чтобы избежать ненужных скачков, в следующий фрагмент заносится информация о конце предыдущего фрагмента. Перейдем к процедуре извлечения ЦВЗ, реализованной в скрипте 20. Скрипт 20. Основной блок de f ge tWtrBack(Source ,F i l tered ,LnFragm ,Pos l , P o s 2 ) : JJ> Бит извлекается по смещению в полосе . Эта полоса выбирается по частоте, для которой имеется наибольшее различие в смещении. >>> N = 40 LnF i l t = 2 * N + 1 В = s g n . f i r w i n ( L n F i l t , [ 0 . 0 3 6 , 0 . 0 3 7 ] , pa s s_z e ro=Fa l s e ,nyq=0 .5) Zrs = np .zeros (N) SourceAdd = np . c o n c a t e n a t e ( [Source , Z r s ] ) F i l terAdd = np . c o n c a t e n a t e ( [ F i l t e r e d , Z r s ] ) SourceBand = s g n . I f i l t e r ( В , 1 . .SourceAdd) [N:]

RkJQdWJsaXNoZXIy MTExODQxMg==