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

WtrBits = B i t . t o O lQ def convBin2PMl (In): ) J) Преобразуем бинарную последовательность в последовательность из плюс минус 1 J>> Ln = l e n ( I n ) Out = n p . in t _ ( n p . z e r o s (L n ) ) f o r I in xrange(Ln): Out[I] = 2*In [I] - 1 re turn Out # превратим исходную строку # в список WtrB i t sL i s t =[] f o r Symb in WtrBits: W t rB i t sL i s t . append( int (Symb) ) # Внедряем знак WtrPM = convBin2PMl(WtrBitsList) Dat2 = Da t .copyQ Ln = len(WtrPM) f o r I in xrange(Ln): Dat2[Pos + I] += Coef * WtrPM[I] Span = Dat2[Pos - 5 : Pos + Ln +5] Out = np . c o r r e l a t e ( n p . f l o a t 3 2 ( S p a n ) , n p . float32(WtrPM)) p i t . p lo t (Ou t ) # шифруем последовательность с помощью ЛПМ ConvMatr = createMatr(ConvPoly) ConvBits = convertWater(ConvMatr .ConvState ,WtrBi tsList ) WtrPM = WtrPM = convBin2PMl(ConvBits) Dat l = Da t .copyQ Ln = len(WtrPM) f o r I in xrange(Ln): Da t l [Po s + I] += Coef * WtrPM[I] Span = Da t l [Po s - 5 : Pos + Ln +5] Out = n p . c o r r e l a t e ( n p . f l o a t 3 2 ( S p a n ) , n p . f loat32(WtrPM))

RkJQdWJsaXNoZXIy MTExODQxMg==