quelqun connaitrait un algorithme permettant de decouper (rectangle)une partie d'une image binaire le plus precisement possible(au niveau du bit).
Merci.![]()
quelqun connaitrait un algorithme permettant de decouper (rectangle)une partie d'une image binaire le plus precisement possible(au niveau du bit).
Merci.![]()
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.
bien en fait il s'agit d'une image noir et blanc(codée sur un bit).le byte width est variable.
Toujours pas compris ce qu'il faut faire exactement...
Sans image, il est impossible de comprendre ce que tu cherches à faire...
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.
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) ):
ça répond à ta question ?
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
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.
Donne nous un exemple si tu veux être aidé, parce que tes explications ne sont pas assez claires![]()
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.
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 ?
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.
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!
ç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.
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.
é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.
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.
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)![]()
Partager