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 :

Calcul de dérivées discretes dans le plan


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 71
    Points : 15
    Points
    15
    Par défaut Calcul de dérivées discretes dans le plan
    Bonjour,
    J'effectue un travail sur des images satellites pour la détection de feux de forêts.
    Nous récupérons donc des images satellites avec 1024 niveaux de gris, le blanc représentant les pixels les plus chauds et les noirs les plus froids.
    Afin de détecter les variations de température, j'envisageais de calculer des dérivée partiel dans toutes les directions afin de constater les augmentations brutales de température entre plusieurs pixels voisins.
    Quelqu'un ici a t'il déja travaillé de la sorte? et sinon, quelle méthode conseillez vous pour obtenir un résultat probant? (je ne vois pas trop comment récupérer les pixels présentant une pente intéressante)
    Merci d'avance.

  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 veux être capable de calculer une dérivée dans toutes les directions, c'est ça ? Qu'est-ce qui t'empêche de le faire ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 71
    Points : 15
    Points
    15
    Par défaut
    et bien je ne sais pas comment la faire dans toutes les directions, diagonales comprises. et avec un aussi grand nombre de valeurs.
    je précise que nous utilisons le langage c.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 71
    Points : 15
    Points
    15
    Par défaut
    et de récupérer les pixels appartenant à des zones de grande pente, donc de forte variation.

  5. #5
    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 nickoko
    et bien je ne sais pas comment la faire dans toutes les directions, diagonales comprises. et avec un aussi grand nombre de valeurs.
    je précise que nous utilisons le langage c.
    tu fais une approximation de la dérivée - limite de la différence sur delta - selon les directions, je ne vois pas le problème

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 71
    Points : 15
    Points
    15
    Par défaut
    désolé si c'est trivial ! je pensais qu'il existait peut etre une bibliotheque contenant une fonction utile qui m'echappait!
    comment "approximer" une dérivée? je n'ai pas vu d'algorithmes concrets sur le forum et ailleurs.

  7. #7
    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
    Il n'y a pas d'algo, ce sont juste des filtres qu'on passe.
    Les exemples d'approximation en 1D sont courants :
    x[n]-x[n-1], x[n+1]-x[n], 1/2*(x[n+1]-x[n-1]), ... C'est toujours la même formule de la dérivée normale, sauf qu'on ne prend pas la limite.

  8. #8
    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

    C'est une approximation pour une fonction continue, ou presque, dont on ne connaît pas la dérivée, dans ton cas, c'est pas ça que tu veux, ou plutôt, c'est une version imparfaite - et qui ne marche pas, c'est du code de quoi ? Les fonctions ne sont même pas identiques ! -. De plus, elle est exclusivement en 1D, et avec une précision qui ne te conviendra pas - tu prends des entiers en entrée, pas des flottants -

    Tu reprends mes formules, et tu as les dérivées dans les 2 dimensions, si tu fais une dérivée dans les 2 dimensions. Pour les autres dérivées, il te faut réécrire la formule, calculer le delta et c'est bon.
    (x[n, m] - x[n - delta1, m - delta2])/sqrt(delta1² + delta2²)
    par exemple. MAis plus tes deltas seront importants, moins l'approximation sera exacte.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 71
    Points : 15
    Points
    15
    Par défaut
    delta 1 et delta 2 leur precision? comment la déterminer? 9km2?

  10. #10
    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
    n et m sont des coordonnées en pixel et delta1 et delta2 sont les différences de coordonnées en pixels.
    Si tu veux prendre la dérivée selon la droit y = x, tu prendras delta1 = delta2 = 1.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 71
    Points : 15
    Points
    15
    Par défaut
    oui mais je veux pouvoir calculer d'une même fonction les dérivées dans toutes les directions! comment déterminer les delta dans ce cas là? ils doivent pouvoir etre définis pour n'importe quelle droite!

  12. #12
    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 lis ce que j'écris parfois ?
    Selon la directionq ue tu veux, tu prendras delta1 et delta2 adaptés. Mais le pb, c'est que si les deltas sont trop élevés, le calcul de la dérivée discrète n'a plus de sens.

    T'as suivi un cours de Terminale S ?

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 71
    Points : 15
    Points
    15
    Par défaut
    moi aussi je me répète. je ne vais pas recalculer les deltas pour chaque direction, je veux une fonction applicable à un tableau directement.

  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
    T'as fait une sup et tu ne sais pas comment calculer une dérivée discrète ?
    Tu fais la liste des dérivées que tu veux calculer et tu calcules les deltas adéquats et tu écris ta fonction. TU N'AS PAS LE CHOIX. Tu veux que le programme le sache comment ?

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 71
    Points : 15
    Points
    15
    Par défaut
    en fait c'est même de la 3d vu qu'on a les deux coordonnées + la valeur du pixel...

  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
    C'est de la 2D, tu as 2 dimensions et la valeur associée, c'est une fonction de N² dans R

  17. #17
    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
    Avec ces fonctions, tu as toutes les droites possibles
    Moins tu as besoin de dérivées, mieux c'est.
    Commence par les dérivées selon chacune des dimensions et les dérivées à 45°.
    Si tu as un problème de précision, tu peux toujours tester l'une des 2 autres formules que j'avais donné en exemple en 1D en l'étendant à la 2D.

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 71
    Points : 15
    Points
    15
    Par défaut
    oui c'est ce que je voulais dire...

  19. #19
    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
    Excellent
    En fait, moins l'angle est classique - 45°, ... - moins la précision sera bonne.
    L'autre solution étant d'interpoler localement le tableau, mais bon, c'est pas forcément le mieux non plus.

  20. #20
    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
    Si Miles... Le problème va être celui d'une interpolation !
    Car soit tu discrètises ta droite (4 ou 8 connexité), soit il faut pondérer les coefficients (via une interpolation)...
    En tous cas, avec un peu de biblio... on s'en sort très bien!!!

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/03/2015, 15h31
  2. Calcul des coordonnées d'un point dans un plan à 2 dimensions
    Par Séléné dans le forum Mathématiques
    Réponses: 4
    Dernier message: 16/02/2010, 10h15
  3. Calcul de dérivées discretes dans l'espace
    Par nickoko dans le forum C
    Réponses: 33
    Dernier message: 19/06/2006, 16h03
  4. Calcul du temps passé dans les procédures ...
    Par Jloox dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/10/2005, 14h31
  5. codage du calcul de dérivée d'une fonction mathématique
    Par pispa2005 dans le forum Mathématiques
    Réponses: 5
    Dernier message: 08/01/2005, 20h54

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