Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2983 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  decomposer une image en le plus petit nombre de rectangles possible

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

decomposer une image en le plus petit nombre de rectangles possible

n°1376005
pospos
Posté le 27-05-2006 à 16:40:18  profilanswer
 

Bonjour,
 
Comme dit dans le titre, je cherche un algo pour decomposer une image en le plus petit nombre de rectangles (de couleur unie) possibles.
Ou disons un nombre suffisament petit.
En gros je cherche à decrire une image en utilisant des rectanlges de couleur unie, et de la maniere la plus compacte possible.
 
Evidemment le but n'est pas de decrire une image complexe genre jpeg de paysage, mais plutot des trucs genre graph ou autres images générées.
 
Si vous avez une idée ou une piste, ca m'interesse
merci
 
EDIT: petite precision: les rectangles ne peuvent pas se chevaucher. Par exemple une image representant une simple ligne verticale au milieu de l'image sera decrite par 3 rectangle: le fond à gauche de la ligne, la ligne, et le fond à droite.


Message édité par pospos le 27-05-2006 à 22:33:11
mood
Publicité
Posté le 27-05-2006 à 16:40:18  profilanswer
 

n°1376085
rnoizet
Posté le 27-05-2006 à 23:09:15  profilanswer
 

Tu peux faire un système qui ajoute à chaque rectangle de couleur unie existant une ligne ou une colonne de pixels adjascents au rectangle s'ils sont de la même couleur, en démarrant avec des rectangles de la taille d'un pixel de l'image.
Par contre, pour trouver la solution optimale, à mon avis ça ressemble à un problème NP-complet.


Message édité par rnoizet le 27-05-2006 à 23:09:55
n°1376088
pospos
Posté le 27-05-2006 à 23:24:11  profilanswer
 

ouai effectivement ca doit etre NP complet, un peu comme les trucs genre binpack.
 
Je pensais effectivement faire comme ca, en prenant des points de depart au pif, et en essayant de maximiser un rectangle à partir de ca.
Il me faudrait une solution "satisfaisante", pas forcement optimale.
Le but est de faire ca sur des images genre graph ou chart, donc avec normalement de beaux gros rectangle à aller chercher.

n°1376150
0x90
Posté le 28-05-2006 à 11:15:13  profilanswer
 

Tu peut déja classer les couleurs de l'image par nombre d'occurences dans l'image, ca te donnera une idée d'endroits ou commencer (la ou y'a les couleurs les plus présentes dans l'image)


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1376152
pospos
Posté le 28-05-2006 à 11:41:09  profilanswer
 

yep, bonne idée! merci

n°1377056
pfuitt
Posté le 29-05-2006 à 22:12:35  profilanswer
 

'alut
et une decomposition en quad-Tree c'est pas fait pour ca?
 
@pluche

n°1377132
pospos
Posté le 30-05-2006 à 00:25:50  profilanswer
 

ca consite à decouper l'image en 4, puis à continuer pour chaque region en s'arrettant des que la region est de couleur unie c'est ca?
 
Ouai c'est pas mal comme approche. Apres il faudrait faire une seconde passe pour eventuellement regrouper des carrée juxtant et de meme couleur dans deux zones differentes. Mais ca doit deja donner de bons resultat tels quels.
Je vais essayer ca.
merci

n°1377172
pfuitt
Posté le 30-05-2006 à 08:29:02  profilanswer
 

alut,
 
ouais cest tout a fait ca. Quand à la seconde passe je ne sais pas trop si elle est necessaire, dans la mesure où le critère de 'split' n'est pas respecté dans les cas de regions identiques.
 
@pluche

n°1377207
pospos
Posté le 30-05-2006 à 09:38:01  profilanswer
 

oui mais imagine le cas suivant:


l'image originale :
 
========
==----==
==----==
========
 
1er split :
 
==== ====
==-- --==
 
==-- --==
==== ====
 
2eme split (une des possibilités) :
 
====  ====
 
== -- -- ==
 
== -- -- ==
 
====  ====
 
la on a 12 zones, mais en regroupant des zones qui appartenaient à des zones differentes au split precedent on pourrait obtenir ca:
 
========
 
== ---- ==
== ---- ==
 
========
 
5 zones
 


Message édité par pospos le 30-05-2006 à 09:38:33
n°1377226
pospos
Posté le 30-05-2006 à 09:57:38  profilanswer
 

l'ideal serait de ne pas systematiquement split au milieu mais aux endroits de fort contraste (et pas trop eloignés du milieu tout de meme). Ca donnerait ca:
 


l'image originale :
 
========
==----==
==----==
========
 
1er split :
 
== ======
==
== ----==
== ----==
   ======
 
2eme split (une des possibilités) :
 
== ======
==
== ---- ==
== ---- ==
 
   ======
 
 
5 zones sans faire de seconde passe


 
mais bon, la c'est un cas simple
et puis ca demande à faire une passe avant chaque split, peut etre bcp plus couteuse qu'une passe finale


Message édité par pospos le 30-05-2006 à 10:01:49
mood
Publicité
Posté le 30-05-2006 à 09:57:38  profilanswer
 

n°1377425
pospos
Posté le 30-05-2006 à 12:01:35  profilanswer
 

d'un autre coté (j'y reviens par moments, au cours de la journée...) le fait d'ajuster les frontieres de split au mieux devrait permettre de reduire le nombre de recursions de split necessaires dans la plupart des cas

n°1377710
pfuitt
Posté le 30-05-2006 à 17:30:16  profilanswer
 

ca ca me fait penser à un algo utiliser pour la compression en couleur, ou tu splits les populations defacon a avoir le meme nombre d'elements des deux cotés de la frontiere....
mais la, en fait ca serai plutot un truc du genre split & merge qui faudrai utiliser.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  decomposer une image en le plus petit nombre de rectangles possible

 

Sujets relatifs
Zones réactives et remplacement d'une imageComment savoir si une image n'a pas été chargée???
Comment connaitre le nombre de char dans une fichier texte.txt[JS/DOM] Bug sous IE, l'image se s'affiche pas ! [RESOLU]
Petit logiciel qui ne fonctionne pas toujourspetit php
Delencher du code javascript sur une imagepetit probleme de selection multiple avec date
Génération d'image et update bdd - Pb incrémentimage en php
Plus de sujets relatifs à : decomposer une image en le plus petit nombre de rectangles possible


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR