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

Traitement d'images Discussion :

Problème de level set avec gnuplot


Sujet :

Traitement d'images

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    informatique
    Inscrit en
    Juillet 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2011
    Messages : 27
    Par défaut Problème de level set avec gnuplot
    bonjour,
    j'ai fais un programme pour un problème level set mais je n'arrive pas à utiliser gnuplot pour avoir les image

    merci d'avance
    voilà projet.h


    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    \\\\\\\\\\\\\\\\\\\\\\\\\\\
    double fplus(double a,double b,double c,double d);
    double fmoins(double a,double b,double c,double d);
    double delta (double x,double y, double z);
     
     
    double u(double x, double y);
     
     
    double f(double x,double y, double z);
     
    double max (double a,double b);
    double min (double a,double b);
     
    FILE *projet;
    voilà projet.ccp

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 
     
     
     
    #include <fstream>
    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    #include "test.h"
    #include <string>
    #include <limits>
     
    using namespace std;
     
    double max (double a,double b)
    {
        if(a<b)
        {return b;}
        else
        {return a;}
    }
     
    double min (double a,double b)
    {
        return -max(-a,-b);
    }
     
    double fplus(double a,double b,double c,double d)
    {
     double m1=max(a,-b);
        m1=max(m1,0);
     
        double m2=max(c,-d);
        m2=max(m2,0);
     
     return sqrt(m1*m1+ m2*m2);
    }
     
    double fmoins(double a,double b,double c,double d)
    {
     double m1=min(a,-b);
        m1=min(m1,0);
     
        double m2=min(c,-d);
        m2=min(m2,0);
     
     return sqrt(m1*m1+ m2*m2);
    }
     
    double delta (double x,double y, double z)
    {return (x-y)/z;}
     
    double u(double x, double y)
    { double res;
    res = x*y;
    return res;
    }
    double f(double x,double y, double z)
    {return x*y + z;}
     
    int main()
    {
     
     int Nx=10;
     int Nt=10;
     int Ny=10;
     
     double X[10][10][10];
    double stepx=1.0/Nx;
    double stepy=1.0/Ny;
    double stept=1.0/Nt;
         double c;
     
     
     
    FILE *projet;
     
    projet=fopen("fin_projet.txt", "w");
     
     
    for(int i=0;i<10;i++)
    {
     for(int j=0;j<10;j++)
     {
     X[0][i][j]= u(i*stepx,j*stepy);
     }
    }
     
    for(int t=1;t<Nt;t++)
    {
     for (int i=1;i<Nx-1;i++)
     {
     for(int j=1;j<Ny-1;j++)
     {
     c= f(i*stepx, j*stepy, t*stept);
    if (c >= 0)
     
    {X[t][i][j]= X[t-1][i][j] + c* stept * fplus(delta(X[t-1][i+1][j],X[t-1][i][j],stepx),delta(X[t-1][i][j],X[t-1][i-1][j],stepx),delta(X[t-1][i][j+1],X[t-1][i][j],stepy),delta(X[t-1][i][j],X[t-1][i][j-1],stepy));}
    else
    {X[t][i][j]= X[t-1][i][j] + c* stept * fmoins(delta(X[t-1][i+1][j],X[t-1][i][j],stepx),delta(X[t-1][i][j],X[t-1][i-1][j],stepx),delta(X[t-1][i][j+1],X[t-1][i][j],stepy),delta(X[t-1][i][j],X[t-1][i][j-1],stepy));}
              cout<<t<<i<<j<<"    "<<X[t][i][j]<<endl; 
     
                            fprintf(projet,"10.0%f 10.0%f 10.0%f \n",t,i,j,X[t][i][j]);
     
     
     
     
     
     
     }
     }
     
    }
     
    fclose(projet); 
    }

  2. #2
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Donne nous plutôt le contenu de ton fichier "fin_projet.txt" qui contient le résultat, et comment tu as essayé d'en afficher le contenu avec gnuplot.

    Tu as un exemple d'utilisation dans la section "plotting data" de cet article sur gnuplot.

  3. #3
    Membre averti
    Femme Profil pro
    informatique
    Inscrit en
    Juillet 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2011
    Messages : 27
    Par défaut
    Citation Envoyé par liberforce Voir le message
    Donne nous plutôt le contenu de ton fichier "fin_projet.txt" qui contient le résultat, et comment tu as essayé d'en afficher le contenu avec gnuplot.

    Tu as un exemple d'utilisation dans la section "plotting data" de cet article sur gnuplot.
    AVEC il sort une page vide je sais pas pourquoi mais quand je fais avec excel sort un tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    ofstream fichier;
    fichier.open("schema_0.xls");
     
     
     
     
    for(int i=0;i<100;i++)
    {
     for(int j=0;j<100;j++)
     {
     X[0][i][j]= u(i*stepx,j*stepy);
     }
    }
     
    for(int t=1;t<Nt;t++)
    {
     for (int i=1;i<Nx-1;i++)
     {
     for(int j=1;j<Ny-1;j++)
     {
     c= f(i*stepx, j*stepy, t*stept);
    if (c >= 0)
     
    {X[t][i][j]= X[t-1][i][j] + c* stept * fplus(delta(X[t-1][i+1][j],X[t-1][i][j],stepx),delta(X[t-1][i][j],X[t-1][i-1][j],stepx),delta(X[t-1][i][j+1],X[t-1][i][j],stepy),delta(X[t-1][i][j],X[t-1][i][j-1],stepy));}
    else
    {X[t][i][j]= X[t-1][i][j] + c* stept * fmoins(delta(X[t-1][i+1][j],X[t-1][i][j],stepx),delta(X[t-1][i][j],X[t-1][i-1][j],stepx),delta(X[t-1][i][j+1],X[t-1][i][j],stepy),delta(X[t-1][i][j],X[t-1][i][j-1],stepy));}
              cout<<t<<i<<j<<"    "<<X[t][i][j]<<endl;
     }
     }}
     
     for (int i=0;i<100;i++)
     {
    	 for(int j=0;j<100;j++)
    	 {
    		fichier << X[0][i][j]<<endl;
    	 }
     }
     fichier.close();
     
    }

    mais quand j’utilise gnuplot> cd 'C:\Documents and Settings\NOM-EMAC\Mes documents\Visual Studio 2010
    \Projects\test_test\test_test'
    gnuplot> splot "schema_1.xls"

    ça sort pas un cercle
    [IMG]Bureau[/IMG]
    Images attachées Images attachées

  4. #4
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Je ne pense pas que gnuplot lise des fichier xls. Tu dois lui fournir des fichiers de données au format texte. Les valeurs pour un point se trouvent sur une ligne. Chaque point occupe une ligne. Les valeurs sont séparées par des espaces ou des tabulations (voir section "3.2. Plotting Data" de ce tutoriel ou la section "5. Fichiers de données" de cet autre tutoriel).

    Au passage, tu ne m'as toujours pas donné un exemple de fichier de données produit par ton programme...

  5. #5
    Membre averti
    Femme Profil pro
    informatique
    Inscrit en
    Juillet 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2011
    Messages : 27
    Par défaut BONJOUR
    Citation Envoyé par liberforce Voir le message
    Je ne pense pas que gnuplot lise des fichier xls. Tu dois lui fournir des fichiers de données au format texte. Les valeurs pour un point se trouvent sur une ligne. Chaque point occupe une ligne. Les valeurs sont séparées par des espaces ou des tabulations (voir section "3.2. Plotting Data" de ce tutoriel ou la section "5. Fichiers de données" de cet autre tutoriel).

    Au passage, tu ne m'as toujours pas donné un exemple de fichier de données produit par ton programme...
    J'ai mis le pdf , c'est l'image que je l'ai obtenue a partir de mon programme
    Images attachées Images attachées

  6. #6
    Membre averti
    Femme Profil pro
    informatique
    Inscrit en
    Juillet 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2011
    Messages : 27
    Par défaut bonsoir
    merci bien,
    j'ai essayé aussi de taper sur g-nu-plot pour avoir mon schéma à l'instant t=0
    et c'est bien il sort un cercle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    gnuplot> set contour
    gnuplot> set cntrparam levels discrete 50
    gnuplot> set xtics 0,0.01,1
    gnuplot> set ytics 0,0.01,1
    gnuplot> splot (x-0.5)**2 + (y-0.5)**2 -0.0625
    gnuplot>

    mais mon problème comment avoir les images après (t=1, t=2, ....)

Discussions similaires

  1. Problème avec GNUPLOT
    Par KTARIK dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 19/05/2014, 20h21
  2. problème avec GNUplot.exe
    Par mainak29 dans le forum Octave
    Réponses: 0
    Dernier message: 04/03/2011, 13h10
  3. problème avec gnuplot
    Par bouraouimed dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 07/02/2010, 15h16
  4. Problème std::set avec une structure
    Par DeathMixer dans le forum C++
    Réponses: 4
    Dernier message: 03/10/2009, 01h05
  5. Problème pour charger un set avec une clé étrangère
    Par sylvainv18 dans le forum Hibernate
    Réponses: 2
    Dernier message: 06/11/2006, 18h08

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