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 :

decoupe image en C


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Par défaut decoupe image en C
    quelqun connaitrait un algorithme permettant de decouper (rectangle)une partie d'une image binaire le plus precisement possible(au niveau du bit).

    Merci.

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    bonjour,

    tout dépend comment est codé ton image.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Par défaut decoupe image
    bien en fait il s'agit d'une image noir et blanc(codée sur un bit).le byte width est variable.

  4. #4
    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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Toujours pas compris ce qu'il faut faire exactement...

  5. #5
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Sans image, il est impossible de comprendre ce que tu cherches à faire...

  6. #6
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    normalement une image doit avoir une largeur et une hauteur, même si ta structure de stockage est un tableau à une seule dimension.
    Admettons que tu souhaites lire uniquement la zone compris dans :
    Xmin, Xmax, Ymin, Ymax avec X sur l'abscisse (horizontal) et Y sur l'ordonnée. Il te faudra quand même lire tout les pixel entre (0, Ymax) et (0, Xmax), puis ne garder que les pixels nécessaires.

    bonne continuation

    PS: si la réponse te convient, mar que le sujet comme résolu.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  7. #7
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    Le fait que ça soir une image binaire importe peu, ça c'est en quelque sorte ton problème.
    Ce qui est du ressort de l'algorithme c'est le découpage (ex d'un rectangle dont les coins sup gauche et inf droit sont (x,y) (x+Dx,y+Dy) ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    creer ImageBloc de taille Dx*Dy
     
    pour i allant de x à x+Dx
    pour j allant de y à y+Dy
      recopier ImageOrig(i,j) dans ImageBloc(i-x,j-y)
    finpour
    finpour
    ça répond à ta question ?

  8. #8
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Par défaut decupe image
    ceci ne repond pas vraiment à ma question,
    car la deccoupe byte par byte comme dans ton exemple(matieu)
    est simple mais quelque fois tu dois ne prendre (notmment dans les bords que quelque bits du byte et l'algorithme qui permet d'extraire que les bits qu'il faut qui m'intéresse.

  9. #9
    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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Donne nous un exemple si tu veux être aidé, parce que tes explications ne sont pas assez claires

  10. #10
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Par défaut decoupe image
    voila un exemple pour etre plus clair:

    Voici une image dont je veux couper le contenu du rectangle rouge.


    Et voici le resultat si je decoupe l'image octet par octet.



    comme vous la decoupe est imprécise, ceci est du au fait que la decouype se fait octet par octet et que donc je prend certains bits que je ne devrait pas prendre.La solution consisterai à faire la decoupe au bit pres et virer tous les points en dehors de ma selection.Et je me demandais s'il n'existait pas d'algorithmes specifique à ce probleme.

    Merci d'avance.

  11. #11
    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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Décalages lors de la saisie, c'est pas vraiment un problème algorithmique mais plutôt un problème d'implémentation avec un langage particulier, là non ?

  12. #12
    Membre chevronné Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par défaut
    Salut,

    si j'ai bien compris ton image est rendue en bit :

    - 0 : pixel noir
    - 1 : pixel blanc

    (Cela signifie que tu as 8 pixels par octet (ou par byte)).

    En es-tu bien sur parce qu'on distingue des niveaux de gris sur ton image ?

    Je pense que l'image affichée est l'image ou chaque groupe de tes 8 pixels bit (0 ou 1) a été interprété comme 1 pixel byte, d'ou les niveaux de gris artificiels résultants de cet assemblage involontaire ? Est-ce que je me trompe ? En gros l'image réelle devrait avoir des dimensions 8 fois plus grandes et n'être qu'en noir ou blanc ?

    Je pense que travailler au bit n'est pas bon. Tu dois surement recevoir cette image d'un scanner noir et blanc ou d'un autre périphérique non ?

    Tu devrais dés réception convertir ton image en byte, format traditionnel pour le travail sur l'image.

    Que veux-tu faire de ton image ensuite ?

    A+

    Flo.

  13. #13
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Par défaut decoupe image en C
    cette image n'est qu'un exemple pour mieux comprendre mon probleme.en realité l'image serait en noir et blanc.
    et chaque pixel corespond à un bit en memoire.
    je me retrouve donc avec un tableau de byte representant l'image.
    et tout ce que je demande c'est de savoir si il n'existe pas un algorithme de traitement d'image qui permet,via des décalages de bits
    de découper avec precision l'image sans avoir un bout en dehors du rectangle de selection.

    encore merci!

  14. #14
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    ça revient donc exactement à ce que j'ai marqué plus haut.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 154
    Par défaut
    moi en tout cas je comprends pas ta réponse donnée plus haut
    il est tout à fait possible de ne lire que la zone concernée, modulo les problemes de codage octets/bits.

  16. #16
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    étant donné que tu lis un fichier, il faut bien le parcourrir ce fichier.
    De plus tu as un Xmin, Xmax, Ymin, Ymax qui sont les limites de la zone que tu souhaites garder.
    Donc tu lis ton fichier et tu ne gardes que les bits qui sont dans cette zone.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  17. #17
    Membre chevronné Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par défaut
    C'est bien ce que j'ai dit donc.

    L'image que tu nous a présentée devrait être en noir et blanc et 64 fois plus grande (chaque dimension multipliée par 8 ).

    Travailler sur l'image en mémoire en bits ça va pas être propre du tout, à moins de faire un wrapper qui épargne à l'utilisateur de se taper la lecture / écriture des 8 pixels bits de chaque byte (avec décalage & co) (si vraiment j'y étais forcé je le ferais en c++ en utilisant les st::bitset).

    Et encore !!!

    Une image dans 99% des cas, sur un PC, ça se travaille en byte. Vouloir la travailler en bits c'est être un peu sadomazo. Et si c'est par soucis d'économie de mémoire, c'est bof bof !!!

    Si tu fais des opérations plus complexes ensuite, la lisibilité du code et sa compréhension risquent d'en pâtir.

    Et tu ne nous dis qu'est-ce que tu veux en faire après ? Si c'est juste pour impression papier, affichage, traitement ? (tu la reçois d'un scanner non ?)

    Dans tous les cas, tu ferais mieux de la passer en byte.

    Néanmoins, si tu veux vraiment rester en bits, fais un wrapper (pour la gestion des pixels bits) et ton problème devrait se résoudre de lui-même. Si tu dois faire des opérations compliqués, ta tâche en sera que plus aisée, si tu peux accéder aux pixels de ton images sans te préoccuper de savoir s'ils sont en bits, byte ou word. L'extraction de ta sub-image en deviendra triviale.

    A+

    Flo.

  18. #18
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Par défaut decoupe image en C
    En fait, il est primordial que la decoupe soit precise au bit pres pour les traitements que je dois faie par la suite.Donc je crois que je n'ai pas le choix je devrais me casseer la teteavec des "shift left" et co.
    Mais si quelqun a deja fait ca qu'il n'hesite pas a me monterer l'algo(en C)

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/07/2007, 09h28
  2. decouper une image (.png) avec c++
    Par MSM_007 dans le forum C++
    Réponses: 1
    Dernier message: 07/02/2007, 08h11
  3. decouper une image
    Par cobra85 dans le forum C++Builder
    Réponses: 1
    Dernier message: 06/02/2007, 09h59
  4. Decouper ou diviser une image en part egale
    Par cheval1902 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 10/04/2006, 13h49
  5. [Image]Decouper une image
    Par Elmilouse dans le forum 2D
    Réponses: 4
    Dernier message: 09/12/2004, 21h47

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