IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Convolution de 2 matrices de même dimension


Sujet :

Algorithmes et structures de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Convolution de 2 matrices de même dimension
    Je cherche a convoluer deux matrice2D sans passer par la transformer de fourier, quelqu'un aurait il deja le code?

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Tu prends une convolution 1D et tu l'effectues sur les 2 dimensions.

  3. #3
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    pas mal de lib de traitement d'image qui font ça...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 159
    Points : 171
    Points
    171
    Par défaut
    J'ai pas le code,
    Mais quelle est la formule mathematique pour que je m'amuse un peu.

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    ba la en fait j'ai pas d'editeur d'equation mais c'est la:
    http://fr.wikipedia.org/wiki/Produit_de_convolution

    par contre ca c'est la convolution 1D...

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Sous vc6 j'en connait pas qui fonctionne bien, si t'en connait une valide j suis preneur

  7. #7
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    http://cimg.sourceforge.net/index.shtml

    C'est un .h
    Si une partie ne compile pas, alors vire des trucs pour ne garder que ce que tu as besoin...
    A base de template => chaud pour VC6.0 quand même

    A voir...

  8. #8
    Membre habitué Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Points : 193
    Points
    193
    Par défaut
    Je persiste et je signe avec openCV, une librairie que l'on utilise beaucoup dans la recherche en vision
    Avant de poser une question, lire la Avant de répondre, lire la question

  9. #9
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Une nouvelle fois (je l'ai déjà dit je ne sais plus quand, mais c'est récent), les matrices sont à multiplier pour avoir le produit de convolution.
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  10. #10
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    ??!!?
    Quand on multiplie 2 matrices carré de dimension N le resultat est une matrice carré de dimension N. Si on fait la convolution la matrice resultat a une dimension 2N-1

  11. #11
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Les matrices servent dans le produit de convolution à effectuer le calcul :
    x(n)=a*x(n-1)+b*x(n-2)+...
    Car le produit de deux matrices est une série de multiplications/additions.
    Que cherches-tu à convoluer exactement ?
    Par exemple, on va faire le produit de convolution entre une image et un noyau de convolution 3x3, 5x5, etc.
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  12. #12
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Quand on multiplie 2 matrices carré de dimension N le resultat est une matrice carré de dimension N. Si on fait la convolution la matrice resultat a une dimension 2N-1
    Euh, non, pas du tout ...

    La matrice résultat sera la plus grande matrice des deux ...

    J'ai peur qe tu n'ai pas bien compris le problème.

    Si tu veux plus d'info sur le calcul consulte les généralités ici :

    http://docs.gimp.org/fr/plug-in-convmatrix.html

  13. #13
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Et tu en as une autre dans le forum C :
    http://www.developpez.net/forums/sho...d.php?t=176408

    Le multipost est interdit...
    Si tu as des soucis, il va falloir expliquer ce que tu cherches à faire, quelles sont tes matrices, etc.
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  14. #14
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Oui, spécialiser ta question, mais bon, comme tu ne veux pas de FFT, je ne vois même pas où est le problème, une convolution 2D, c'est juste 2 convolutions 1D, et la convolution, c'est pas le plus compliqué... une somme de produits, on a vu pire.

  15. #15
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Bien sur harsh...
    Y'a aussi ITK, VIGRA...
    Je proposais la plus simple à utiliser (simple convolution 2D!)

  16. #16
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par PRomu@ld
    Euh, non, pas du tout ...

    La matrice résultat sera la plus grande matrice des deux ...

    J'ai peur qe tu n'ai pas bien compris le problème.

    Si tu veux plus d'info sur le calcul consulte les généralités ici :

    http://docs.gimp.org/fr/plug-in-convmatrix.html
    Désolé de te contredire, mais un convolution de 2 matrices de taille N donne une matrice de taille 2N-1, c'est mathématique - demande à Matlab, il confirmera -> xcorr -. Ensuite, on peut toujours supprimer les bords, mais c'est un choix à faire, ce n'est pas automatique

  17. #17
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Il me semble qu'il y a mesentente parce que ca j'ai bien compris justement. Le probleme c'est que je ne vois pas comment une simple multiplication de matrice change la dimension de la matrice resultat(->progfou)

  18. #18
    Membre actif Avatar de ronan99999
    Inscrit en
    Juillet 2003
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 279
    Points : 299
    Points
    299
    Par défaut
    oulala....
    Euh je pense qu'il faut que tu regardes un peu de théorie sur la convolution avant de la coder.

    Ce n'est pas un produit de matrice, d'ailleur un produit de convolution est commutatif par le produit de deux matrices.


    Un exemple en 1 dimension soit deux signaux discret et causaux, A(a0 a1 a2 a3 a4) et B(b0 b1 b2), on considére que en dehors de leur support leur valeur est nulle.

    (L'idée c'est de retourner puis de décaler et multiplier et additionner)
    posons convolution(a,b)(k) = c(k) = sigma sur n (A(n)*B(k-n))

    //premier décalage
    0 0 a0 a1 a2 a3
    b2 b1 b0 0 0 0

    c0 = 0*b2 + 0*b1 + a0*b0 + a1*0 + a2*0 + a3*0

    //deuxiéme décalage
    0 a0 a1 a2 a3
    b2 b1 b0 0 0

    c1 = 0*b2 + a0*b1 + a1*b0 + a2*0 + a3*0

    //troisiéme décalage
    0 a0 a1 a2 a3
    0 b2 b1 b0 0

    c2 = a0*b2 + a1*b1 + a2*b0 + a3*0

    //quatriéme décalage
    0 a0 a1 a2 a3
    0 0 b2 b1 b0

    c3 = a0*0 + a1*b2 + a2*b1 + a3*b0


    etc...

    tu vois bien qu'a la fin tu as C (c0 c1 c2 c3 c4 c5) cad la dimension de ton vecteur est dim(C) = dim(A) + dim(B) - 1.

    Régle du support: soit A définit sur [sa0 sa1] et nulle en dehors et B sur [sb0 sb1] et nulle en dehors alors C produit de convolution de A et B est définit sur
    [sa0 + sb0,sa1 + sb1]

    sur l'exemple précédent:

    [0 + 0,2 + 3] = [0,5]
    un exemple en continue:

    http://fr.wikipedia.org/wiki/Produit_de_convolution

    Voila pour le support.

    Ici on a considéré que les signaux représenté par des vecteurs s'annulaient en dehors de leur support, pour certaine application on considére que les signaux sont périodiques.
    Si tu ne te plantes pas, comment veux tu pousser?

  19. #19
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Ouh là là...
    Va falloir que tu nous dises ce que tu veux exactement !
    Convoluer deux matrices ?
    Qui peut m'expliquer ce que c'est ?
    Moi je connais la multiplication d'une matrice par une autre, l'une représentant le signal, l'autre les coeff à appliquer, mais il faut dire qu'en 2D, je ne connais pas très bien.
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  20. #20
    Membre actif Avatar de ronan99999
    Inscrit en
    Juillet 2003
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 279
    Points : 299
    Points
    299
    Par défaut
    Bon c'est un probléme de vocabulaire vecteur signal matrice signal 2d etc....

    Quand tu fais du filtrage sur une image tu fais un produit de convolution de deux signaux que tu peux représenter chacun par une matrice aprés il faut voire si tu les considéres périodiques ou non mais c'est une autre histoire.

    La question devrait etre reformulée en: "comment fait'on un produit de convolution sur des signaux de dimension 2 ?".
    Si tu ne te plantes pas, comment veux tu pousser?

Discussions similaires

  1. tableau à deux cellules de même dimension
    Par Zak Blayde dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 26/07/2007, 10h11
  2. Réponses: 5
    Dernier message: 07/06/2007, 12h22
  3. Réponses: 8
    Dernier message: 03/05/2007, 17h31
  4. Matrices - Tableaux à 2 dimensions
    Par melotron dans le forum Calcul scientifique
    Réponses: 1
    Dernier message: 09/07/2006, 13h17
  5. mettre les formulaires aux mêmes dimensions
    Par xycoco dans le forum IHM
    Réponses: 6
    Dernier message: 09/10/2004, 09h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo