<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ep-patent-document PUBLIC "-//EPO//EP PATENT DOCUMENT 1.2//EN" "ep-patent-document-v1-2.dtd">
<ep-patent-document id="EP07301153A1" file="EP07301153NWA1.xml" lang="fr" country="EP" doc-number="1887565" kind="A1" date-publ="20080213" status="n" dtd-version="ep-patent-document-v1-2">
<SDOBI lang="fr"><B000><eptags><B001EP>ATBECHDEDKESFRGBGRITLILUNLSEMCPTIESILTLVFIROMKCYALTRBGCZEEHUPLSKBAHRISYUMT......</B001EP><B005EP>J</B005EP><B007EP>DIM360 Ver 2.4  (29 Nov 2007) -  1100000/0</B007EP></eptags></B000><B100><B110>1887565</B110><B120><B121>DEMANDE DE BREVET EUROPEEN</B121></B120><B130>A1</B130><B140><date>20080213</date></B140><B190>EP</B190></B100><B200><B210>07301153.8</B210><B220><date>20070627</date></B220><B250>fr</B250><B251EP>fr</B251EP><B260>fr</B260></B200><B300><B310>0652919</B310><B320><date>20060711</date></B320><B330><ctry>FR</ctry></B330></B300><B400><B405><date>20080213</date><bnum>200807</bnum></B405><B430><date>20080213</date><bnum>200807</bnum></B430></B400><B500><B510EP><classification-ipcr sequence="1"><text>G10L  19/00        20060101AFI20080104BHEP        </text></classification-ipcr></B510EP><B540><B541>de</B541><B542>Verfahren und Vorrichtung zur Erfassung eines Decoders in einem Audiosignal</B542><B541>en</B541><B542>Method and device for detecting a tattooing identifier in an audio signal</B542><B541>fr</B541><B542>Procédé et dispositif de détection d'un identificateur de tatouage dans un signal audio</B542></B540><B590><B598>3</B598></B590></B500><B700><B710><B711><snm>FRANCE TELECOM</snm><iid>01334140</iid><irf>06239-EP</irf><adr><str>6, Place d'Alleray</str><city>75015 Paris</city><ctry>FR</ctry></adr></B711></B710><B720><B721><snm>Develle, Olivier</snm><adr><str>ASTEK
1, rue traversière</str><city>21360, CUSSY-LA-COLONNE</city><ctry>FR</ctry></adr></B721><B721><snm>Le Guyader,  Alain</snm><adr><str>FRANCE TELECOM
12, rue de Crec'h Huet</str><city>22300 LANNION</city><ctry>FR</ctry></adr></B721><B721><snm>Gilloire, André</snm><adr><str>FRANCE TELECOM
7, rue Yann Péron</str><city>22300 LANNION</city><ctry>FR</ctry></adr></B721></B720></B700><B800><B840><ctry>AT</ctry><ctry>BE</ctry><ctry>BG</ctry><ctry>CH</ctry><ctry>CY</ctry><ctry>CZ</ctry><ctry>DE</ctry><ctry>DK</ctry><ctry>EE</ctry><ctry>ES</ctry><ctry>FI</ctry><ctry>FR</ctry><ctry>GB</ctry><ctry>GR</ctry><ctry>HU</ctry><ctry>IE</ctry><ctry>IS</ctry><ctry>IT</ctry><ctry>LI</ctry><ctry>LT</ctry><ctry>LU</ctry><ctry>LV</ctry><ctry>MC</ctry><ctry>MT</ctry><ctry>NL</ctry><ctry>PL</ctry><ctry>PT</ctry><ctry>RO</ctry><ctry>SE</ctry><ctry>SI</ctry><ctry>SK</ctry><ctry>TR</ctry></B840><B844EP><B845EP><ctry>AL</ctry></B845EP><B845EP><ctry>BA</ctry></B845EP><B845EP><ctry>HR</ctry></B845EP><B845EP><ctry>MK</ctry></B845EP><B845EP><ctry>YU</ctry></B845EP></B844EP></B800></SDOBI>
<abstract id="abst" lang="fr">
<p id="pa01" num="0001">L'invention concerne un procédé et un dispositif de détection d'un identificateur de tatouage dans un signal audio. Le procédé de l'invention met en oeuvre une méthode de recouvrement par bloc pour effectuer un calcul de corrélation par une méthode de transformation rapide. Les valeurs de corrélation obtenues sont comparées à un seuil pour détecter le début d'un identificateur de tatouage.
<img id="iaf01" file="imgaf001.tif" wi="97" he="122" img-content="drawing" img-format="tif"/></p>
</abstract><!-- EPO <DP n="1"> -->
<description id="desc" lang="fr">
<p id="p0001" num="0001">L'invention se rapporte à un procédé et à un dispositif de détection d'un identificateur de tatouage ou de marque dans un signal audiovisuel et notamment un signal audio.</p>
<p id="p0002" num="0002">Le tatouage permet de transmettre une information additionnelle dans des données support de manière imperceptible. Pour des données audiovisuelles cela revient à établir un canal de communication de données dissimulé, en parallèle avec l'infrastructure classique de transport de l'information.</p>
<p id="p0003" num="0003">Un des principaux avantages du tatouage est que les données auxiliaires sont dissimulées et attachées au signal et par la même sont capables de supporter des changements de format et de fréquence d'échantillonnage donnant au tatouage une interopérabilité au niveau des terminaux et des réseaux, seules les extrémités au niveau de la détection devant être compatibles avec l'insertion.</p>
<p id="p0004" num="0004">Une trame du canal de communication dissimulé dans le signal porteur est par exemple constituée d'une marque de synchronisation que l'on peut également appeler identificateur de tatouage, suivie du message inséré dans le signal, le début du message étant indiqué par l'identificateur de tatouage.</p>
<p id="p0005" num="0005">Après transmission du signal tatoué, à la lecture du media, la détection consiste d'abord à détecter l'identificateur de tatouage qui a été inséré en début de trame. Une fois cet identificateur repéré dans le contenu audio par exemple, la détection des bits du message peut commencer. Les séquences "identificateur de tatouage + message éventuel" sont insérées en continu dans le média, les débuts d'identificateur coïncidant avec les zones d'énergie suffisante propices à l'insertion. En réception la détection de chaque séquence se fait également en continu permettant ainsi de se resynchroniser en cas de coupure dans le média porteur (édition du signal, coupures par un pirate ou encore pertes de trames de la transmission).</p>
<p id="p0006" num="0006">Les identificateurs de tatouage ainsi que les messages sont formés à partir de séquences aléatoires gaussiennes issues d'un générateur de nombres aléatoires ou de<!-- EPO <DP n="2"> --> séquences Pseudo-Aléatoires (Pseudo-Noise Séquences en Anglais ou séquences PN) générées par un registre à décalage dont les cellules sont bouclées de façon à produire une séquence de sortie de longueur maximale. Toute autre séquence aléatoire issue de la théorie des machines à états finis (séquences de Gold, codes de Baker, séquences de Walsh, ...) peut convenir à condition que sa fonction de corrélation soit proche d'une distribution de Dirac. Dans la suite de la description, nous parlerons de séquences aléatoires aussi bien pour désigner des séquences aléatoires que des séquences pseudo-aléatoires.</p>
<p id="p0007" num="0007">Une procédure classique de génération d'un signal tatoué est illustrée à la figure 1. Ainsi, le module 11 permet de générer une séquence aléatoire de longueur N à partir d'une valeur d'initialisation K fixée à l'avance. On obtient ainsi une séquence aléatoire w(n).</p>
<p id="p0008" num="0008">Dans le cas où on veut transmettre un bit d'information 0 ou 1, cette séquence est modulée par l'information à transmettre en la multipliant par 1 si le bit à transmettre est 1 et par -1 si le bit à transmettre est 0. Cette étape de génération est effectué dans le module 12 et génère une séquence modulée ±w(n).<br/>
Dans le cas où on veut juste insérer un identificateur de tatouage, la séquence aléatoire n'est pas modulée.</p>
<p id="p0009" num="0009">Un modèle psycho-acoustique 13 est pris en compte par le module 14 pour générer l'identificateur de tatouage ou le message w<sub>f</sub>(n) de façon à le rendre inaudible. Une étape d'ajustage par un gain est effectuée en 15. Cet identificateur de tatouage ou ce message est ensuite additionné en 16 au signal audio s(n) pour former le signal tatoué s<sub>w</sub>(n).</p>
<p id="p0010" num="0010">Ce signal est soit stocké sur un média pour lecture ultérieure par un lecteur soit transmis sur un réseau de transmission fixe, mobile ou de diffusion.<br/>
En réception l'identificateur de tatouage doit être détecté pour agir sur le signal reçu, par exemple en bloquant le lecteur en cas de détection de contenu piraté.</p>
<p id="p0011" num="0011">Une procédure classique de détection d'identificateur de tatouage est illustré en figure 2.<!-- EPO <DP n="3"> --></p>
<p id="p0012" num="0012">Le signal audio tatoué s<sub>w</sub>(n) est d'abord blanchi par filtrage inverse par le module 21 (correspondant à l'inverse de la prise en compte du modèle psycho-acoustique). L'opération de détection de la présence de l'identificateur de tatouage et du contenu de la trame elle-même est ensuite effectuée par calcul de corrélation par le module 22 entre le signal filtré x<sub>w</sub>(n) et la séquence aléatoire w(n) générée par le module 23 de la même façon que lors de l'insertion.</p>
<p id="p0013" num="0013">Cette détection détermine soit un repère de trame k<sub>s</sub> lors de la détection du l'identificateur de tatouage, soit les bits de l'information insérée.</p>
<p id="p0014" num="0014">Ne connaissant pas l'instant de début de trame dans le signal porteur, le calcul de corrélation se fait de manière glissante. On parle alors d'intercorrélation glissante.</p>
<p id="p0015" num="0015">Cette méthode consiste à effectuer un calcul de corrélation entre les échantillons du signal tatoué et la séquence aléatoire pour chaque décalage d'un échantillon du signal tatoué, jusqu'à ce que le début de l'identificateur de tatouage soit révélé par le fait que le coefficient de corrélation <i>Cor(k)</i> dépasse un seuil <i>S.</i> Pour chaque instant d'échantillonnage k , le coefficient de corrélation est donné par: <maths id="math0001" num="(1)"><math display="block"><mtable><mtr><mtd><mi mathvariant="italic">Cor</mi><mfenced><mi>k</mi></mfenced><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>N</mi><mo>-</mo><mn>1</mn></mrow></munderover></mstyle><msub><mi>x</mi><mi>w</mi></msub><mo>⁢</mo><mfenced separators=""><mi>n</mi><mo>+</mo><mi>k</mi></mfenced><mo>⁢</mo><mi>w</mi><mfenced><mi>n</mi></mfenced></mtd><mtd><mi>k</mi><mo>=</mo><mn>0</mn><mo>,</mo><mo>…</mo><mo>,</mo><msub><mi>k</mi><mi>s</mi></msub></mtd></mtr></mtable></math><img id="ib0001" file="imgb0001.tif" wi="115" he="15" img-content="math" img-format="tif"/></maths></p>
<p id="p0016" num="0016">Une fois le début de trame détecté, un seul calcul de corrélation suffit pour détecter le message: <maths id="math0002" num="(2)"><math display="block"><mtable><mtr><mtd><msub><mi mathvariant="italic">Cor</mi><mi>m</mi></msub><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mrow><msub><mi>N</mi><mi>m</mi></msub><mo>-</mo><mn>1</mn></mrow></munderover></mstyle><msub><mi>x</mi><mi>w</mi></msub><mfenced><mi>n</mi></mfenced><mo>⁢</mo><mi>w</mi><mfenced><mi>n</mi></mfenced></mtd></mtr></mtable></math><img id="ib0002" file="imgb0002.tif" wi="81" he="15" img-content="math" img-format="tif"/></maths> sur <i>N<sub>m</sub></i> échantillons du signal porteur pour un bit de message. Le bit détecté sera 0 si la corrélation message <i>Cor<sub>m</sub></i> est négative, il sera de 1 dans le cas contraire.</p>
<p id="p0017" num="0017">Il apparaît donc que pour détecter la position de l'identificateur de tatouage, c'est-à-dire l'instant où le message a été inséré il est nécessaire d'effectuer une intercorrélation pour chaque échantillon du signal porteur jusqu'à ce que l'identificateur soit trouvé. Pour des valeurs de <i>N</i> importantes, la recherche de l'identificateur est donc longue et complexe alors que la détection du bit émis se fait rapidement.<!-- EPO <DP n="4"> --></p>
<p id="p0018" num="0018">A titre d'exemple, pour une valeur de <i>N</i> égale à 4096 et une fréquence d'échantillonnage de 44100 Hz, le nombre de multiplications à effectuer par seconde sera de 18010<sup>6</sup> multiplications par seconde, ce qui est largement supérieur à la capacité des processeurs du commerce.</p>
<p id="p0019" num="0019">Il est donc important de réduire cette complexité de calcul pour la recherche de l'identificateur de tatouage dans le signal porteur notamment pour une mise en oeuvre dans des terminaux mobiles.</p>
<p id="p0020" num="0020">Par ailleurs, certaines techniques de calcul de corrélation rapides et efficaces sont décrites dans l'état de l'art.</p>
<p id="p0021" num="0021">Le document <nplcit id="ncit0001" npl-type="s"><text>A. Alrutz, M. R. Schroëder "A fast Hadamard transform method for the évaluation of measurement using pseudo random test signals". Proceeding of the 11th conférence on acoustics, Paris, 1983</text></nplcit>, décrit une méthode qui permet de calculer efficacement les intercorrélations. Cette méthode s'applique dans le cas où on a inséré une séquence aléatoire de façon périodique.</p>
<p id="p0022" num="0022">La propriété qui est exploitée pour calculer la corrélation est l'application renouvelée et de façon cyclique de la séquence aléatoire.</p>
<p id="p0023" num="0023">Cette méthode ne s'applique donc pas au cas où on désire détecter le début d'une trame de tatouage qui représente l'identificateur de tatouage dans un système de tatouage audio.</p>
<p id="p0024" num="0024">En effet, un seul identificateur étant inséré à la fois, mais à plusieurs endroits du signal porteur, par exemple toutes les 10 à 50 secondes, et dans un endroit propice à la détection, l'application de la méthode d'Hadamard cité dans le présent document engendrerait dans le calcul du vecteur de corrélation, des termes de repliement parasites d'autant plus importants que le décalage entre le bloc d'analyse du signal tatoué et la séquence insérée est grand. Ces termes de repliement proviennent du produit du vecteur de signal tatoué par la diagonale inférieure de la matrice de la séquence aléatoire décalée circulairement. Les éléments de cette diagonale sont égaux à la séquence aléatoire repliée, pris dans un ordre miroir inverse d'où l'appellation "termes de repliement". Ces termes parasites, qui n'existent pas quand la séquence aléatoire est périodique comme utilisée dans le document<!-- EPO <DP n="5"> --> d'Alrutz et Schroeder, diminueraient la valeur du pic de corrélation dans le cas d'une séquence aléatoire non périodique affectant ainsi la fiabilité de la détection de l'identificateur.</p>
<p id="p0025" num="0025">D'autres techniques d'insertion et de détection de tatouage qui améliorent la rapidité du calcul de corrélation lors de la détection existent. Dans la demande de brevet <patcit id="pcit0001" dnum="WO2004010376A"><text>WO 2004/010376</text></patcit>, le tatouage est inséré dans le domaine de Fourier, la marque fréquentielle est ajoutée au signal après un décalage lié de façon biunivoque avec l'identificateur inséré. Le signal tatoué dans le domaine temporel est obtenu par transformée de Fourier inverse. En détection chaque trame est passée dans le domaine fréquentiel par transformée de Fourier. Plusieurs trames de coefficients de Fourier sont accumulées, le résultat de l'accumulation étant corrélé avec la marque fréquentielle. Le maximum de la corrélation donne la valeur du décalage donc le contenu du message de la trame. Le maximum de corrélation est calculé par transformée de Fourier inverse du produit de la transformée de Fourier du signal accumulé par le conjugué de la transformée de Fourier de la marque fréquentielle. Cette méthode nécessite de nombreux passages d'un domaine fréquentiel à un domaine transformé du domaine fréquentiel et inversement, l'insertion s'effectuant dans le domaine fréquentiel.</p>
<p id="p0026" num="0026">La présente invention offre une solution qui ne présente pas ces inconvénients en proposant un procédé de détection d'un identificateur de tatouage qui minimise le nombre d'opérations à effectuer et la complexité des calculs tout en permettant une décision fiable.</p>
<p id="p0027" num="0027">Le procédé selon l'invention offre la possibilité d'utiliser des algorithmes rapides de calcul de corrélation qui ne nécessitent pas d'insertion périodique de marques de synchronisation.</p>
<p id="p0028" num="0028">Le procédé selon l'invention peut être mis en oeuvre en temps réel sur des processeurs de faible capacité et dans le cas d'une réception en continu d'un signal tatoué.</p>
<p id="p0029" num="0029">A cet effet, l'invention propose un procédé de détection d'un identificateur de tatouage dans un signal audio, l'identificateur de tatouage ayant été inséré dans le<!-- EPO <DP n="6"> --> signal audio à partir d'une séquence aléatoire d'une longueur de N échantillons, N étant multiple de Ns, obtenue par au moins une valeur d'initialisation. Le procédé est tel qu'il comporte les étapes suivantes:
<ul id="ul0001" list-style="dash" compact="compact">
<li>préparation d'un bloc courant de N échantillons à partir du signal tatoué;</li>
<li>calcul de corrélation par une méthode de transformation rapide entre les échantillons du bloc courant et ceux de la séquence aléatoire obtenue à partir de la au moins une valeur d'initialisation;</li>
<li>comparaison à un seuil prédéterminé des valeurs de corrélation issues du calcul de corrélation des Ns premiers échantillons;</li>
<li>itération des étapes précédentes avec un bloc courant décalé par rapport au bloc précédent de Ns échantillons tant que le maximum des dites valeurs de corrélation n'est pas supérieure au seuil prédéterminé, le maximum des valeurs de corrélation supérieur au seuil prédéterminé indiquant le début de l'identificateur de tatouage</li>
</ul></p>
<p id="p0030" num="0030">Ainsi, cette méthode de recouvrement par bloc, conjointement à la mise en oeuvre d'une méthode de transformation rapide, diminue le nombre de calcul de corrélation et la complexité de ce calcul par rapport au calcul de corrélation par fenêtre glissante effectué échantillon par échantillon.</p>
<p id="p0031" num="0031">De plus, une telle méthode permet d'effectuer une scrutation rapide du signal tatoué ne serait ce que pour détecter l'existence d'un tatouage.</p>
<p id="p0032" num="0032">Dans un mode particulier de réalisation l'identificateur de tatouage indique la position dans le signal audio d'un message inséré.</p>
<p id="p0033" num="0033">Ainsi, la détection de l'identificateur de tatouage permet de savoir où la détection du message inséré peut être effectuée.</p>
<p id="p0034" num="0034">L'étape de préparation de bloc courant comprend dans un mode préféré de réalisation, une étape de filtrage inverse du signal tatoué et une étape de filtrage de Wiener utilisant un filtre calculé à partir d'une fonction de corrélation d'une séquence d'apprentissage de l'identificateur de tatouage.<!-- EPO <DP n="7"> --></p>
<p id="p0035" num="0035">Ainsi, la prise en compte de certaines caractéristiques de la séquence utilisée pour insérer l'identificateur de tatouage permet d'améliorer la détection de l'identificateur de tatouage par l'accentuation des pics éventuels de détection.</p>
<p id="p0036" num="0036">Selon un mode de réalisation, la au moins une valeur d'initialisation est une clé (K<sub>a</sub>) qui permet de générer la séquence aléatoire.</p>
<p id="p0037" num="0037">Dans un autre mode de réalisation, la séquence aléatoire est obtenue par deux valeurs d'initialisation, la première étant une première clé (K<sub>a</sub>) permettant de générer une séquence aléatoire intermédiaire, la seconde étant une seconde clé (K<sub>b</sub>) permettant de crypter la séquence aléatoire intermédiaire pour obtenir la séquence aléatoire.</p>
<p id="p0038" num="0038">L'utilisation d'une deuxième clé apporte donc une sécurité accrue.</p>
<p id="p0039" num="0039">Dans un premier mode de réalisation, la méthode de transformation rapide est une méthode du type d'Hadamard qui comporte les étapes suivantes:
<ul id="ul0002" list-style="dash" compact="compact">
<li>permutation des échantillons du bloc courant selon une première table de permutation;</li>
<li>application de la transformée d'Hadamard aux échantillons ainsi permutés;</li>
<li>permutation des échantillons du vecteur résultant de la transformée d'Hadamard selon une seconde table de permutation pour obtenir les valeurs de corrélations.</li>
</ul></p>
<p id="p0040" num="0040">L'utilisation de la méthode d'Hadamard dans le procédé conforme à l'invention est particulièrement bien adaptée. Le procédé ainsi réalisé permet de s'affranchir des termes de repliement.</p>
<p id="p0041" num="0041">Avantageusement, le procédé comporte une étape préalable d'initialisation dans laquelle les première et seconde tables de permutation ainsi que la séquence aléatoire sont calculées et mémorisées.</p>
<p id="p0042" num="0042">Dans un mode particulier de réalisation, le calcul de la séquence aléatoire, de la première et de la seconde table de permutation est optimisé par un nombre minimum d'opérations binaires réalisées sur les bits d'un entier représentant dans chaque cas le registre à décalage de génération de la séquence ou de la table.<!-- EPO <DP n="8"> --></p>
<p id="p0043" num="0043">La méthode de recouvrement de l'invention permet dans un second mode de réalisation d'utiliser une méthode de type de Fourier comme méthode de transformation rapide. Cette méthode comporte les étapes suivantes:
<ul id="ul0003" list-style="dash" compact="compact">
<li>application d'une transformée de Fourier au bloc courant;</li>
<li>calcul d'un produit sur les échantillons résultant de la transformée du bloc courant et ceux du complexe conjuguée de la séquence aléatoire ayant subi une transformée de Fourier;</li>
<li>application d'une transformée inverse de Fourier pour obtenir les valeurs de corrélation.</li>
</ul></p>
<p id="p0044" num="0044">Avantageusement, le procédé comporte une étape d'initialisation dans laquelle la transformée de Fourier de la séquence aléatoire et son complexe conjugué sont calculés et mémorisés.</p>
<p id="p0045" num="0045">Pour améliorer la détection, le procédé comporte en outre une étape de correction des valeurs de corrélation par élimination de termes parasites.</p>
<p id="p0046" num="0046">Dans une variante de réalisation utilisant la méthode de type transformée de Fourier, le procédé comporte les étapes suivantes:
<ul id="ul0004" list-style="dash" compact="compact">
<li>segmentation en sous-séquences du bloc courant;</li>
<li>segmentation en sous-séquences de la séquence aléatoire, la deuxième moitié de la sous-séquence aléatoire étant mise à zéro;</li>
<li>application d'une transformée de Fourier aux sous-séquences du bloc courant et aux sous-séquences de la séquence aléatoire;</li>
<li>calcul de corrélations partielles par le produit sur les échantillons résultant de la transformée des sous-séquences du bloc courant et ceux du complexe conjugué des sous-séquences de la séquence aléatoire;</li>
<li>sommation des corrélations partielles calculées;</li>
<li>application d'une transformée de Fourier inverse à la somme issue de l'étape de sommation pour obtenir les valeurs de corrélation.</li>
</ul></p>
<p id="p0047" num="0047">Cette variante permet de s'affranchir de l'utilisation d'une transformée de Fourier de grande taille lorsque l'identificateur de tatouage a une taille importante.</p>
<p id="p0048" num="0048">Dans une seconde variante, le procédé comporte les étapes suivantes:<!-- EPO <DP n="9"> -->
<ul id="ul0005" list-style="dash" compact="compact">
<li>segmentation en sous-séquences du bloc courant;</li>
<li>segmentation en sous-séquences de la séquence aléatoire, la première moitié de la sous-séquence aléatoire étant mise à zéro;</li>
<li>application d'une transformée de Fourier aux sous-séquences du bloc courant et aux sous-séquences de la séquence aléatoire;</li>
<li>calcul de corrélations partielles par le produit sur le complexe conjugué des échantillons résultant de la transformée des sous-séquences du bloc courant et ceux des échantillons résultant de la transformée des sous-séquences de la séquence aléatoire;</li>
<li>sommation des corrélations partielles calculées;</li>
<li>application d'une transformée de Fourier inverse à la somme issue de l'étape de sommation pour obtenir les valeurs de corrélation.</li>
</ul></p>
<p id="p0049" num="0049">L'invention vise également un dispositif de détection d'un identificateur de tatouage dans un signal audio, l'identificateur de tatouage ayant été inséré dans le signal audio à partir d'une séquence aléatoire d'une longueur de N échantillons, N étant multiple de Ns, obtenue par au moins une valeur d'initialisation. Le dispositif est tel qu'il comporte:
<ul id="ul0006" list-style="dash" compact="compact">
<li>des moyens de préparation d'un bloc courant de N échantillons à partir du signal tatoué;</li>
<li>des moyens de calcul de corrélation par une méthode de transformation rapide entre les échantillons du bloc courant et ceux de la séquence aléatoire obtenue à partir de la au moins une valeur d'initialisation;</li>
<li>des moyens de comparaison à un seuil prédéterminé des valeurs de corrélation issues du calcul de corrélation des Ns premiers échantillons;</li>
<li>des moyens d'obtention d'un nouveau bloc courant par décalage de Ns échantillons par rapport au bloc précédent mis en oeuvre tant qu'une des dites valeurs de corrélation n'est pas supérieure au seuil prédéterminé.</li>
</ul></p>
<p id="p0050" num="0050">Le dispositif ainsi décrit est apte à mettre en oeuvre le procédé selon l'invention.<!-- EPO <DP n="10"> --></p>
<p id="p0051" num="0051">L'invention vise enfin un programme d'ordinateur comprenant des instructions de code pour la mise en oeuvre des étapes du procédé selon l'invention, lorsque ledit programme est exécuté par un processeur.</p>
<p id="p0052" num="0052">Le dispositif et le programme d'ordinateur présentent les mêmes avantages que le procédé qu'ils mettent en oeuvre.</p>
<p id="p0053" num="0053">D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante, donnée uniquement à titre d'exemple non limitatif, et faite en référence aux dessins annexés, sur lesquels:
<ul id="ul0007" list-style="dash" compact="compact">
<li>la figure 1 représente un schéma bloc d'une méthode d'insertion de l'état de l'art;</li>
<li>la figure 2 représente un schéma bloc d'une méthode de détection de l'état de l'art;</li>
<li>la figure 3 illustre sous forme d'organigramme, les principales étapes d'un procédé de détection d'identificateur de tatouage conforme à l'invention;</li>
<li>les figures 4a et 4b illustrent la méthode par recouvrement selon l'invention;</li>
<li>la figure 5 représente les principaux modules d'un dispositif d'insertion d'identificateur de tatouage;</li>
<li>la figure 6 représente les principaux modules d'un dispositif de détection d'identificateur de tatouage selon l'invention;</li>
<li>la figure 7 illustre sous forme d'organigramme, une méthode de cryptage qui peut être utilisée par l'invention;</li>
<li>la figure 8 illustre de façon détaillée, sous forme d'organigramme, l'étape de calcul de corrélation dans un premier mode de réalisation de l'invention;</li>
<li>la figure 9 illustre de façon détaillée, sous forme d'organigramme, l'étape de calcul de corrélation dans un second mode de réalisation de l'invention;</li>
<li>la figure 10 illustre une variante de réalisation du second mode de réalisation selon l'invention; et</li>
<li>la figure 11 illustre un dispositif mettant en oeuvre le procédé selon l'invention.</li>
</ul><!-- EPO <DP n="11"> --></p>
<p id="p0054" num="0054">La <b>figure 3</b> illustre les principales étapes d'un procédé de détection d'identificateur de tatouage conforme à l'invention.</p>
<p id="p0055" num="0055">L'étape E31 est une étape d'initialisation qui peut permettre d'effectuer des calculs au préalable et de les mémoriser comme par exemple la génération de la séquence aléatoire.</p>
<p id="p0056" num="0056">L'étape E32 consiste à préparer un premier bloc courant du signal tatoué filtré comportant un nombre N d'échantillons.</p>
<p id="p0057" num="0057">Avant d'obtenir le bloc courant, une lecture d'un bloc de Ns échantillons du signal tatoué, N étant multiple de Ns, est effectuée. Ce bloc de Ns échantillons <i>s<sub>w</sub></i>(<i>n</i>), n=0,.., N<sub>s</sub>-1 est celui qui est disponible en lecture sur le disque de stockage ou reçu directement par flux continu.</p>
<p id="p0058" num="0058">Ce bloc est blanchi par un filtrage inverse suivi d'un filtrage adaptatif pour donner un vecteur de signal <maths id="math0003" num=""><math display="inline"><msubsup><mi>x</mi><mi>w</mi><mi mathvariant="italic">sub</mi></msubsup><mfenced><mi>n</mi></mfenced><mo>,</mo><mi>n</mi><mo>=</mo><mn>0</mn><mo>,</mo><mo>…</mo><mo>,</mo><msub><mi>N</mi><mi>s</mi></msub><mo>-</mo><mn>1.</mn></math><img id="ib0003" file="imgb0003.tif" wi="41" he="8" img-content="math" img-format="tif" inline="yes"/></maths> Cette étape de filtrage correspond à l'étape inverse du filtrage par le modèle psycho-acoustique effectué lors de l'insertion.</p>
<p id="p0059" num="0059">Ce vecteur de signal est mis à la suite des vecteurs précédemment reçus pour constituer le bloc courant de N échantillons <i>x<sub>w</sub></i>(<i>n</i>),<i>n</i>=,0,...,<i>N-</i>1.</p>
<p id="p0060" num="0060">L'étape E32 est suivie de l'étape E33 dans laquelle un calcul de corrélation par une méthode de transformation rapide est effectué sur les échantillons du bloc courant et les échantillons de la séquence aléatoire générée à partir de la (des) même(s) valeur(s) d'initialisation utilisée(s) lors de l'insertion. Cette génération de séquence aléatoire peut s'effectuer juste avant le calcul de la corrélation ou bien à l'étape d'initialisation. Elle est alors dans ce dernier cas mémorisée à l'étape d'initialisation et lue lors de l'étape de calcul.</p>
<p id="p0061" num="0061">A l'étape E34, un test est effectué pour savoir si le maximum des valeurs de corrélation issues du calcul de corrélation de l'étape E33 des Ns premiers échantillons est supérieur à un seuil S.</p>
<p id="p0062" num="0062">Dans le cas où le maximum des valeurs de corrélation est supérieur au seuil S, alors l'identificateur de tatouage est détecté. Cette valeur du maximum de corrélation supérieure au seuil S indique alors le début de l'identificateur de tatouage.<!-- EPO <DP n="12"> --></p>
<p id="p0063" num="0063">Le dispositif de détection peut alors à partir de cet identificateur de tatouage déterminer la position dans le signal audio d'un message qui aurait été inséré. Ce message est placé juste après le dernier échantillon de l'identificateur de tatouage représenté par la séquence aléatoire de longueur N.</p>
<p id="p0064" num="0064">La détection du message inséré s'effectue de façon simple comme mentionné en référence à la figure 2, par un seul calcul de corrélation. Une fois le message détecté, le détecteur repart dans le mode de recherche de la synchronisation ou de l'identificateur de tatouage afin de repérer le message suivant. Dans le cas où seuls des identificateurs de tatouage ont été insérés à des endroits définis du signal, la scrutation du signal tatoué s'opère comme dans le cas précédent en continu. Quand un identificateur est détecté, un drapeau se met à 1 et le détecteur repart en mode scrutation.</p>
<p id="p0065" num="0065">Dans le cas où à l'étape E34, aucune des valeurs de corrélation des Ns premiers échantillons ne dépassent le seuil S, alors un nouveau bloc courant est pris en compte par décalage de Ns échantillons en E35.</p>
<p id="p0066" num="0066">Les <b>figures 4a et 4b</b> illustrent de façon schématique le procédé de l'invention.</p>
<p id="p0067" num="0067">Le signal tatoué représenté en 40 est reçu en continu. L'identificateur de tatouage issu d'une séquence aléatoire de longueur N est constituée de R blocs de Ns échantillons, soit de N=R*Ns échantillons. Cet identificateur de tatouage est représenté en grisé sous la référence 41 sur les figures 4a et 4b. Une analyse par bloc de N échantillons est effectuée. Ce bloc courant x<sub>w</sub>(n) pour n allant de 0 à N-1 est référencé sur la figure en 42. Un calcul de corrélation est effectué entre ce bloc courant et la séquence aléatoire w(n) générée comme lors de l'insertion. On compare ensuite les valeurs de corrélation obtenue pour les Ns premiers échantillons comme représenté en 43 sur les figures 4a et 4b. Si le maximum des valeurs de corrélation ne dépasse le seuil S alors on effectue un décalage du bloc courant à analyser d'un nombre Ns d'échantillons comme illustré sur les figures 4a et 4b.</p>
<p id="p0068" num="0068">Quand un nouveau bloc du signal tatoué de Ns échantillons est disponible par lecture sur disque de stockage (comme par exemple CD, DVD, mémoire<!-- EPO <DP n="13"> --> amovible) ou reçu en flux continu, il subit une étape de filtrage inverse et de filtrage de Wiener pour donner un vecteur de signal <maths id="math0004" num=""><math display="inline"><msubsup><mover><mi>x</mi><mo>‾</mo></mover><mi>w</mi><mi mathvariant="italic">sub</mi></msubsup><mfenced><mi>n</mi></mfenced><mo>,</mo><mi>n</mi><mo>=</mo><mn>0</mn><mo>,</mo><mo>…</mo><mo>,</mo><msub><mi>N</mi><mi>s</mi></msub><mo>-</mo><mn>1.</mn></math><img id="ib0004" file="imgb0004.tif" wi="41" he="8" img-content="math" img-format="tif" inline="yes"/></maths> Il est inséré à la place des Ns dernières composantes de droite comme représenté sur les figures 4a et 4b.</p>
<p id="p0069" num="0069">Pour passer au nouveau bloc courant, le bloc précédent est décalé vers la gauche de Ns échantillons et le bloc <maths id="math0005" num=""><math display="inline"><msubsup><mover><mi>x</mi><mo>‾</mo></mover><mi>w</mi><mi mathvariant="italic">sub</mi></msubsup><mfenced><mi>n</mi></mfenced><mo>,</mo><mi>n</mi><mo>=</mo><mn>0</mn><mo>,</mo><mo>…</mo><mo>,</mo><msub><mi>N</mi><mi>s</mi></msub><mo>-</mo><mn>1.</mn></math><img id="ib0005" file="imgb0005.tif" wi="40" he="8" img-content="math" img-format="tif" inline="yes"/></maths> de signal filtré est placé dans sa partie droite. C'est ce qui est indiqué sur la figure 4b où le bloc analysé en 42 devient le bloc courant. On constate sur la figure 4b que l'identificateur inséré représenté en grisé en 41 s'est décalé de N<sub>s</sub> échantillons vers la gauche par rapport au bloc précédent représenté en 42 sur la figure 4a (et qui était le bloc courant de l'étape précédente).</p>
<p id="p0070" num="0070">Sur cette figure 4b, on constate que le calcul de corrélation donne une valeur supérieure au seuil sur les Ns premiers échantillons. Ceci indique donc la position k<sub>s</sub> du début de l'identificateur de tatouage. On peut alors en déduire la fin de l'identificateur de tatouage connaissant sa longueur N pour éventuellement détecter un message qui aurait été inséré après l'identificateur.</p>
<p id="p0071" num="0071">Avec cette méthode d'analyse par recouvrement, un exemple de calcul de la corrélation est donné par l'expression suivante: <maths id="math0006" num="(3)"><math display="block"><mtable><mtr><mtd><mi mathvariant="italic">Cor</mi><mfenced><mi>k</mi></mfenced><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>N</mi><mo>-</mo><mn>1</mn></mrow></munderover></mstyle><mi>w</mi><mo>⁢</mo><mfenced separators=""><mi>n</mi><mo>+</mo><mi>k</mi></mfenced><mo>⁢</mo><msub><mi>x</mi><mi>w</mi></msub><mfenced><mi>n</mi></mfenced></mtd><mtd><mi mathvariant="normal">k</mi><mo mathvariant="normal">=</mo><mn mathvariant="normal">0</mn><mo mathvariant="normal">,</mo><mo mathvariant="normal">…</mo><mo mathvariant="normal">,</mo><mi mathvariant="normal">N</mi><mo mathvariant="normal">-</mo><mn mathvariant="normal">1</mn></mtd></mtr></mtable></math><img id="ib0006" file="imgb0006.tif" wi="118" he="15" img-content="math" img-format="tif"/></maths></p>
<p id="p0072" num="0072">L'équation précédente peut alors s'écrire sous la forme matricielle suivante: <maths id="math0007" num="(4)"><math display="block"><mfenced open="[" close="]"><mtable><mtr><mtd><mi mathvariant="italic">Cor</mi><mfenced><mn>0</mn></mfenced></mtd></mtr><mtr><mtd><mi mathvariant="italic">Cor</mi><mfenced><mn>1</mn></mfenced></mtd></mtr><mtr><mtd><mi mathvariant="italic">Cor</mi><mfenced><mn>2</mn></mfenced></mtd></mtr><mtr><mtd><mi mathvariant="italic">Cor</mi><mfenced><mn>3</mn></mfenced></mtd></mtr><mtr><mtd><mn>.</mn></mtd></mtr><mtr><mtd><mi mathvariant="italic">Cor</mi><mo>⁢</mo><mfenced separators=""><mi>n</mi><mo>-</mo><mn>2</mn></mfenced></mtd></mtr><mtr><mtd><mi mathvariant="italic">Cor</mi><mo>⁢</mo><mfenced separators=""><mi>n</mi><mo>-</mo><mn>1</mn></mfenced></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open="[" close="]"><mtable><mtr><mtd><mi>w</mi><mfenced><mn>0</mn></mfenced></mtd><mtd><mi>w</mi><mfenced><mn>1</mn></mfenced></mtd><mtd><mn>.</mn></mtd><mtd><mi>w</mi><mo>⁢</mo><mfenced separators=""><mi>N</mi><mo>-</mo><mn>2</mn></mfenced></mtd><mtd><mi>w</mi><mo>⁢</mo><mfenced separators=""><mi>N</mi><mo>-</mo><mn>1</mn></mfenced></mtd></mtr><mtr><mtd><mi>w</mi><mfenced><mn>1</mn></mfenced></mtd><mtd><mi>w</mi><mfenced><mn>2</mn></mfenced></mtd><mtd><mspace width="1em"/></mtd><mtd><mi>w</mi><mo>⁢</mo><mfenced separators=""><mi>N</mi><mo>-</mo><mn>1</mn></mfenced></mtd><mtd><mi>w</mi><mfenced><mn>0</mn></mfenced></mtd></mtr><mtr><mtd><mi>w</mi><mfenced><mn>2</mn></mfenced></mtd><mtd><mi>w</mi><mfenced><mn>3</mn></mfenced></mtd><mtd><mn>.</mn></mtd><mtd><mi>w</mi><mfenced><mn>0</mn></mfenced></mtd><mtd><mi>w</mi><mfenced><mn>1</mn></mfenced></mtd></mtr><mtr><mtd><mi>w</mi><mfenced><mn>3</mn></mfenced></mtd><mtd><mi>w</mi><mfenced><mn>2</mn></mfenced></mtd><mtd><mspace width="1em"/></mtd><mtd><mi>w</mi><mfenced><mn>1</mn></mfenced></mtd><mtd><mi>w</mi><mfenced><mn>2</mn></mfenced></mtd></mtr><mtr><mtd><mn>.</mn></mtd><mtd><mn>.</mn></mtd><mtd><mn>.</mn></mtd><mtd><mn>.</mn></mtd><mtd><mn>.</mn></mtd></mtr><mtr><mtd><mi>w</mi><mo>⁢</mo><mfenced separators=""><mi>N</mi><mo>-</mo><mn>2</mn></mfenced></mtd><mtd><mi>w</mi><mo>⁢</mo><mfenced separators=""><mi>N</mi><mo>-</mo><mn>1</mn></mfenced></mtd><mtd><mn>.</mn></mtd><mtd><mi>w</mi><mo>⁢</mo><mfenced separators=""><mi>N</mi><mo>-</mo><mn>4</mn></mfenced></mtd><mtd><mi>w</mi><mo>⁢</mo><mfenced separators=""><mi>N</mi><mo>-</mo><mn>3</mn></mfenced></mtd></mtr><mtr><mtd><mi>w</mi><mo>⁢</mo><mfenced separators=""><mi>N</mi><mo>-</mo><mn>1</mn></mfenced></mtd><mtd><mi>w</mi><mfenced><mn>0</mn></mfenced></mtd><mtd><mn>.</mn></mtd><mtd><mi>w</mi><mfenced><mn>2</mn></mfenced></mtd><mtd><mi>w</mi><mo>⁢</mo><mfenced separators=""><mi>N</mi><mo>-</mo><mn>2</mn></mfenced></mtd></mtr></mtable></mfenced><mo>⁢</mo><mfenced open="[" close="]"><mtable><mtr><mtd><msub><mi>x</mi><mi>w</mi></msub><mfenced><mn>0</mn></mfenced></mtd></mtr><mtr><mtd><msub><mi>x</mi><mi>w</mi></msub><mfenced><mn>1</mn></mfenced></mtd></mtr><mtr><mtd><msub><mi>x</mi><mi>w</mi></msub><mfenced><mn>2</mn></mfenced></mtd></mtr><mtr><mtd><msub><mi>x</mi><mi>w</mi></msub><mfenced><mn>3</mn></mfenced></mtd></mtr><mtr><mtd><mn>.</mn></mtd></mtr><mtr><mtd><msub><mi>x</mi><mi>w</mi></msub><mo>⁢</mo><mfenced separators=""><mi>N</mi><mo>-</mo><mn>2</mn></mfenced></mtd></mtr><mtr><mtd><msub><mi>x</mi><mi>w</mi></msub><mo>⁢</mo><mfenced separators=""><mi>N</mi><mo>-</mo><mn>1</mn></mfenced></mtd></mtr></mtable></mfenced></math><img id="ib0007" file="imgb0007.tif" wi="152" he="57" img-content="math" img-format="tif"/></maths><!-- EPO <DP n="14"> --></p>
<p id="p0073" num="0073">Soit en notation matricielle: <maths id="math0008" num="(5)"><math display="block"><mover><mi>C</mi><mo>‾</mo></mover><mo>⁢</mo><mi mathvariant="italic">or</mi><mo>=</mo><msub><mover><mi>w</mi><mo>‾</mo></mover><mi>c</mi></msub><mo>⁢</mo><msub><mover><mi>x</mi><mo>‾</mo></mover><mi>w</mi></msub></math><img id="ib0008" file="imgb0008.tif" wi="41" he="10" img-content="math" img-format="tif"/></maths> La matrice <i><o ostyle="single">w</o><sub>c</sub></i> est une matrice circulante construite à partir de sa première ligne <i>w<sup>T</sup>,</i> T étant l'opérateur de transposition.</p>
<p id="p0074" num="0074">Du fait que l'identificateur de tatouage n'est pas inséré périodiquement, la moitié inférieure de la matrice <i><o ostyle="single">w</o><sub>c</sub></i> va donner lieu à des termes de repliement parasites dans le produit matriciel. Pour éviter cela, le procédé selon l'invention applique un recouvrement de <i>N<sub>s</sub></i> = <i>N l R</i> échantillons et calcule le maximum du coefficient de corrélation sur les <i>N<sub>s</sub></i> premières valeurs du vecteur de corrélation <i><o ostyle="single">C</o>or</i> comme décrit précédemment en référence aux figures 3, 4a et 4b.</p>
<p id="p0075" num="0075">Si la séquence était insérée périodiquement, à n'importe quel endroit où on se placerait dans un bloc de signal tatoué, on aurait une séquence aléatoire entière de N points (en fait une des lignes de la matrice w<sub>c</sub>). Le décalage optimal serait donné par la ligne de la matrice qui donne le maximum du produit scalaire w<sub>c</sub> x<sub>w,</sub> égal à N dans le cas idéal. Dans notre cas, seule une séquence de N échantillons est insérée à la fois. Par exemple, si on suppose que la séquence commence à l'échantillon n=-1 dans le signal tatoué, le maximum de corrélation sera trouvé pour la deuxième ligne de la matrice w<sub>c</sub>. Il y aura un terme parasite donné par le w(0) en fin de ligne. Pour n = -2 le max est donné par la troisième ligne. Il y a deux termes parasites w(1) et w(0) (séquence inversée) et ainsi de suite. L'utilisation du recouvrement permet de limiter l'influence des termes parasites en ne prenant que les Ns premiers termes de la corrélation.</p>
<p id="p0076" num="0076">Dans un exemple où R=8192/1424 =8, à la place d'avoir un maximum de corrélation de N on aura un maximum de N*(8192-1)/8192= N*0.9998, si on a un décalage de 1 et de N*(8192-1024)/8192= N*0.875 dans le cas le plus défavorable d'un décalage de N<sub>s</sub>=1024.<!-- EPO <DP n="15"> --></p>
<p id="p0077" num="0077">Pour effectuer le produit scalaire de façon performante, la séquence de la première ligne de la matrice <i><o ostyle="single">w</o><sub>c</sub></i> peut être prise égale à une séquence PN de longueur maximale auquel cas on aura: <maths id="math0009" num="(6)"><math display="block"><mi>N</mi><mo>=</mo><msup><mn>2</mn><mi mathvariant="italic">Ms</mi></msup><mo>-</mo><mn>1</mn></math><img id="ib0009" file="imgb0009.tif" wi="51" he="10" img-content="math" img-format="tif"/></maths></p>
<p id="p0078" num="0078">Les valeurs usuelles de <i>Ms</i> sont de 12 et de 13 ce qui donne des séquences de synchronisation de taille 4095 et de 8191.</p>
<p id="p0079" num="0079">En référence à la <b>figure 5</b>, nous allons à présent décrire un dispositif d'insertion d'un identificateur de tatouage. Ce dispositif comporte un module d'obtention d'une séquence aléatoire w(n) à partir d'au moins une valeur d'initialisation.</p>
<p id="p0080" num="0080">Ainsi, la séquence aléatoire peut être obtenue à partir d'une seule valeur d'initialisation, par exemple, une première clé K<sub>a</sub>. Cette première clé K<sub>a</sub> va permettre dans un premier mode de réalisation de générer directement la séquence aléatoire w(n) utilisée pour générer l'identificateur de tatouage. Dans ce cas, le module de cryptage 53 n'est pas présent.</p>
<p id="p0081" num="0081">Dans un deuxième mode de réalisation, le module de cryptage 53 est présent. L'obtention de la séquence aléatoire w(n) utilisée pour générer l'identificateur de tatouage s'effectue à partir de deux valeurs d'initialisations. La première est par exemple une première clé K<sub>a</sub> qui va permettre de générer une séquence aléatoire intermédiaire w<sub>s</sub>(n), la deuxième est une deuxième clé K<sub>b</sub> qui va permettre de crypter cette séquence aléatoire intermédiaire pour obtenir la séquence aléatoire w(n).</p>
<p id="p0082" num="0082">La séquence aléatoire w(n) obtenue par le module 51 va servir comme dans le dispositif d'insertion de la figure 1 à générer l'identificateur de tatouage par le module 54. Un modèle psycho-acoustique 55 est également pris en compte ainsi qu'un gain 56 pour être additionné en 57 au signal audio s(n) et former le signal tatoué s<sub>w</sub>(n).</p>
<p id="p0083" num="0083">La <b>figure 6</b> représente un dispositif de détection d'un identificateur de tatouage conforme à l'invention. Ce dispositif de détection tout comme le dispositif<!-- EPO <DP n="16"> --> d'insertion comporte un module d'obtention de la séquence aléatoire qui a été utilisée pour générer l'identificateur de tatouage.</p>
<p id="p0084" num="0084">De la même façon que pour le dispositif d'insertion, ce module d'obtention de séquence aléatoire 61 peut dans un premier mode de réalisation ne comporter qu'un module de génération de la séquence aléatoire w(n) à partir de la première clé K<sub>a</sub> ou comporter à la fois le module 62 de génération d'une séquence aléatoire intermédiaire w<sub>s</sub>(n) à partir de la première clé K<sub>a</sub> et un module 63 de cryptage de cette séquence intermédiaire à partir de la deuxième clé K<sub>b</sub> pour obtenir la séquence aléatoire w(n).</p>
<p id="p0085" num="0085">Ainsi, le dispositif de détection ne pourra détecter l'identificateur de tatouage que s'il connaît la ou les deux clés utilisées pour l'obtention de la séquence aléatoire.</p>
<p id="p0086" num="0086">Un exemple d'application possible dans le mode de réalisation avec une seule clé est par exemple d'associer à chaque contenu audio, un numéro d'utilisateur ou d'opérateur comme identificateur de tatouage. La clef sera déduite de ce numéro par l'intermédiaire d'une table de correspondance. Ainsi, dans le contexte de vente en ligne sécurisée de contenu audio, l'identificateur de tatouage permet de déceler les transferts ou échanges abusifs de contenu et de tracer l'origine du problème. En effet, en présence d'un contenu piraté trouvé sur un site Web, l'entité détentrice des clefs utilisateurs peut tester la détection de l'identificateur de tatouage pour chacune des clés. Celle qui permettra de détecter l'identificateur de tatouage sera donc celle qui appartient à l'utilisateur qui est à l'origine de la diffusion abusive. La détection étant très rapide, la recherche peut être effectuée rapidement pour un grand nombre de clés.</p>
<p id="p0087" num="0087">Dans le cas où l'identificateur de tatouage n'est pas utilisé seul mais est suivi d'un message, la clef de l'identificateur permet d'affirmer que le signal est tatoué lorsque la présence de l'identificateur est détectée. Dans ce cas la possibilité de détection du message peut être conditionnée par la connaissance de la même clef que celle de l'identificateur. Cependant, la clef identificateur et la clef message peuvent être différentes.<!-- EPO <DP n="17"> --></p>
<p id="p0088" num="0088">Le mode de réalisation avec deux clés, ouvre un champ d'application encore plus large et apporte une sécurité supplémentaire.</p>
<p id="p0089" num="0089">La clé <i>K<sub>b</sub></i> peut représenter un numéro de commande relative à un utilisateur ou un revendeur et la clef <i>K<sub>a</sub></i> peut être propre au propriétaire de l'oeuvre ou à une société opérant pour plusieurs opérateurs. Dans ce cas la fuite de contenus piratés peut être localisée de la façon suivante: étant donné un contenu piraté, le tiers de confiance détenteur de la clef K<sub>a</sub> va rechercher, pour toutes les clefs K<sub>b</sub>, celle qui donne une réponse positive en détection et qui sera donc à l'origine de la fuite.</p>
<p id="p0090" num="0090">Dans une application de contrôle d'accès dans un lecteur, la clé K<sub>a</sub> représente un numéro d'utilisateur et la clé K<sub>b</sub>, le numéro de l'oeuvre. Il est alors possible de tester si le numéro d'oeuvre de la licence de droit d'accès correspond à celui qui a effectivement été inséré par tatouage. Si le résultat du test est négatif, alors le contenu est piraté et le lecteur est bloqué.</p>
<p id="p0091" num="0091">On peut remarquer également que l'une des clés peut être publique, par exemple <i>K<sub>b</sub></i> tout en gardant <i>K<sub>a</sub></i> secrète. Dans ce cas, si la clef K<sub>b</sub> représente un numéro de contenu, elle permet de donner l'accès à ce contenu. L'association des séquences audio aux clefs <i>K<sub>b</sub></i> peut être connue de tous, par exemple par l'intermédiaire d'une base de données disponible sur internet.</p>
<p id="p0092" num="0092">Le dispositif de détection comprend également un module de filtrage référencé en 64 pour blanchir et égaliser le signal tatoué lors de la réception et ainsi former un vecteur de signal x<sub>w</sub><sup>sub</sup>(n).</p>
<p id="p0093" num="0093">Le signa <i><o ostyle="single">s</o><sub>w</sub></i> est d'abord filtré par un filtre inverse <i>A</i>(<i>z</i>) ne comportant des coefficients qu'au numérateur. Ce filtre est calculé à partir des coefficients de corrélation du masque psychoacoustique du signal par l'algorithme de Levinson-Durbin. Ensuite, à partir du signal <i><o ostyle="single">s</o><sub>wz</sub></i> ainsi filtré, on va calculer un filtre de Wiener F<sub>w</sub>(z) qui va essayer de modéliser <i><o ostyle="single">w</o></i> par filtrage linéaire de <i><o ostyle="single">s</o><sub>wz</sub></i>. En fait la minimisation entre la marque <i><o ostyle="single">w</o></i> et son estimée à partir du signal <i><o ostyle="single">s</o><sub>wz</sub></i> conduit à la résolution des équations suivantes: <maths id="math0010" num=""><math display="block"><msub><mi>R</mi><mi mathvariant="italic">wx</mi></msub><mo>⁢</mo><msub><mi>F</mi><mi>w</mi></msub><mo>=</mo><msub><mi>R</mi><mi mathvariant="italic">dx</mi></msub></math><img id="ib0010" file="imgb0010.tif" wi="33" he="12" img-content="math" img-format="tif"/></maths><!-- EPO <DP n="18"> --></p>
<p id="p0094" num="0094">Où <i>R<sub>wx</sub></i> est une matrice de Toëplitz formée à partir de la fonction d'autocorrélation du signal <i><o ostyle="single">s</o><sub>wz</sub></i> et <i>R<sub>dx</sub></i> un vecteur de corrélation calculé à partir d'une séquence d'apprentissage. Comme séquence d'apprentissage on peut prendre à titre d'exemple la séquence w à différents échantillons de départ ou offset. La fonction de corrélation est ensuite calculée pour des décalages allant de 0 à <i>M<sub>k</sub></i>,<i>M<sub>k</sub></i> étant le nombre de coefficients du filtre. Le signal filtré résultant <maths id="math0011" num=""><math display="inline"><msubsup><mi>x</mi><mi>w</mi><mi mathvariant="italic">sub</mi></msubsup><mfenced><mi>n</mi></mfenced></math><img id="ib0011" file="imgb0011.tif" wi="14" he="8" img-content="math" img-format="tif" inline="yes"/></maths> sera donné par: <maths id="math0012" num=""><math display="block"><msubsup><mi>x</mi><mi>w</mi><mi mathvariant="italic">sub</mi></msubsup><mfenced><mi>n</mi></mfenced><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>j</mi><mo>=</mo><mo>-</mo><msub><mi>M</mi><mi>k</mi></msub></mrow><msub><mi>M</mi><mi>k</mi></msub></munderover></mstyle><msub><mi>F</mi><mi>w</mi></msub><mfenced><mi>j</mi></mfenced><mo>⁢</mo><msub><mi>s</mi><mi mathvariant="italic">wz</mi></msub><mo>⁢</mo><mfenced separators=""><mi>n</mi><mo>-</mo><mi>j</mi></mfenced></math><img id="ib0012" file="imgb0012.tif" wi="72" he="18" img-content="math" img-format="tif"/></maths></p>
<p id="p0095" num="0095">L'utilisation d'un filtre de Wiener calculé à partir d'une séquence d'apprentissage permet d'améliorer la détection de l'identificateur de tatouage par rapport à une méthode n'utilisant qu'un filtrage inverse.</p>
<p id="p0096" num="0096">En effet, la séquence d'apprentissage permet de prendre en compte certaines caractéristiques de la séquence w et ainsi d'accentuer les pics éventuels de détection.</p>
<p id="p0097" num="0097">Le module de détection par corrélation 65 comprend des moyens de préparation d'un bloc courant de N échantillons du signal tatoué filtré, des moyens de calcul de corrélation entre les échantillons du bloc courant et la séquence aléatoire w(n) et des moyens de comparaison des valeurs de corrélation obtenues à un seuil S.</p>
<p id="p0098" num="0098">Ces moyens permettent la mise en oeuvre du procédé décrit en figure 3 conformément à l'invention.</p>
<p id="p0099" num="0099">Le cryptage effectué à la fois dans le module 53 et le module 63 sur une séquence aléatoire w<sub>s</sub>(n) peut être réalisé par permutation aléatoire des échantillons de la séquence w<sub>s</sub>(n) ou par une méthode de cryptage comme celle décrit par exemple dans le document <nplcit id="ncit0002" npl-type="b"><text>B. Schneier "Applied cryptography, protocols and sources in C". John Wiley &amp; sons, inc., 1996 p397 et 398</text></nplcit>.</p>
<p id="p0100" num="0100">Un exemple de cryptage par permutation est illustré par l'algorithme représenté en <b>figure 7</b>.</p>
<p id="p0101" num="0101">Le coeur de l'algorithme consiste à calculer une matrice de permutation au moyen d'une clef de 16 octets soit 128 bits.</p>
<p id="p0102" num="0102">Un tableau TabS est d'abord initialisé à l'étape E71 aux valeurs de 0 à N-1. Une table TabK de taille 256 octets est initialisée à l'étape E72 par répétition, autant<!-- EPO <DP n="19"> --> de fois que nécessaire, du contenu de la table de clé Key contenant les 16 octets de la clé. L'entier CurPos est initialisé à 0.</p>
<p id="p0103" num="0103">Aux étapes E73 à E75, pour chaque indice i de 0 à N-1, un indice CurPos est généré aléatoirement par addition de CurPos, de TabS d'indice i et de TabK d'indice i modulo 256, la table TabK étant de taille 256, le tout étant pris modulo N. Ensuite, aux étapes E77 à E79, la table de permutation qui va servir à brouiller ou crypter la séquence aléatoire est obtenue en permutant les deux valeurs qu'elle contient à l'indice curpos et à l'indice i en s'aidant de la variable intermédiaire TmpVal.</p>
<p id="p0104" num="0104">On se retrouve donc avec une table de permutation qui contient pour <i>i</i> = 0, ..., <i>N</i> -1, le rang de l'échantillon qui doit être permuté. Pour brouiller la séquence aléatoire, il suffit maintenant de lire la table de permutation TabS(i) pour i = 0, N - 1 et de permuter le contenu de w<sub>s</sub> d'indice i avec le contenu de w<sub>s</sub> d'indice TabS(i). La séquence cryptée, calculée une fois pour toute peut être stockée en mémoire.</p>
<p id="p0105" num="0105">Une méthode de génération d'une séquence PN est par exemple une méthode telle que décrite dans le document <nplcit id="ncit0003" npl-type="b"><text>B. Schneier. "Applied cryptography, protocols and sources in C". John Wiley &amp; sons, inc., 1996, pages 372 à 375</text></nplcit>. Les points de bouclage du registre sont donnés par le polynôme générateur de la séquence.</p>
<p id="p0106" num="0106">A titre d'exemple, pour le cas <i>Ms</i> =12, un des polynômes générateur primitif est donné par poly(x) = 1 + x + x^4 + x^6 + x^12 soit poly=ca0 en hexadécimal ou encore 1100 1010 0000 en binaire. Les points de bouclage correspondent alors aux bits égaux à 1 dans la décomposition binaire de poly.</p>
<p id="p0107" num="0107">Une façon de générer une séquence PN de façon optimale avec un minimum d'opérations binaires est maintenant décrite. Les coefficients du polynôme générateur de puissance élevée sont en correspondance avec les bits de poids faible du registre à décalage, le bit de sortie étant en poids fort.</p>
<p id="p0108" num="0108">Le code descriptif de cette méthode est donné ci-dessous:
<pre listing-type="program-listing">   int state;
   N = 1 &lt;&lt; Ms) - 1
   int poly = 0xca0;
   state = 1;<!-- EPO <DP n="20"> -->
   w[0] = -2 * (state &gt;&gt; (Ms - 1) &amp; 1) + 1;
   for(i = 1; i &lt; N; i++)
    {
    state = ((state &lt;&lt; 1) &amp; N) | (xor(poly &amp; state)&amp;1);
    w[i] = -2 * (state &gt;&gt; (Ms - 1) &amp; 1) + 1;
   }</pre></p>
<p id="p0109" num="0109">L'entier state contient l'état courant du registre à décalage, chaque cellule du registre étant représentée par un emplacement binaire de l'entier state. Il est initialisé à 1. Pour le calcul de l'état state à l'instant suivant, le contenu state est décalé vers la gauche de la position d'un bit, on effectue ensuite un masque en faisant une opération binaire "et" du résultat avec N l'entier contenant <i>M<sub>s</sub></i> bits de poids faible à 1. Il ne reste plus qu'à insérer en position de bit de poids faible, par addition au moyen d'une opération binaire "ou", l'opération de "ou exclusif' (xor) des bits du produit bit à bit de l'état du registre avec le polynôme générateur (poly &amp; state).</p>
<p id="p0110" num="0110">La fonction xor(n) calcule un ou exclusif des bits de l'entier n en argument.</p>
<p id="p0111" num="0111">La méthode décrite précédemment permet d'obtenir la séquence à partir d'une implantation du registre à décalage par une seule ligne de code ne nécessitant que peu d'opérations binaires: une opération de "décalage", trois opérations "et", une opération "ou" et une opération "ou exclusif" et ce quel que soit le polynôme générateur. En effet, ces opérations sont effectuées sur les bits d'un entier représentant dans chaque cas le registre à décalage de génération de la séquence.</p>
<p id="p0112" num="0112">Dans l'état de l'art, par exemple la référence de Schneier citée précédemment page 375, l'implantation du registre à décalage version Fobinacci demande plus d'opérations binaires: sept opérations de "décalage", deux opérations "et", une opération "ou" et cinq opérations "ou exclusif'.</p>
<p id="p0113" num="0113">Cette séquence PN ainsi générée est utilisable par exemple dans le premier mode de réalisation décrit en référence à la figure 8.</p>
<p id="p0114" num="0114">La figure 8 illustre de façon détaillée, sous forme d'organigramme, l'étape de calcul de corrélation E33 de la figure 3 dans le cas d'un premier mode de réalisation de l'invention. Ce premier mode de réalisation utilise la méthode de transformée rapide d'Hadamard comme méthode de transformation rapide.<!-- EPO <DP n="21"> --></p>
<p id="p0115" num="0115">Ainsi, à l'issue de l'étape E32, un bloc courant <i>x<sub>w</sub></i>(<i>n</i>) de N échantillons a été préparé.</p>
<p id="p0116" num="0116">L'opération suivante E81 consiste à permuter le vecteur <i><o ostyle="single">x</o><sub>w</sub></i>(<i>n</i>), c'est-à-dire à le ré indicer en fonction d'une première permutation Pe. A l'issue de cette étape de permutation, on obtient un vecteur <i>xe</i>(<i>i</i>), <i>i</i> = 0,..., <i>N</i> -1.</p>
<p id="p0117" num="0117">Un exemple de code implémentant cette fonction est le suivant:
<pre listing-type="program-listing">   xe[0] = 0;
   for (i = 0; i &lt; N; i++)
     xe[TabPe[i]] = xw[i];
    }</pre></p>
<p id="p0118" num="0118">La transformée d'Hadamard est ensuite appliquée à l'étape E82 au vecteur <i>xe(i), i</i> = 0,..., <i>N</i>-1<i>.</i> On peut retrouver une explication de la méthode d'Hadamard dans le document <nplcit id="ncit0004" npl-type="s"><text>A. Alrutz, M. R. Schroëder "A fast Hadamard transform method for the evaluation of measurement using pseudo random test signals", Proceeding of the 11th conference on acoustics, Paris, 1983</text></nplcit>.</p>
<p id="p0119" num="0119">Un exemple de mode opératoire de la transformée d'Hadamard est présenté ci-dessous:<!-- EPO <DP n="22"> -->
<pre listing-type="program-listing"> void FastHadamard(double *x, long N)
     {
     long i, il, j, k, k1, k2;
     double temp;
     Kp = (1&lt;&lt;N)-1;
     k1 = Kp;
     for (k = 0; k &lt; N; k++)
        {
       k2 = k1 &gt;&gt; 1;
       for (j = 0; j &lt; k2; j++)
           {
           for (i = j; i &lt; Kp; i = i + k1)
               {
               il = i + k2;
               temp = x[i] + x [i1] ;
                xe[i1] = xe[i] - xe[i1];
               xe[i] = temp;
               }
           }
       kl = k1 &gt;&gt; 1;
       }
 }</pre></p>
<p id="p0120" num="0120">L'étape E82 est suivie de l'étape E83 dans laquelle une seconde permutation Ps est appliquée au vecteur résultant de la transformée d'Hadamard, afin d'obtenir les valeurs de corrélation correspondant à l'ordre des instants d'échantillonnage de départ.</p>
<p id="p0121" num="0121">Un exemple de code implémentant cette fonction est le suivant:
<pre listing-type="program-listing">    for (i = 0; i &lt; N-1; i++)
     {
      cor[i] = xe[TabPs[i]];
     }
    cor[N-1] = 0;</pre><!-- EPO <DP n="23"> --></p>
<p id="p0122" num="0122">A l'issue de l'étape E83, on obtient des valeurs de corrélation Cor(k) qui peuvent être utilisées directement à l'étape E34 décrite en référence à la figure 3.</p>
<p id="p0123" num="0123">Dans un mode de réalisation amélioré, une étape E84 de correction est mise en oeuvre.</p>
<p id="p0124" num="0124">En effet, en examinant l'équation (4), on constate que:
<ul id="ul0008" list-style="dash" compact="compact">
<li>des termes parasites à l'origine du repliement apparaissent à la fin de la matrice carrée. Il s'agit de <i>w</i>(0) sur la deuxième ligne, de <i>w</i>(0) et <i>w</i>(1) sur la troisième ligne, de <i>w</i>(0) <i>w</i>(1) et <i>w</i>(2) sur la quatrième ligne. La contribution <i>C</i><sup>-</sup>(<i>k</i>) de ces termes parasites est à retrancher de <i>Cor</i>(<i>k</i>).</li>
<li>des termes utiles manquent. En effet la séquence de la deuxième ligne commence à <i>w</i>(1), il manque donc la contribution de <i>w</i>(0). Celle de la troisième ligne commence à <i>w</i>(2) , il manque donc la contribution de <i>w</i>(0) et de <i>w</i>(1). La référence de temps étant prise à n=0, ces valeurs sont à pondérer avec le signal tatoué antérieur à la trame courante <i>x<sub>w</sub></i>(-1), <i>x<sub>w</sub></i>(-2), <i>x<sub>w</sub></i>(-3), ... et la contribution <i>C<sup>+</sup></i>(<i>k</i>) de ces termes manquants est à ajouter à <i>Cor</i>(<i>k</i>)<i>.</i></li>
</ul></p>
<p id="p0125" num="0125">La contribution <i>C<sup>-</sup></i>(<i>k</i>) est égale à: <maths id="math0013" num="(7)"><math display="block"><msup><mi>C</mi><mo>-</mo></msup><mfenced><mi>k</mi></mfenced><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>j</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></munderover></mstyle><mi>w</mi><mfenced><mi>j</mi></mfenced><mo>⁢</mo><msub><mi>x</mi><mi>w</mi></msub><mo>⁢</mo><mfenced separators=""><mi>N</mi><mo>-</mo><mi>k</mi><mo>+</mo><mi>j</mi></mfenced></math><img id="ib0013" file="imgb0013.tif" wi="68" he="17" img-content="math" img-format="tif"/></maths></p>
<p id="p0126" num="0126">Celle de <i>C<sup>+</sup></i>(<i>k</i>) est égale à: <maths id="math0014" num="(8)"><math display="block"><msup><mi>C</mi><mo>+</mo></msup><mfenced><mi>k</mi></mfenced><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>j</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></munderover></mstyle><mi>w</mi><mfenced><mi>j</mi></mfenced><mo>⁢</mo><msub><mi>x</mi><mi>w</mi></msub><mo>⁢</mo><mfenced separators=""><mo>-</mo><mi>k</mi><mo>+</mo><mi>j</mi></mfenced></math><img id="ib0014" file="imgb0014.tif" wi="70" he="17" img-content="math" img-format="tif"/></maths></p>
<p id="p0127" num="0127">La valeur de la corrélation corrigée sera donnée en fonction de l'intercorrélation non corrigée <i>Cor<sup>nc</sup>(k)</i> par: <maths id="math0015" num="(9)"><math display="block"><mtable><mtr><mtd><mi mathvariant="italic">Cor</mi><mfenced><mi>k</mi></mfenced><mo>=</mo><msup><mi mathvariant="italic">Cor</mi><mi>nc</mi></msup><mfenced><mi>k</mi></mfenced><mo>+</mo><msup><mi>C</mi><mo>+</mo></msup><mfenced><mi>k</mi></mfenced><mo>-</mo><msup><mi>C</mi><mo>-</mo></msup><mfenced><mi>k</mi></mfenced></mtd><mtd><mi>k</mi><mo>=</mo><mn>0</mn><mo>,</mo><mo>…</mo><mo>,</mo><msub><mi>N</mi><mi>s</mi></msub><mo>-</mo><mn>1</mn></mtd></mtr></mtable></math><img id="ib0015" file="imgb0015.tif" wi="110" he="12" img-content="math" img-format="tif"/></maths></p>
<p id="p0128" num="0128">Comme nous sommes en situation de recouvrement seuls les <i>N<sub>s</sub></i> premiers coefficients d'intercorrélation sont pris en compte et sont donc à corriger.<!-- EPO <DP n="24"> --></p>
<p id="p0129" num="0129">La correction introduite par l'équation (9) est donc appliquée à l'étape E84. A l'issue de cette étape, les valeurs de corrélation corrigées Cor(k) sont comparées à un seuil à l'étape E34 comme décrit en référence à la figure 3.</p>
<p id="p0130" num="0130">Les permutations Pe et Ps sont définies par des tables respectives <i>TabPe</i> et <i>TabPs</i> qui sont calculées à l'étape d'initialisation E31 de la figure 3.</p>
<p id="p0131" num="0131">La table de permutation <i>TabPe</i> à affecter aux valeurs de <i><o ostyle="single">x</o><sub>w</sub></i> du vecteur de signal d'entrée est calculée par exemple par le code ci-dessous en fonction du polynôme générateur nommé "poly", de la fonction "xor" et de <i>Ms</i> le degré du polynôme générateur. Cette table de permutation est ensuite stockée en mémoire.
<pre listing-type="program-listing"> N = (1 &lt;&lt; Ms) - 1;
 state = 1;
 
 TabPe[0] state;
 
 for(i = 1; i &lt; N; i++)
   {
   state = ((state &lt;&lt; 1) &amp; N) | (xor(poly &amp; state) &amp;1);
   TabPe[i] = state;
 }</pre></p>
<p id="p0132" num="0132">L'état du registre state va prendre toutes les valeurs comprises entre 1 et N-1 mais dans un ordre qui sera caractérisé par la table de permutation. L'état state est d'abord initialisé à 1. Pour calculer l'état state à l'instant suivant, les bits de state à l'instant courant sont décalés vers la gauche d'une position et masqués par l'entier ayant <i>M<sub>s</sub></i> bits de poids faible à 1. On ajoute au résultat de cette opération, en position de bit de poids faible, le résultat du ou exclusif du produit du polynôme par l'état (poly &amp; state) masqué par l'entier 1. Ici de nouveau la séquence de permutation est calculée en faisant appel au nombre minimum d'opérations binaires comme décrit précédemment pour la génération de la séquence PN.</p>
<p id="p0133" num="0133"><i>TabPs,</i> la table de la permutation Ps à affecter sur les valeurs de <i>x<o ostyle="single">e</o></i> en sortie de la transformée d'Hadamard est calculée par le code représenté ci-dessous en fonction du polynôme générateur "poly" et de <i>Ms</i> le degré du polynôme générateur. Cette table de permutation est ensuite stockée en mémoire.
<pre listing-type="program-listing"> N = (1 &lt;&lt; Ms) - 1;
 int state = 1 &lt;&lt; (Ms - 1);// Initialisation du registre à décalage
 
 TabPs[0] = state;
 
 for(i = 1; i &lt; N; i++)<!-- EPO <DP n="25"> -->
   {
   state = (state &gt;&gt; 1) ^(poly * (state &amp; 1));
   TabPs[i] =state;
 }</pre></p>
