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

 C Discussion :

Lecture de tableau en C et erosion sur image


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 3
    Par défaut Lecture de tableau en C et erosion sur image
    Bonjour

    Je vous envoies un petit message car j'aurai besoin d'aide dans la réalisation d'un projet en C.
    Alors je dois realiser une fonction d'erosion , j'ai bien trouvé un algo pour le faire mais en C++
    http://www.developpez.net/forums/d32...on-dilatation/

    Alors je me suis mis dans la tete de faire ca en C , mais j'ai quelque difficulté .

    Je vous explique :
    On a une video en point de départ en YUV
    On la lis , dessus on applique un moyennage sur un certain nombre d'image , afin de séparer le fond , du mouvements.

    Et donc au final on a notre video mais on a des défaut , et la dessus je veus appliquer de l'erosion pour gommer tous ca

    Donc je dois faire une sorte de fonction comme ca

    Void erosion (int *** tab)
    //recois le tabeau qui contient les pixels de la video

    Apres comme il est dit dans le lien plus haut , j'ai besoin d'un kernel

    int k[2][2];
    k[0][0]=0;k[0][1]=1;k[0][2]=0;
    k[1][0]=1;k[1][1]=1;k[1][2]=1;
    k[2][0]=0;k[2][1]=1;k[2][2]=1;

    je le remplie comme il est dit .

    Mais c'est apres que je galere , j'ai un tableau en 3 dimension [nb_image][hauteur][largeur]

    Ce que je me suis dit , c'est que j'allais lire mon tableau , et remplir un autre tableau
    sur lequelle je recupere ma valeurs max ou min apres les calculs pour l'erosion .
    Et apres replacé le tout dans mon tableau .

    Qu'en penssez vous , es ce que je fais fausse route ou meme une idee serais la bienvenue


    Merci beaucoup

  2. #2
    Membre confirmé Avatar de sopsag
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 224
    Par défaut
    Je ne comprends pas bien ce que tu dis là :
    Ce que je me suis dit , c'est que j'allais lire mon tableau , et remplir un autre tableau
    sur lequelle je recupere ma valeurs max ou min apres les calculs pour l'erosion .
    Et apres replacé le tout dans mon tableau .
    Mais en tous cas, mon premier conseil est d'écrire une fonction qui fait de l'érosion sur une seule image et d'éviter ton tableau à 3 dimensions.
    Peut être que ta machine dispose de beaucoup de mémoire, mais là, à moins d'avoir une vidéo microscopique, tu vas rapidement tout faire exploser...
    De toutes façons, il faut toujours appliquer le grand précepte de la programmation :
    diviser pour régner !
    En clair, il faut diviser le problème que tu veux résoudre en fonctions atomiques qui voient chacune le moins possible de données, plutôt que d'avoir une grosse fonction qui prend tous les paramètres du problème et qui fait tout.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 3
    Par défaut
    Salut merci de ta réponse

    Voila ce que j'ai fais pour l'instant
    je crois que j'ai pas du tout diviser comme tu me conseillais

    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
    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
     
    void erosion (int ***tab,int nbImg,int height,int width)
    {
    // le Kernel servant a l'erosion
     
    int k[2][2];
    int k_temp[2][2];
    int a,b,c,d,e,f,g,h;
     
    int x,y,z,max;
    k[0][0]=0;k[0][1]=1;k[0][2]=0;
    k[1][0]=1;k[1][1]=1;k[1][2]=1;
    k[2][0]=0;k[2][1]=1;k[2][2]=1;
     
    int mod_largeur;
    int mod_hauteur;
     
    // on passe les boucles 
     
    mod_hauteur = (int)height/3;
    mod_largeur = (int)width/3;
    int passage_largeur;
    int passage_hauteur;
    int max[10];
    maxx=0;
    a=1;
    b=1;
    //while (passage_largeur<mod_largeur){
    //while  (passage_hauteur<mod_hauteur){
    while (a<3){
    while (b<3){
    	for(d=0;d<2;b++){
            k_temp[c][d]=tab[c][d];
    */if (max<k_temp[c][d]){
    max=k_temp[c][d];
    }
    */
     
     
    	c++;
    for (e=0;e<10;e++){
    max[e]=k_temp[1][1]-k[0][0]*k_temp[0][0];
    max[e]=k_temp[1][1]-k[0][1]*k_temp[0][1];
    max[e]=k_temp[1][1]-k[0][2]*k_temp[0][2];
    max[e]=k_temp[1][1]-k[1][0]*k_temp[1][0];
    max[e]=k_temp[1][1]-k[1][1]*k_temp[1][1];
    max[e]=k_temp[1][1]-k[1][2]*k_temp[1][2];
    max[e]=k_temp[1][1]-k[2][0]*k_temp[2][0];
    max[e]=k_temp[1][1]-k[2][1]*k_temp[2][1];
    max[e]=k_temp[1][1]-k[2][2]*k_temp[2][2];
     
    }
    for (e=0;e<10;e++){
    if (max[e]<maxx){
    maxx=max[e];
    }
    }
     
     
     
    	a++;
    	b++;
    	//passage_largeur++;
    	}
    }
    }

    C'est pas tres clair comme code et je doute que ca marche a vrai dire ...

    En plus je vois pas trop comment maintenant mettre ma valeur max dans mon premier tableau , enfin de le faire de maniere automatiser ...

Discussions similaires

  1. [Upload] droit lecture sur image uploadée
    Par Mitaka dans le forum Langage
    Réponses: 2
    Dernier message: 23/02/2006, 11h52
  2. Réponses: 3
    Dernier message: 05/02/2006, 22h59
  3. erreur de lecture de tableau incompréhensible
    Par Anouschka dans le forum C++
    Réponses: 2
    Dernier message: 27/01/2006, 13h40
  4. C++ et lecture de tableau
    Par ero-sennin dans le forum C++
    Réponses: 17
    Dernier message: 31/10/2005, 23h42
  5. Réponses: 9
    Dernier message: 15/09/2005, 16h13

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