Aller au contenu


Photo
- - - - -

Intercorrélation


  • Veuillez vous connecter pour répondre
14 réponses à ce sujet

#1 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 01 juillet 2018 - 04:42

Si vous cherchez à détecter un signal particulier noyé dans du bruit, je viens de faire un test d'algo d'intercorrélation avec un signal simple, une sinus à 2kHz.

Aucun filtre nul part, ni analogique ni numérique.  

 

(faut mettre du son!)

 

Normalement ça marche mieux avec un signal plus compliqué, genre une sinus avec sa fréquence qui augmente.

 

Edit:

 

Un 2ème test qui montre à quel point c'est sélectif. Je détecte mon signal de 2kHz à 20Hz prés! Impec pour faire du multi-canal^^

 



#2 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 766 messages
  • Gender:Male

Posté 01 juillet 2018 - 07:00

Tu pourrais nous en dire un peu plus.
C'est quoi les applications sur ton smartphone ?
En tout cas, je suis admiratif !

#3 Melmet

Melmet

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 519 messages
  • Gender:Male
  • Location:Saint-Sozy (46200)

Posté 01 juillet 2018 - 08:05

perso j'ai rien compris? :) 


Ne demande jamais à un robot de faire ce que tu peux faire toi même. :nono: :laugh1:


#4 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 01 juillet 2018 - 08:19

L'application c'est "Frequency Sound Generator", ça permet de générer au choix 3 formes d'onde (sinus, carrée ou une rampe). Dans cette exemple j'utilise la sinus. 

 

Cet algo c'est un ensemble d’addition et de multiplication. 

Ici on peut s'amuser à tester des courbes.

 

 

 

perso j'ai rien compris?  :) 

 

En gros je détecte le bip sonor même si on ne l'entend pas à cause du bruit ambiant. :)



#5 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 01 juillet 2018 - 09:20

Toi tu te fais ton assistant perso.



#6 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 766 messages
  • Gender:Male

Posté 02 juillet 2018 - 06:03

Prenons un exemple simple.

Soit 2 clarinettes, A et B. La clarinette A joue un La, 440hz, et la clarinette B joue un La à l'octave supérieure soit 880hz.
Le cerveau humain peut facilement discriminer les 2 notes et les entendre séparément.
Par contre, le résultat, visible avec un logiciel tel que Audacity ne permet pas visuellement de séparer les 2 notes.

Est ce que avec ton système, tu pourrais séparer les 2 notes ? Si c'est le cas, c'est très intéressant.

#7 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 02 juillet 2018 - 07:16

Séparer les 2 c'est à dire détecter soit l'une soit l'autre ?

#8 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male

Posté 02 juillet 2018 - 07:25

Je crois avoir pigé, donc excellent ^^

et peux tu faire l'inverse, supprimer un bruit régulier, tel celui d'un servomoteur (ou plusieurs) proche de micros ??


signature_01.png -->

 

Mon Tipeee
 


#9 cocothebo

cocothebo

    Membre passionné

  • Membres
  • PipPipPip
  • 341 messages
  • Gender:Male

Posté 02 juillet 2018 - 10:03

Prenons un exemple simple.

Soit 2 clarinettes, A et B. La clarinette A joue un La, 440hz, et la clarinette B joue un La à l'octave supérieure soit 880hz.
Le cerveau humain peut facilement discriminer les 2 notes et les entendre séparément.
Par contre, le résultat, visible avec un logiciel tel que Audacity ne permet pas visuellement de séparer les 2 notes.

Est ce que avec ton système, tu pourrais séparer les 2 notes ? Si c'est le cas, c'est très intéressant.

