Watermarking wav

Watermarking wav - Algo - Programmation

Marsh Posté le 02-01-2009 à 17:16:45    

Bonjour à tous,  
 
Voilà pour un projet, je dois insérer une notion de temps dans un fichier wav (je me suis limité à un mono 8bits).
 
Il faudrait pour bien faire, insérer des tops (1 pour les secondes et 2 pour les minutes) dans ce fichier sans le dégrader et en utilisant la technique du bit de poids faible.
 
Je comprends tout le système de masque mais je ne vois pas comment je pourrais insérer mes "tops" (qui doivent être inaudibles) et pouvoir ensuite permettre à quelqu'un de les retrouver...
 
Quelqu'un aurait une piste à me proposer ?


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
Reply

Marsh Posté le 02-01-2009 à 17:16:45   

Reply

Marsh Posté le 03-01-2009 à 13:21:39    

dans un premier temps, tu mets les bits de poids faible à 0. puis tu repasse en mettant un 1 pour les secondes, et deux 1 pour les minutes...

 

regarde par là :
http://www.thisisnotalabel.com/How [...] and-VB.php


Message édité par jagstang le 03-01-2009 à 14:51:23

---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 03-01-2009 à 20:04:15    

Merci pour ta réponse,  
 
Oui c'est ce que j'ai fait dans un premier temps.
 
Je dois donc modifier les bits de poids faible aux alentours de la valeur 127 (puisque les valeurs d'un wav sont entre -1 et 1, je les multiplie par 127 puis je leur ajoute 127 pour obtenir une échelle 0-255)  
 
Cependant, pour initialiser tous les échantillons du son (mettre les bits de poids faibles à 0), ça prend un temps infini (je développe en Matlab)...
 
Que faire donc :s ?


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
Reply

Marsh Posté le 04-01-2009 à 16:43:03    

ça prend pas un temps infini... Mais un certain temps. quelle est la taille de ton échantillon ?


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 04-01-2009 à 17:19:18    

Oui, c'était pour dire que ça prenait pas mal de temps...
 
Mais Matlab est hyper lent pour les boucles, j'ai un son de 3 secondes à peu près soit 71000 échantillons de 8 bits...


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
Reply

Marsh Posté le 04-01-2009 à 17:32:24    

En matlab, la loi n°1 c'ets jamais de faire de boucle mais d'ecrire sous forme matricielle direct. Ensuite, le pb c'ets que matlab et les manip de bits = LOL.

Reply

Marsh Posté le 04-01-2009 à 18:32:07    

En fait je ne vois pas comment je pourrais écrire mon programme sous forme matricielle...
 
Je prends donc chaque échantillon de mon son que je transpose de 0 à 255, je le mets en vecteur binaire puis je dois lui modifier 1 ou 2 bits...
 
Comment je pourrais faire ?  
 
Et par LOL tu veux dire que c'est impossible ? :D


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
Reply

Marsh Posté le 04-01-2009 à 18:54:05    

ben ça à l'air possible...
 

Citation :

Integer Bit Manipulation Functions
The ops directory contains commands that permit bit-level operations on integers. Operations include setting and unsetting, complementing, shifting, and logical AND, OR, and XOR.
 
Table 1-14: New Bitwise Functions   Function
 Description
bitand
 Bitwise AND.
bitcmp
 Complement bits.
bitget
 Get bit.
bitmax
 Maximum floating-point integer.
bitor
 Bitwise OR.
bitset
 Set bit.
bitshift
 Bitwise shift.
bitxor
 Bitwise XOR.


 
 
http://www.uni-kassel.de/hrz/serve [...] /ch14.html


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 04-01-2009 à 18:54:13    

Non ça veut dire que c'est un peu comme sortir Comsol pour regarder le champ magnétique généré par un fil rectiligne : ça va marcher mais c'est juste démesuré comme outil ..  
Pour faire des opérations bit / bit utilise du C/C++ ou alors un autre langage que tu maitrises mieux (Java, Ruby, Python,...), mais laisse matlab tranquille si t'as le choix


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 04-01-2009 à 19:03:24    

Je n'ai malheureusement pas le choix...


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
Reply

Marsh Posté le 04-01-2009 à 19:03:24   

Reply

Marsh Posté le 04-01-2009 à 19:05:25    

Alors utilise ce que t'as présenté jagstang ..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 04-01-2009 à 19:06:43    

et à mon avis c'est beaucoup plus rapide qu'avec une boucle...


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 04-01-2009 à 19:12:06    

jagstang a écrit :

ben ça à l'air possible...

 
Citation :

Integer Bit Manipulation Functions
The ops directory contains commands that permit bit-level operations on integers. Operations include setting and unsetting, complementing, shifting, and logical AND, OR, and XOR.

 

Table 1-14: New Bitwise Functions   Function
 Description
bitand
 Bitwise AND.
bitcmp
 Complement bits.
bitget
 Get bit.
bitmax
 Maximum floating-point integer.
bitor
 Bitwise OR.
bitset
 Set bit.
bitshift
 Bitwise shift.
bitxor
 Bitwise XOR.

 


http://www.uni-kassel.de/hrz/serve [...] /ch14.html

 

Merci de ta recherche mais je sais que c'est possible...

 

Je réexplique le fonctionnement du programme:

 

1)lire un son, pour chaque échantillon, initialiser 2 bits à 0

 

2)à chaque seconde mettre 1 de ces bits à 1

 

3)à chaque minute mettre les 2 bits à 1

 

4)Réencoder en Wav

 

Maintenant

 

1) lire le son wav qu'on a réencodé

 

2) lire les 2 bits choisis pour chaque échantillon

 

3) à chaque fois qu'on lit 1 bit à 1 ==> on affiche seconde

 

4) à chaque fois qu'on lit les 2 bits à 1 ==> on affiche minute

 


Je rencontre des problemes pour initialiser ces bits à 0 (quand je ré-ouvre le fichier que jai réencodé, la valeur des bits a changé  :??: )
et donc afficher ce que je veux...

 


J'ai utilisé les fonctions dec2binvec pour transformer chacun de mes valeurs de mon fichier wav en un vecteur de 8 bits, puis je fais mes opérations dessus (or, and,...)

 

C'est pas bon? Je suis vraiment paumé là :(


Message édité par Lou013 le 04-01-2009 à 19:14:02

---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
Reply

Marsh Posté le 04-01-2009 à 19:13:24    

par LOL, j'entends les perfs.
 
Quand je dis matricielle, je veut dire elementwise.
au lieu d'ecrire :
 
for(i=1:100)
 a(i) = toto(a,i);
 
ecrire
a = toto(a);
 
aka trouver une formulation data-oriented de l'algo et l'ecrire cash.

Reply

Marsh Posté le 04-01-2009 à 19:19:16    

Joel F a écrit :

par LOL, j'entends les perfs.
 
Quand je dis matricielle, je veut dire elementwise.
au lieu d'ecrire :
 
for(i=1:100)
 a(i) = toto(a,i);
 
ecrire
a = toto(a);
 
aka trouver une formulation data-oriented de l'algo et l'ecrire cash.


 
Ah ok,  
 
Mais j'ai du mal à comprendre comment tu voudrais procéder...
 
J'ai tous mes éléments et je leur faire subir des transformations, comment je peux faire ça sans boucles ?  
(y'en a 70 000)  
 


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
Reply

Marsh Posté le 04-01-2009 à 19:38:40    

donne moi l'algo pr calculer un element

Reply

Marsh Posté le 04-01-2009 à 20:23:17    

Code :
  1. while (n<=taille)
  2.              
  3.               s(n,1)=s(n,1)*127;
  4.               s(n,1)=s(n,1)+127;
  5.               s(n,1)=uint8(s(n,1));
  6.               t1=s(n,1);
  7.               t2=dec2binvec(t1,8);
  8.               t1=and(init,t2)
  9.               t2=binvec2dec(t1);
  10.               s(n)=t2;
  11.               n=n+1;
  12.                          
  13. end;


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
Reply

Marsh Posté le 04-01-2009 à 20:36:27    

Étonnant que ça s'éternise en effet [:k-nar]  
Tu te rend compte que, ne serait-ce que les 2 premier steps de ton algo, DOIVENT être fait sous forme matricielle ?  
Après, regarde dans la doc s'il existe un AND qui prend comme argument des matrices .
Probablement tu devras créé un revoir un peu ta variable init pour qu'elle contienne une matrice qui va bien ... Mais là ce que tu demandes de faire c'est carrément pas optimisé matlab :|


Message édité par esox_ch le 04-01-2009 à 20:36:45

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 04-01-2009 à 22:01:04    

Je suis limite débutant en Matlab et je n'ai reçu aucune notions sur le développement en forme Matricielle, c'est pourquoi j'ai du mal à optimiser tout ça, sinon je ne serais pas ici...
 
De plus, le résultat demandé pour ce projet a mis très longtemps à être compris car assez mal expliqué.  
 
 
 
 


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
Reply

Marsh Posté le 04-01-2009 à 22:09:59    

En une passe matricielle :
 

Code :
  1. r=binvec2dec(and(init,dec2binvec(uint8(s*127+127),8)));


Reply

Marsh Posté le 04-01-2009 à 23:47:18    

merci, je vais essayer de comprendre et intégrer tout ça :)


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
Reply

Marsh Posté le 05-01-2009 à 08:26:17    

Il y a rien à comprendre :o
Il a juste pris tes instructions et les a modifiées pour que ça s'applique directement à la matrice d'entrée, et non pas à 1 element (nécessitant donc une boucle)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 05-01-2009 à 15:28:44    

La prog c'est pas mon fort, je suis en finalité réseaux et télécom mais j'ai un peu de traitement de signal donc voilà, mais je me soigne, en tout cas merci à tout le monde ;)


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed