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 :

tri d'un tableau dynamique


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2011
    Messages : 12
    Par défaut tri d'un tableau dynamique
    Bonjour à tous !

    Deux petites questions:

    -Afin de réaliser un filtrage médian sur une image (en c++), j'aimerais trier un tableau dynamique à 2 dimensions (mon tableau de pixels). J'ai bien regardé dans tous ce qui est algo de tri rapide mais je vois pas du tout comment les implanter avec des tableaux dynamique.

    -Laquelles des écritures il faut privilégier pour définir un tableau dynamique à 2 dimensions ?

    -vector< vector<int> > tab;

    ou

    -**int tab;

    il y a une différence notable ?

    D'avance merci pour vos lumières !

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    L'allocation dynamique à la main int** va rapidement devenir inextricable pour assurer une garantie face aux exceptions. Je te le déconseille fortement.

    Si le nombre de colonnes par lignes est toujours le même, je me demande si un vecteur à plat (std::vector<int>(nbrLigne*nbrColonne)) ne serait pas préférable à un std::vector<std::vector>> (au - meilleur localité dans le premier cas).

    Je ne suis pas expert en traitement d'image, loin de là, mais à quoi sert ton tri ? Le filtrage médian ne consiste-t-il pas à prendre la moyenne des pixels autour de chaque pixel ? Quel rapport avec le tri ?

    Autre chose : n'existe-t-il pas de bibliothèque éprouvée faisant ce que tu souhaites ?

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    Sous OpenCV on peut le faire assez simplement :
    (je n'ai pas vérifié le code, c'est sûrement truffé d'erreurs)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include <opencv2/opencv.hpp>
     
    int main() {
    cv::Mat image_in = imread("image.jpg");
    cv::Mat image_out(image_in);
     
    cv::medianBlur(image_in, image_out, 3);
     
    cv::imshow("Resultat", image_out);
     
    return 0;
    }
    Construire une matrice sous OpenCV ?
    Filtrer cette matrice avec medianBlur ?

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2011
    Messages : 12
    Par défaut
    Bonsoir,

    Déjà merci de vos réponses et ensuite précisions :

    - Le truc s'inscrit dans le cadre d'un projet en cours d'informatique , exit l'utilisation des bibliothèques qui feraient (presque) tout le boulot à notre place Ce s'rait pas drôle sinon !

    -@ 3DArchi : ce que tu me décrits est le filtrage Moyen. Le filtrage Median, c'est attribuer au pixel traité la valeur médiane de son voisnage. D'où le tri. Bon c'est vrai, Median, Moyen... c'est jouer sur les mots mais c'est le jeu

    Alors pour le coup de la déclaration des tableaux dynamiques, j'ai commencé- et même bien avancé- avec ce que tu m'as déconseillé, les int**...
    C'est une erreur ou une faute ? J'veux dire, j'dois m'amuser à tout redéfinir ou le prof ne verra pas la différence ? Question d'élégance ? De quelles exception parles tu ?
    Mes tableaux dynamiques correspondent au matrice de l'image et sont globalement assez gentils ( de simple int en ligne et colonne quoi !)

    Enfin bref ça me résout pas la question du tri tout ça

  5. #5
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Qu'est-ce que tu entends par "valeur médiane de son voisinage" ?
    De plus, c'est un code C ou C++ que tu dois produire ? Car si c'est un code C++, je ne vois pas en quoi le fait d'utiliser la STL (pour vector) peut poser un problème, même à ton prof.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Citation Envoyé par dragonjoker59 Voir le message
    je ne vois pas en quoi le fait d'utiliser la STL (pour vector) peut poser un problème, même à ton prof.
    Il disait ça par rapport à OpenCV.

    Par contre, je vois toujours pas pourquoi tu veux trier. Trier comment, dans quel sens ? Quelle est la relation d'ordre entre les pixels ?

    A mon avis, c'est un filtre, pas un tri. Le mieux je pense est d'utiliser la solution proposée par 3DArchi. T' encapsules ça dans une classe qui va te représenter une matrice de pixels et le tour est joué.

    Ensuite tu auras ta matrice de départ, et ta matrice d'arrivée. Tu ne peux pas écrire directement dans la matrice de départ car tu as besoin de la valeur initiale du pixel sur lequel tu écris pour que l'algo fonctionne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Tri de données / Tableau Croisé Dynamique / Gestions des Doublons.
    Par arnachronox dans le forum Excel
    Réponses: 5
    Dernier message: 29/12/2014, 13h41
  2. Réponses: 2
    Dernier message: 06/09/2007, 15h08
  3. [Kylix] tableau dynamique
    Par sdoura2 dans le forum EDI
    Réponses: 1
    Dernier message: 31/10/2002, 08h57
  4. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43
  5. Réponses: 4
    Dernier message: 13/05/2002, 16h43

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