Comme la clarinette est en sib (bon ok pas toutes), quand elle joue un LA on entend un SOL :P (ok j'arrête de faire mon lourd promis)

 

Par contre pour faire cela, normalement avec une transformée de fourier ça doit bien le faire.

Il me semble que certains logiciels de "reverse" d'une musique utilisent ça justement.

 

 

Pour revenir au post initial sympa la démo, tu as codé l'algo sur quoi?

Par contre de mémoire c'est très sensible à la déformation du signal que tu cherches non? En gros si tu mets ça sur un robot et qu'il bouge est ce qu'avec l'effet doppler par exemple tu risques de pas reconnaitre le signal?



#10 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 02 juillet 2018 - 12:34

Il y a aussi un algo (dont j'ai oublié le nom) qui fait la même chose que la fft mais seulement pour une fréquence recherchée.

 

 

Pour revenir au post initial sympa la démo, tu as codé l'algo sur quoi?

Par contre de mémoire c'est très sensible à la déformation du signal que tu cherches non? En gros si tu mets ça sur un robot et qu'il bouge est ce qu'avec l'effet doppler par exemple tu risques de pas reconnaitre le signal?

C'est codé sur un esp32 avec des fonctions arduino, donc pas optimisé mais l'esp32 est très rapide^^ 

Pour l'effet doppler ça dépend du signal que tu utilises. Par exemple avec une sinus modulée en fréquence tu peux couvrir une plage de vitesse. Pour une sinus simple effectivement l’effet doppler gênera la détection.

 

 

 

et peux tu faire l'inverse, supprimer un bruit régulier, tel celui d'un servomoteur (ou plusieurs) proche de micros ??

 

Je peux pas supprimer le bruit, ou je vois pas comment. Pour faire ça il faut plutôt faire des filtres.



#11 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 766 messages
  • Gender:Male

Posté 02 juillet 2018 - 01:21

Séparer les 2 c'est à dire détecter soit l'une soit l'autre ?

Oui.
A partir d'un fichier son, faire 2 fichiers son, contenant chacun une des 2 fréquences.

#12 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male

Posté 02 juillet 2018 - 01:34

Erf, oui, filtrer le bruit c'était dans se sens la que je "l'entendais", un bruit régulier comme le bruit des servomoteurs maintenant une position ça fait du bordel on est bien d'accord, mais si avec ton système on peu "filtrer" le bruit de ces servos, cela peut être intéressant, ou même pour d'autres applications, dans un salon le bruits ambiant de toutes ces voix pourrait être filtrer et ne tenir compte des voix qui sont proche.


signature_01.png -->

 

Mon Tipeee
 


#13 cocothebo

cocothebo

    Membre passionné

  • Membres
  • PipPipPip
  • 341 messages
  • Gender:Male

Posté 02 juillet 2018 - 03:22

Oui.
A partir d'un fichier son, faire 2 fichiers son, contenant chacun une des 2 fréquences.

 

Ah si c'est ça la demande, ma réponse n'est pas forcémet bonne.

Je pensais extraire le fait qu'on a un 440hz et un 880 (en fondamentale), la en effectuant une FFT on devrait avoir les deux "pics" qui disent que ces frequences la sont les plus présentes, et donc par ricocher reconstruire la note fondamentale.

 

Par contre si c'est pour extraire deux voies, la faut filtrer, et comme un son est très rarement pur, il faut connaitre les harmoniques et leur puissances, à partir de la je pense qu'on centre une fois sur le 440 pour l'éliminer puis sur l'autre pour éliminer la seconde voie.

Quoi moi je vois ça, si on supprime juste la composante mettons 440Hz, toutes les harmoniques de ce LA joué par la clarinette A seront tjs présentes...

 

Et surtout faut le faire note à note, vu que apres si clarinette A joue mettons un SOL et la B un DO, faut plus filtrer les mêmes fréquences. Et la clarinette A peut des fois jouer plus aigu que la B etc...

 

 

@ashira pour supprimer le bruit à l'exception du pattern recherché, deux soustractions devraient fonctionner, bon après ce sera pas vraiment temps réel.



#14 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 02 juillet 2018 - 06:41

Ça fonctionne si ce sont les mêmes amplitudes mais sinon ça fait soit le pattern atténué soit le pattern à l'envers? A moins que je n'ai pas compris ce que tu voulais dire par 2 soustractions^^

Pour le côté temps réel, j'execute l'algo après chaque nouvel échantillon et l'esp32 s'ennuie entre chaque échantillonnage ^^ il y a le temps de faire d'autre opération.

J'ai aussi vu que la partie DSP des stm32 permettaient de faire à la fois addition et multiplication en quelque coup d'horloge seulement. C'est bon à savoir si le temps de calcul venait à manquer.

#15 Bacab

Bacab

    Membre occasionnel

  • Membres
  • Pip
  • 108 messages
  • Gender:Male

Posté 02 juillet 2018 - 08:14

Le décalage en fréquence du à l'effet Doppler peut effectivement diminuer l'efficacité d'un filtre d’auto-corrélation (c'est comme ça qu'on dit en radar dans les livres). Du coup pour maximiser les chances tu multiplies le nombre de filtres pour couvrir toute la bande "recevable".

Tu arrives rapidement à une nombre très important (qui plus est dans un radar tu cherches un signal ponctuel, une impulsion, en plus de tester la corrélation pour toute les vitesses, tu le fais aussi pour toutes les retards (ie distances possibles) ! Je vais citer le Darricau (chapitre 17) :

D’après les considérations précédentes sur l’espacement entre voies distance, l’espacement entre deux voies de corrélation devra être comprise entre 30 et 60 mètres, soit pour un domaine distance couvert de 300 km un nombre de corrélateurs compris entre 5000 et 10 000. De même, d’après les considérations précédentes sur l’espacement entre voies vitesse, l’espacement entre deux filtres vitesse devra être compris entre 20 m/s et 50 m/s, soit pour un domaine vitesse couvert de 1000 m/s un nombre de filtres vitesse par corrélateur compris entre 20 et 40. D’où un nombre total de voies de détection compris entre 100 000 et 400 000, ce qui est considérable pour une réalisation en analogique. Pour cette raison, on a limité l’utilisationde ce type de radar à corrélation à des domaines distance et doppler faibles comme des modes poursuites sur des sondes altimétriques.

source :  http://radars-darricau.fr/livre/1-Pages/Sommaire.html

 






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users