<p id="p0134" num="0134">La variable d'état du registre state est d'abord initialisée à 2<sup>Ms</sup>-1. Ensuite, pour calculer l'état state à l'instant suivant, les bits de state à l'instant courant sont d'abord décalés d'une position vers la droite. L'état à l'instant suivant est le résultat de l'opération "ou exclusif' bit à bit du résultat de l'opération précédente avec le produit du polynôme par l'état (poly &amp; state) masqué par l'entier 1. Ici de nouveau la séquence de permutation est calculée en faisant appel au nombre minimum d'opérations binaires.</p>
<p id="p0135" num="0135">En référence à la <b>figure 9</b>, nous allons à présent décrire un second mode de réalisation pour l'étape de calcul de corrélation E33. Dans ce mode de réalisation, la méthode de transformation rapide est une méthode de transformation de Fourier.</p>
<p id="p0136" num="0136">Ainsi, à l'issue de l'étape E32, un bloc courant <i><o ostyle="single">x</o><sub>w</sub></i>(<i>n</i>) de N échantillons a été préparé.</p>
<p id="p0137" num="0137">L'opération suivante E91 consiste à calculer la transformée de Fourier du vecteur <i><o ostyle="single">x</o><sub>w</sub></i>(<i>n</i>) pour obtenir la transformée <i><o ostyle="single">X</o><sub>w</sub></i>.</p>
<p id="p0138" num="0138">Dans ce mode de réalisation, le calcul de la corrélation s'effectue selon l'équation (10) suivante: <maths id="math0016" num="(10)"><math display="block"><mtable><mtr><mtd><mi mathvariant="italic">Cor</mi><mfenced><mi>k</mi></mfenced><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>N</mi><mo>-</mo><mn>1</mn></mrow></munderover></mstyle><mi>w</mi><mfenced><mi>n</mi></mfenced><mo>⁢</mo><msub><mi>x</mi><mi>w</mi></msub><mo>⁢</mo><mfenced separators=""><mi>n</mi><mo>+</mo><mi>k</mi></mfenced></mtd></mtr></mtable></math><img id="ib0016" file="imgb0016.tif" wi="72" he="15" img-content="math" img-format="tif"/></maths> La transformée de Fourier de <i>Cor(k)</i> est donnée par: <maths id="math0017" num="(11)"><math display="block"><mi mathvariant="italic">FFT</mi><mfenced separators=""><mover><mi>C</mi><mo>‾</mo></mover><mo>⁢</mo><mi mathvariant="italic">or</mi></mfenced><mo>=</mo><msup><mover><mi>W</mi><mo>‾</mo></mover><mo>*</mo></msup><mo>⁢</mo><msub><mover><mi>X</mi><mo>‾</mo></mover><mi>w</mi></msub></math><img id="ib0017" file="imgb0017.tif" wi="60" he="10" img-content="math" img-format="tif"/></maths><br/>
où <i><o ostyle="single">W</o></i>* et <i><o ostyle="single">X</o><sub>w</sub></i> sont respectivement les transformées de Fourier de <i><o ostyle="single">w</o></i> et de <i><o ostyle="single">x</o><sub>w</sub></i>. En conséquence: <maths id="math0018" num="(12)"><math display="block"><mover><mi>C</mi><mo>‾</mo></mover><mo>⁢</mo><mi mathvariant="italic">or</mi><mo>=</mo><msup><mi mathvariant="italic">FFT</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mfenced separators=""><mover><mi>W</mi><mo>‾</mo></mover><mo>*</mo><msub><mover><mi>X</mi><mo>‾</mo></mover><mi>w</mi></msub></mfenced></math><img id="ib0018" file="imgb0018.tif" wi="62" he="10" img-content="math" img-format="tif"/></maths></p>
<p id="p0139" num="0139">La transformée de la séquence aléatoire <i><o ostyle="single">w</o></i>, qu'elle soit issue d'une séquence générée avec une seule clé ou une séquence générée par une première clé et cryptée<!-- EPO <DP n="26"> --> par une seconde est soit effectuée lors de l'étape E91, soit effectuée à l'étape d'initialisation puis stockée comme pour l'obtention de la séquence aléatoire.</p>
<p id="p0140" num="0140">Dans le cas où la séquence aléatoire est cryptée, cette séquence n'est pas générée selon le procédé de génération de séquence PN décrit précédemment mais selon une génération de séquence aléatoire basée par exemple sur une génération de nombres aléatoires.</p>
<p id="p0141" num="0141">Lors de l'étape d'initialisation E31, le complexe conjuguée <i><o ostyle="single">W</o>*</i> de la transformée de Fourier <i><o ostyle="single">W</o></i> est également calculé et stocké en mémoire.</p>
<p id="p0142" num="0142">A l'étape E92, le produit de <i><o ostyle="single">W</o></i>* <i><o ostyle="single">X</o><sub>w</sub></i> dans le domaine de Fourier est effectué. On obtient ainsi <i><o ostyle="single">Y</o></i>(<i>k</i>) <i>= <o ostyle="single">X</o><sub>w</sub></i>(<i>k</i>)<i><o ostyle="single">W*</o></i>(<i>k</i>) pour k allant de 0 à N-1. Puis, à l'étape E93, on applique une transformée de Fourier inverse de ce produit pour en déduire l'intercorrélation comme décrit par l'équation (12).</p>
<p id="p0143" num="0143">On obtient ainsi les valeurs de corrélation Cor(k) que l'on compare à un seuil pour les Ns premiers échantillons comme décrit à l'étape E34 en référence à la figure 3.</p>
<p id="p0144" num="0144">Comme dans le mode de réalisation utilisant la transformation d'Hadamard, des termes parasites apparaissent, ces termes pouvant être éliminés en appliquant la correction décrite par les équations 7, 8 et 9 précédentes.</p>
<p id="p0145" num="0145">Cette façon de procéder, nécessite une FFT de grande taille lorsque l'identificateur de tatouage a une taille importante, par exemple <i>N</i> = 4096 ou N = 8192 , cas usuels pour les signaux audionumériques.</p>
<p id="p0146" num="0146">Pour éviter cela, une première variante de réalisation de ce second mode de réalisation est maintenant décrite en référence à la figure 10.</p>
<p id="p0147" num="0147">Cette solution consiste à calculer la corrélation pour des blocs en recouvrement, en segmentant le calcul de la FFT en plusieurs FFT de tailles plus petites, de nouveau en recouvrement. Par exemple pour une taille de 8192, on pourra effectuer R = 8 FFT de taille 1024 et sommer les résultats des intercorrélations partielles.<!-- EPO <DP n="27"> --></p>
<p id="p0148" num="0148">La technique proposée consiste à subdiviser la séquence <i>x<sub>w</sub></i>(<i>n</i>) en sous-séquences <i>x<sub>wi</sub></i> (<i>n</i>) qui se recouvrent comme suit: <maths id="math0019" num="(14)"><math display="block"><msub><mi>x</mi><mi mathvariant="italic">wi</mi></msub><mfenced><mi>n</mi></mfenced><mo>=</mo><msub><mi>x</mi><mi>w</mi></msub><mo>⁢</mo><mfenced separators=""><mi>n</mi><mo>+</mo><msub><mi>N</mi><mi>s</mi></msub><mo>⁢</mo><mi>i</mi></mfenced><mspace width="1em"/><mi>n</mi><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>⋯</mo><mo>,</mo><mn>2</mn><mo>⁢</mo><msub><mi>N</mi><mi>s</mi></msub><mo>,</mo><mi>i</mi><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>⋯</mo><mo>,</mo><mi>R</mi><mo>-</mo><mn>1</mn></math><img id="ib0019" file="imgb0019.tif" wi="120" he="12" img-content="math" img-format="tif"/></maths> et la séquence <i>w</i>(<i>n</i>) en sous-séquences <i>w<sub>i</sub></i> (<i>n</i>) telles que : <maths id="math0020" num="(15)"><math display="block"><mtable><mtr><mtd><msub><mi>w</mi><mi>i</mi></msub><mfenced><mi>n</mi></mfenced><mo>=</mo><mo>{</mo><mtable><mtr><mtd><mi>w</mi><mo>⁢</mo><mfenced separators=""><mi>n</mi><mo>+</mo><msub><mi>N</mi><mi>s</mi></msub><mo>⁢</mo><mi>i</mi></mfenced></mtd><mtd><mi>n</mi><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>⋯</mo><mo>,</mo><msub><mi>N</mi><mi>s</mi></msub><mo>-</mo><mn>1</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>n</mi><mo>=</mo><msub><mi>N</mi><mi>s</mi></msub><mo>,</mo><mo>⋯</mo><mo>,</mo><mn>2</mn><mo>⁢</mo><msub><mi>N</mi><mi>s</mi></msub><mo>-</mo><mn>1</mn></mtd></mtr></mtable></mtd><mtd><mi>i</mi><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>⋯</mo><mo>,</mo><mi>R</mi><mo>-</mo><mn>1</mn></mtd></mtr></mtable></math><img id="ib0020" file="imgb0020.tif" wi="132" he="18" img-content="math" img-format="tif"/></maths></p>
<p id="p0149" num="0149">On peut remarquer que la séquence <i>x<sub>wi</sub>(n) i</i> = 0,..., <i>R</i> - 1 comprend en fait N+N<sub>s</sub> termes, la dernière sous-séquence étant égale à <i>x</i><sub><i>w R</i>-1</sub>(<i>n</i>) = <i>x<sub>w</sub></i>(<i>n</i>+<i>N<sub>s</sub></i>(<i>R</i>-1)) <i>n</i> = 0,1,···,2<i>N<sub>s</sub></i>-1</p>
<p id="p0150" num="0150">Pour chaque paire de sous-séquence <i>x<sub>wi</sub></i>(<i>n</i>) et <i>w<sub>i</sub></i>(<i>n</i>) de longueur 2<i>N<sub>s</sub>,</i> la séquence <i>Cor<sub>i</sub></i>(<i>m</i>) représentant la corrélation périodique de <i>x<sub>wi</sub></i>(<i>n</i>) et <i>w<sub>i</sub></i>(<i>n</i>) est calculée. Ce qui s'écrit avec les séquences originales <i>x<sub>w</sub></i>(n) et <i>w</i>(<i>n</i>) : <maths id="math0021" num="(16)"><math display="block"><mtable><mtr><mtd><msub><mi mathvariant="italic">Cor</mi><mi>i</mi></msub><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mrow><msub><mi>N</mi><mi>s</mi></msub><mo>-</mo><mn>1</mn></mrow></munderover></mstyle><msub><mi>x</mi><mi>w</mi></msub><mo>⁢</mo><mfenced separators=""><mi>n</mi><mo>+</mo><mi>i</mi><mo>⁢</mo><msub><mi>N</mi><mi>s</mi></msub></mfenced><mo>⁢</mo><mi>w</mi><mo>⁢</mo><mfenced separators=""><mi>n</mi><mo>+</mo><mi>i</mi><mo>⁢</mo><msub><mi>N</mi><mi>s</mi></msub><mo>+</mo><mi>m</mi></mfenced></mtd><mtd><mi>m</mi><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>⋯</mo><mo>,</mo><msub><mi>N</mi><mi>s</mi></msub></mtd></mtr></mtable></math><img id="ib0021" file="imgb0021.tif" wi="128" he="17" img-content="math" img-format="tif"/></maths></p>
<p id="p0151" num="0151">En sommant ces corrélations partielles sur les R sous-blocs, on obtient la corrélation totale entre les deux séquences. Il existe cependant une méthode plus efficace pour calculer les intercorrélations en passant par la FFT.</p>
<p id="p0152" num="0152">Pour cela on calcule <i>X<sub>wi</sub></i>(<i>k</i>) et <i>W<sub>i</sub></i>(<i>k</i>), les FFT des signaux <i>x<sub>wi</sub></i> (<i>n</i>) et <i>w<sub>i</sub></i>(n) puis le produit: <maths id="math0022" num="(17)"><math display="block"><msub><mi>Y</mi><mi>i</mi></msub><mfenced><mi>k</mi></mfenced><mo>=</mo><msubsup><mover><mi>W</mi><mo>‾</mo></mover><mi>i</mi><mo>*</mo></msubsup><mfenced><mi>k</mi></mfenced><mo>⁢</mo><msub><mover><mi>X</mi><mo>‾</mo></mover><mi mathvariant="italic">wi</mi></msub><mfenced><mi>k</mi></mfenced></math><img id="ib0022" file="imgb0022.tif" wi="65" he="10" img-content="math" img-format="tif"/></maths></p>
<p id="p0153" num="0153">En sommant les contributions sur les <i>R</i> sous-trames de <i><o ostyle="single">Y</o><sub>i</sub></i> dans le domaine fréquentiel et en effectuant une transformée de Fourier inverse, on obtient l'intercorrélation cherchée: <maths id="math0023" num="(18)"><math display="block"><mover><mi>C</mi><mo>‾</mo></mover><mo>⁢</mo><mi mathvariant="italic">or</mi><mo>=</mo><mi mathvariant="italic">IFFT</mi><mo>⁢</mo><mfenced separators=""><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>R</mi><mo>-</mo><mn>1</mn></mrow></munderover></mstyle><msub><mover><mi>Y</mi><mo>‾</mo></mover><mi>i</mi></msub></mfenced></math><img id="ib0023" file="imgb0023.tif" wi="60" he="19" img-content="math" img-format="tif"/></maths><!-- EPO <DP n="28"> --></p>
<p id="p0154" num="0154">Ainsi, en référence à la <b>figure 10</b>, on obtient à l'étape E110 les séquences <maths id="math0024" num=""><math display="inline"><msubsup><mover><mi>W</mi><mo>‾</mo></mover><mi>i</mi><mo>*</mo></msubsup><mo>⁢</mo><mi>i</mi><mo>=</mo><mn>0</mn><mo>,</mo><mo>…</mo><mo>,</mo><mi>R</mi><mo>-</mo><mn>1</mn></math><img id="ib0024" file="imgb0024.tif" wi="30" he="8" img-content="math" img-format="tif" inline="yes"/></maths> supposées avoir été calculées à l'initialisation par FFT de <i><o ostyle="single">w</o><sub>i</sub></i> défini par l'équation (15).</p>
<p id="p0155" num="0155">Ensuite pour chaque sous-bloc en recouvrement de i=0 E120 à i=R-1 E160, on calcule la transformée de Fourier de <i>x<sub>wi</sub></i>(<i>n</i>) à l'étape E130 puis on effectue le produit complexe <maths id="math0025" num=""><math display="inline"><msub><mover><mi>Y</mi><mo>‾</mo></mover><mi>i</mi></msub><mo>=</mo><msubsup><mi>W</mi><mi>i</mi><mo>*</mo></msubsup><mo>⁢</mo><msub><mover><mi>X</mi><mo>‾</mo></mover><mi mathvariant="italic">wi</mi></msub></math><img id="ib0025" file="imgb0025.tif" wi="21" he="8" img-content="math" img-format="tif" inline="yes"/></maths> à l'étape E140 et on somme le résultat dans le tableau de nombres complexes <i><o ostyle="single">Z</o></i> à l'étape E150. Lorsque les R contributions de <maths id="math0026" num=""><math display="inline"><msub><mover><mi>Y</mi><mo>‾</mo></mover><mi>i</mi></msub><mo>=</mo><msubsup><mi>W</mi><mi>i</mi><mo>*</mo></msubsup><mo>⁢</mo><msub><mover><mi>X</mi><mo>‾</mo></mover><mi mathvariant="italic">wi</mi></msub></math><img id="ib0026" file="imgb0026.tif" wi="23" he="8" img-content="math" img-format="tif" inline="yes"/></maths> ont été sommées on sort de la boucle en réponse positive au test E160 et l'intercorrélation s'obtient en calculant la FFT inverse de <i><o ostyle="single">Z</o></i> à l'étape E170. La taille de la FFT inverse est de 2 <i>N<sub>s</sub>.</i></p>
<p id="p0156" num="0156">Nous allons à présent décrire une seconde variante du second mode de réalisation de l'étape E33 de calcul de corrélation.</p>
<p id="p0157" num="0157">Pour cela, on utilise pour le calcul de l'intercorrélation en recouvrement l'équation (19), l'intercorrélation intervenant cette fois en fonction des échantillons de la séquence retournée de <i><o ostyle="single">x</o><sub>w</sub></i> (signe - de <i>x<sub>w</sub></i>(<i>n-k</i>)): <maths id="math0027" num="(19)"><math display="block"><mtable><mtr><mtd><mi mathvariant="italic">Cor</mi><mfenced><mi>k</mi></mfenced><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>N</mi><mo>-</mo><mn>1</mn></mrow></munderover></mstyle><mi>w</mi><mfenced><mi>n</mi></mfenced><mo>⁢</mo><msub><mi>x</mi><mi>w</mi></msub><mo>⁢</mo><mfenced separators=""><mi>n</mi><mo>+</mo><mi>k</mi></mfenced></mtd></mtr></mtable></math><img id="ib0027" file="imgb0027.tif" wi="81" he="15" img-content="math" img-format="tif"/></maths> La transformée de Fourier de <i><o ostyle="single">C</o>or</i> sera alors donnée par la relation suivante: <maths id="math0028" num="(20)"><math display="block"><mi mathvariant="italic">FFT</mi><mfenced separators=""><mover><mi>C</mi><mo>‾</mo></mover><mo>⁢</mo><mi mathvariant="italic">or</mi></mfenced><mo>=</mo><mover><mi>W</mi><mo>‾</mo></mover><mo>⁢</mo><msubsup><mover><mi>X</mi><mo>‾</mo></mover><mi>w</mi><mo>*</mo></msubsup></math><img id="ib0028" file="imgb0028.tif" wi="82" he="9" img-content="math" img-format="tif"/></maths></p>
<p id="p0158" num="0158">Pour avoir une valeur de la corrélation sans repliement avec l'intercorrélation utilisant la séquence retournée, il nous faut de nouveau utiliser le recouvrement de: <maths id="math0029" num="(21)"><math display="block"><msub><mi>x</mi><mi>wi</mi></msub><mfenced><mi>n</mi></mfenced><mo>=</mo><msub><mi>x</mi><mi>w</mi></msub><mo>⁢</mo><mfenced separators=""><mi>n</mi><mo>-</mo><msub><mi>N</mi><mi>s</mi></msub><mo>+</mo><msub><mi>N</mi><mi>s</mi></msub><mo>⁢</mo><mi>i</mi></mfenced><mspace width="1em"/><mi>n</mi><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>⋅</mo><mo>⋅</mo><mo>⋅</mo><mo>,</mo><mn>2</mn><mo>⁢</mo><msub><mi>N</mi><mi>s</mi></msub><mo>-</mo><mn>1</mn><mo>,</mo><mspace width="1em"/><mi mathvariant="italic">i</mi><mo>=</mo><mn>0</mn><mo>,</mo><mo>⋅</mo><mo>⋅</mo><mo>⋅</mo><mo>,</mo><mi>R</mi><mo>-</mo><mn>1</mn></math><img id="ib0029" file="imgb0029.tif" wi="115" he="8" img-content="math" img-format="tif"/></maths> et un nouveau partionnement <i><o ostyle="single">w</o></i> dans lequel les zéros sont introduits au début de bloc et non plus à la fin comme dans l'équation (15): <maths id="math0030" num="(22)"><math display="block"><mtable><mtr><mtd><msub><mi>w</mi><mi>i</mi></msub><mfenced><mi>n</mi></mfenced><mo>=</mo><mo>{</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mi>n</mi><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>⋯</mo><mo>,</mo><msub><mi>N</mi><mi>s</mi></msub><mo>-</mo><mn>1</mn></mtd></mtr><mtr><mtd><mi>w</mi><mo>⁢</mo><mfenced separators=""><mi>n</mi><mo>+</mo><msub><mi>N</mi><mi>s</mi></msub><mo>⁢</mo><mi>i</mi></mfenced></mtd><mtd><mi>n</mi><mo>=</mo><msub><mi>N</mi><mi>s</mi></msub><mo>,</mo><mo>⋯</mo><mo>,</mo><mn>2</mn><mo>⁢</mo><msub><mi>N</mi><mi>s</mi></msub><mo>-</mo><mn>1</mn></mtd></mtr></mtable></mtd><mtd><mi>i</mi><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>⋯</mo><mo>,</mo><mi>R</mi><mo>-</mo><mn>1</mn></mtd></mtr></mtable></math><img id="ib0030" file="imgb0030.tif" wi="119" he="20" img-content="math" img-format="tif"/></maths><!-- EPO <DP n="29"> --></p>
<p id="p0159" num="0159">On remarquera que dans le cas présent la séquence <i>x<sub>wi</sub></i>(<i>n</i>) <i>i</i>=0,...,<i>R</i>-1 utilisée pour le partitionnement comprend les échantillons <i>x<sub>w</sub></i>(-<i>N<sub>s</sub></i>+1),..., <i>x<sub>w</sub></i>(-1), <i>x<sub>w</sub></i>(0), <i>x<sub>w</sub></i>(-<i>N<sub>s</sub></i>-1).</p>
<p id="p0160" num="0160">Le calcul de la corrélation sera donné par le même procédé que celui décrit en référence à la figure 10, à ceci près que <i><o ostyle="single">w</o><sub>i</sub></i> est donné par l'équation (22) et que le tableau de complexe <i><o ostyle="single">Y</o><sub>i</sub></i> est donné à l'étape E 140 par: <maths id="math0031" num="(23)"><math display="block"><msub><mi>Y</mi><mi>i</mi></msub><mfenced><mi>k</mi></mfenced><mo>=</mo><msub><mover><mi>W</mi><mo>‾</mo></mover><mi>i</mi></msub><mfenced><mi>k</mi></mfenced><mo>⁢</mo><msubsup><mover><mi>X</mi><mo>‾</mo></mover><mi mathvariant="italic">wi</mi><mo>*</mo></msubsup><mfenced><mi>k</mi></mfenced></math><img id="ib0031" file="imgb0031.tif" wi="97" he="12" img-content="math" img-format="tif"/></maths></p>
<p id="p0161" num="0161">Selon un mode de réalisation choisi et représenté à la <b>figure 11,</b> un dispositif mettant en oeuvre l'invention est par exemple un micro-ordinateur 210 qui comporte de façon connue, notamment une unité de traitement 220 équipée d'un microprocesseur, une mémoire morte de type ROM 230, une mémoire vive de type RAM 240. Le micro-ordinateur 210 peut comporter de manière classique et non exhaustive les éléments suivants: un clavier, un écran, un microphone, un haut-parleur, une interface de communication, un lecteur de disque, un moyen de stockage...</p>
<p id="p0162" num="0162">La mémoire morte 230 comporte des registres mémorisant un programme d'ordinateur PG comportant des instructions de programme adaptées à mettre en oeuvre un procédé de détection d'identificateur de tatouage selon l'invention tel que décrit en référence à la figure 3. Ce programme PG est ainsi adapté à préparer un bloc courant de N échantillons d'un signal tatoué reçu en entrée 250, à effectuer un calcul de corrélation par une méthode de transformation rapide entre les échantillons du bloc courant et ceux de la séquence aléatoire obtenue à partir d'au moins une valeur d'initialisation reçu en entrée 260 et à comparer les valeurs de corrélations résultantes à un seuil pour en déduire la position de l'identificateur de tatouage en sortie 270.</p>
<p id="p0163" num="0163">Lors de la mise sous tension, le programme PG stocké dans la mémoire morte 230 est transféré dans la mémoire vive qui contiendra alors le code exécutable de l'invention ainsi que des registres pour mémoriser les variables nécessaires à la mise en oeuvre de l'invention.<!-- EPO <DP n="30"> --></p>
<p id="p0164" num="0164">De manière plus générale un moyen de stockage, lisible par un ordinateur ou par un microprocesseur, intégré ou non au dispositif, éventuellement amovible, mémorise un programme mettant en oeuvre le procédé de détection d'identificateur de tatouage selon l'invention.</p>
</description><!-- EPO <DP n="31"> -->
<claims id="claims01" lang="fr">
<claim id="c-fr-0001" num="0001">
<claim-text>Procédé de détection d'un identificateur de tatouage dans un signal audio, l'identificateur de tatouage ayant été inséré dans le signal audio à partir d'une séquence aléatoire d'une longueur de N échantillons, N étant multiple de Ns, obtenue par au moins une valeur d'initialisation, le procédé étant <b>caractérisé en ce qu'</b>il comporte les étapes suivantes:
<claim-text>- préparation d'un bloc courant de N échantillons à partir du signal tatoué;</claim-text>
<claim-text>- calcul de corrélation par une méthode de transformation rapide entre les échantillons du bloc courant et ceux de la séquence aléatoire obtenue à partir de la au moins une valeur d'initialisation;</claim-text>
<claim-text>- comparaison à un seuil prédéterminé des valeurs de corrélation issues du calcul de corrélation des Ns premiers échantillons;</claim-text>
<claim-text>- itération des étapes précédentes avec un bloc courant décalé par rapport au bloc précédent de Ns échantillons tant que le maximum des dites valeurs de corrélation n'est pas supérieure au seuil prédéterminé, le maximum des valeurs de corrélation supérieur au seuil prédéterminé indiquant le début de l'identifïcateur de tatouage</claim-text></claim-text></claim>
<claim id="c-fr-0002" num="0002">
<claim-text>Procédé selon la revendication 1, <b>caractérisé en ce que</b> l'identificateur de tatouage indique la position dans le signal audio d'un message inséré.</claim-text></claim>
<claim id="c-fr-0003" num="0003">
<claim-text>Procédé selon l'une quelconque des revendications 1 ou 2, <b>caractérisé en ce que</b> l'étape de préparation de bloc courant comprend une étape de filtrage inverse du signal tatoué et une étape de filtrage de Wiener utilisant un filtre calculé à partir d'une fonction de corrélation d'une séquence d'apprentissage de l'identificateur de tatouage.</claim-text></claim>
<claim id="c-fr-0004" num="0004">
<claim-text>Procédé selon l'une quelconque des revendications 1 à 3, <b>caractérisé en ce que</b> la au moins une valeur d'initialisation est une clé (K<sub>a</sub>) qui permet de générer la séquence aléatoire.<!-- EPO <DP n="32"> --></claim-text></claim>
<claim id="c-fr-0005" num="0005">
<claim-text>Procédé selon l'une quelconque des revendications 1 à 3, <b>caractérisé en ce que</b> la séquence aléatoire est obtenue par deux valeurs d'initialisation, la première étant une première clé (K<sub>a</sub>) permettant de générer une séquence aléatoire intermédiaire, la seconde étant une seconde clé (K<sub>b</sub>) permettant de crypter la séquence aléatoire intermédiaire pour obtenir la séquence aléatoire.</claim-text></claim>
<claim id="c-fr-0006" num="0006">
<claim-text>Procédé selon l'une quelconque des revendications 1 à 4, <b>caractérisé en ce que</b> la méthode de transformation rapide est une méthode du type d'Hadamard qui comporte les étapes suivantes:
<claim-text>- permutation des échantillons du bloc courant selon une première table de permutation;</claim-text>
<claim-text>- application de la transformée d'Hadamard aux échantillons ainsi permutés;</claim-text>
<claim-text>- permutation des échantillons du vecteur résultant de la transformée d'Hadamard selon une seconde table de permutation pour obtenir les valeurs de corrélations.</claim-text></claim-text></claim>
<claim id="c-fr-0007" num="0007">
<claim-text>Procédé selon la revendication 6, <b>caractérisé en ce qu'</b>il comporte une étape préalable d'initialisation dans laquelle les première et seconde tables de permutation ainsi que la séquence aléatoire sont calculées et mémorisées.</claim-text></claim>
<claim id="c-fr-0008" num="0008">
<claim-text>Procédé selon la revendication 7, <b>caractérisé en ce que</b> le calcul de la séquence aléatoire, de la première et de la seconde table de permutation est optimisé par un nombre minimum d'opération binaires réalisées sur les bits d'un entier représentant dans chaque cas le registre à décalage de génération de la séquence ou de la table.</claim-text></claim>
<claim id="c-fr-0009" num="0009">
<claim-text>Procédé selon l'une quelconque des revendications 1 à 5, <b>caractérisé en ce que</b> la méthode de transformation rapide est par une méthode de type transformée de Fourier qui comporte les étapes suivantes:<!-- EPO <DP n="33"> -->
<claim-text>- application d'une transformée de Fourier au bloc courant;</claim-text>
<claim-text>- calcul d'un produit sur les échantillons résultant de la transformée du bloc courant et ceux du complexe conjuguée de la séquence aléatoire ayant subi une transformée de Fourier;</claim-text>
<claim-text>- application d'une transformée inverse de Fourier pour obtenir les valeurs de corrélation.</claim-text></claim-text></claim>
<claim id="c-fr-0010" num="0010">
<claim-text>Procédé selon la revendication 9, <b>caractérisé en ce qu'</b>il comporte une étape d'initialisation dans laquelle la transformée de Fourier de la séquence aléatoire et son complexe conjugué sont calculés et mémorisés.</claim-text></claim>
<claim id="c-fr-0011" num="0011">
<claim-text>Procédé selon l'une des revendications 1 à 5, <b>caractérisé en ce que</b> la méthode de transformation rapide est une méthode de type transformée de Fourier qui comporte les étapes suivantes:
<claim-text>- segmentation en sous-séquences du bloc courant;</claim-text>
<claim-text>- segmentation en sous-séquences de la séquence aléatoire, la deuxième moitié de la sous-séquence aléatoire étant mise à zéro;</claim-text>
<claim-text>- application d'une transformée de Fourier aux sous-séquences du bloc courant et aux sous-séquences de la séquence aléatoire;</claim-text>
<claim-text>- calcul de corrélations partielles par le produit sur les échantillons résultant de la transformée des sous-séquences du bloc courant et ceux du complexe conjugué des sous-séquences de la séquence aléatoire;</claim-text>
<claim-text>- sommation des corrélations partielles calculées;</claim-text>
<claim-text>- application d'une transformée de Fourier inverse à la somme issue de l'étape de sommation pour obtenir les valeurs de corrélation.</claim-text></claim-text></claim>
<claim id="c-fr-0012" num="0012">
<claim-text>Procédé selon l'une des revendications 1 à 5, <b>caractérisé en ce que</b> la méthode de transformation rapide est une méthode de type transformée de Fourier qui comporte les étapes suivantes:<!-- EPO <DP n="34"> -->
<claim-text>- segmentation en sous-séquences du bloc courant;</claim-text>
<claim-text>- segmentation en sous-séquences de la séquence aléatoire, la première moitié de la sous-séquence aléatoire étant mise à zéro;</claim-text>
<claim-text>- application d'une transformée de Fourier aux sous-séquences du bloc courant et aux sous-séquences de la séquence aléatoire;</claim-text>
<claim-text>- calcul de corrélations partielles par le produit sur le complexe conjugué des échantillons résultant de la transformée des sous-séquences du bloc courant et ceux des échantillons résultant des sous-séquences de la séquence aléatoire;</claim-text>
<claim-text>- sommation des corrélations partielles calculées;</claim-text>
<claim-text>- application d'une transformée de Fourier inverse à la somme issue de l'étape de sommation pour obtenir les valeurs de corrélation.</claim-text></claim-text></claim>
<claim id="c-fr-0013" num="0013">
<claim-text>Dispositif de détection d'un identificateur de tatouage dans un signal audio, l'identificateur de tatouage ayant été inséré dans le signal audio à partir d'une séquence aléatoire d'une longueur de N échantillons, N étant multiple de Ns, obtenue par au moins une valeur d'initialisation, <b>caractérisé en ce qu'</b>il comporte:
<claim-text>- des moyens de préparation d'un bloc courant de N échantillons à partir du signal tatoué;</claim-text>
<claim-text>- des moyens de calcul de corrélation par une méthode de transformation rapide entre les échantillons du bloc courant et ceux de la séquence aléatoire obtenue à partir de la au moins une valeur d'initialisation;</claim-text>
<claim-text>- des moyens de comparaison à un seuil prédéterminé des valeurs de corrélation issues du calcul de corrélation des Ns premiers échantillons;</claim-text>
<claim-text>- des moyens d'obtention d'un nouveau bloc courant par décalage de Ns échantillons par rapport au bloc précédent mis en oeuvre tant que le maximum des dites valeurs de corrélation n'est pas supérieure au seuil prédéterminé.</claim-text></claim-text></claim>
<claim id="c-fr-0014" num="0014">
<claim-text>Programme d'ordinateur comprenant des instructions de code pour la mise en oeuvre des étapes d'un procédé de détection d'identificateur de tatouage conforme<!-- EPO <DP n="35"> --> à l'une des revendications 1 à 12, lorsque ledit programme est exécuté par un processeur.</claim-text></claim>
</claims><!-- EPO <DP n="36"> -->
<drawings id="draw" lang="fr">
<figure id="f0001" num=""><img id="if0001" file="imgf0001.tif" wi="155" he="206" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="37"> -->
<figure id="f0002" num=""><img id="if0002" file="imgf0002.tif" wi="126" he="160" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="38"> -->
<figure id="f0003" num=""><img id="if0003" file="imgf0003.tif" wi="158" he="189" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="39"> -->
<figure id="f0004" num=""><img id="if0004" file="imgf0004.tif" wi="165" he="217" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="40"> -->
<figure id="f0005" num=""><img id="if0005" file="imgf0005.tif" wi="165" he="210" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="41"> -->
<figure id="f0006" num=""><img id="if0006" file="imgf0006.tif" wi="111" he="227" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="42"> -->
<figure id="f0007" num=""><img id="if0007" file="imgf0007.tif" wi="140" he="185" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="43"> -->
<figure id="f0008" num=""><img id="if0008" file="imgf0008.tif" wi="148" he="182" img-content="drawing" img-format="tif"/></figure>
</drawings>
<search-report-data id="srep" lang="fr" srep-office="EP" date-produced=""><doc-page id="srep0001" file="srep0001.tif" wi="152" he="233" type="tif"/><doc-page id="srep0002" file="srep0002.tif" wi="153" he="233" type="tif"/><doc-page id="srep0003" file="srep0003.tif" wi="151" he="233" type="tif"/><doc-page id="srep0004" file="srep0004.tif" wi="155" he="233" type="tif"/></search-report-data>
<ep-reference-list id="ref-list">
<heading id="ref-h0001"><b>RÉFÉRENCES CITÉES DANS LA DESCRIPTION</b></heading>
<p id="ref-p0001" num=""><i>Cette liste de références citées par le demandeur vise uniquement à aider le lecteur et ne fait pas partie du document de brevet européen. Même si le plus grand soin a été accordé à sa conception, des erreurs ou des omissions ne peuvent être exclues et l'OEB décline toute responsabilité à cet égard.</i></p>
<heading id="ref-h0002"><b>Documents brevets cités dans la description</b></heading>
<p id="ref-p0002" num="">
<ul id="ref-ul0001" list-style="bullet">
<li><patcit id="ref-pcit0001" dnum="WO2004010376A"><document-id><country>WO</country><doc-number>2004010376</doc-number><kind>A</kind></document-id></patcit><crossref idref="pcit0001">[0025]</crossref></li>
</ul></p>
<heading id="ref-h0003"><b>Littérature non-brevet citée dans la description</b></heading>
<p id="ref-p0003" num="">
<ul id="ref-ul0002" list-style="bullet">
<li><nplcit id="ref-ncit0001" npl-type="s"><article><author><name>A. ALRUTZ</name></author><author><name>M. R. SCHROËDER</name></author><atl>A fast Hadamard transform method for the évaluation of measurement using pseudo random test signals</atl><serial><sertitle>Proceeding of the 11th conférence on acoustics</sertitle><pubdate><sdate>19830000</sdate><edate/></pubdate></serial></article></nplcit><crossref idref="ncit0001">[0021]</crossref></li>
<li><nplcit id="ref-ncit0002" npl-type="b"><article><atl/><book><author><name>B. SCHNEIER</name></author><book-title>Applied cryptography, protocols and sources in C</book-title><imprint><name>John Wiley &amp; sons, inc.</name><pubdate>19960000</pubdate></imprint><location><pp><ppf>397</ppf><ppl/></pp><pp><ppf>398</ppf><ppl/></pp></location></book></article></nplcit><crossref idref="ncit0002">[0099]</crossref></li>
<li><nplcit id="ref-ncit0003" npl-type="b"><article><atl/><book><author><name>B. SCHNEIER</name></author><book-title>Applied cryptography, protocols and sources in C</book-title><imprint><name>John Wiley &amp; sons, inc.</name><pubdate>19960000</pubdate></imprint><location><pp><ppf>372</ppf><ppl>375</ppl></pp></location></book></article></nplcit><crossref idref="ncit0003">[0105]</crossref></li>
<li><nplcit id="ref-ncit0004" npl-type="s"><article><author><name>A. ALRUTZ</name></author><author><name>M. R. SCHROËDER</name></author><atl>A fast Hadamard transform method for the evaluation of measurement using pseudo random test signals</atl><serial><sertitle>Proceeding of the 11th conference on acoustics</sertitle><pubdate><sdate>19830000</sdate><edate/></pubdate></serial></article></nplcit><crossref idref="ncit0004">[0118]</crossref></li>
</ul></p>
</ep-reference-list>
</ep-patent-document>
