Déformation d'image par rapport à une sélection

Discussion de programmation pour éviter d'empiéter dans les autres forums

Modérateurs : Modérateurs, Développeurs

Benjamin
Membre d'honneur
Membre d'honneur
Messages : 1076
Inscription : 29 oct. 2003 14:53
Version de PhotoFiltre : 6.0
Système d'exploitation : Windows 2000 SP 4
Processeur : Pentium IV 2,4Ghz
Mémoire RAM : 512Mo DDR 333
Localisation : 21

Déformation d'image par rapport à une sélection

Message par Benjamin »

Je crée ce topic pour que l'on puisse discuter d'un éventuel algorithme de déformation d'image par rapport à une sélection...

Je compte sur toi Pf :wink:

Pour le moment je vois à peu près comment faire sur un seul axe mais avec les 2 en même temps j'ai un peu de mal...
Benjamin
pf
Développeur(se)|Développeur|Développeuse
Développeur(se)|Développeur|Développeuse
Messages : 974
Inscription : 28 avr. 2004 8:45
Version de PhotoFiltre : 6
Système d'exploitation : xp seven
Localisation : 78

Message par pf »

Salut,
Bin, j'ai déja réfléchis à ça et tous dépend de ce que l'on veut faire.
C'est un peut le même probleme que pour remplir une surface (tu sais les morceaux cachés qui doivent etre traités par recurence)
Pour une surface "simple" triangle, rectangle, élipse => Pas de Probleme
- Stretch sur la hauteur du masque
Puis balayage horizontal de chaque ligne du masque
-Compter le nombre de pixels interieur de chaque ligne de masque
-Stretch ligne a ligne et reposition sur le premier pixel interieur du masque

Pour les surfaces complexes (lignes s'arretant et repartant + loin), La, ca se gate :(
En procedant de la meme maniere, Il faut compter les "ilots" de chaque ligne et répartir les pixels a stretcher dans chaque "morceau de ligne"
........Ou quelque chose d'approchant :wink:
Si je ne suis pas assez clair, je t'envois un mail avec quelques "gribouillis", un dessin valant mieu qu'un long discourt :)
A+
Benjamin
Membre d'honneur
Membre d'honneur
Messages : 1076
Inscription : 29 oct. 2003 14:53
Version de PhotoFiltre : 6.0
Système d'exploitation : Windows 2000 SP 4
Processeur : Pentium IV 2,4Ghz
Mémoire RAM : 512Mo DDR 333
Localisation : 21

Message par Benjamin »

C'est en gros ce que j'ai commencé de faire...

Pour le moment je fais cette technique :

je calcule le point de l'image source en balayant horizontalement et une deuxième fois en balayant verticalement et je prend le milieu du segment

je suis assez surpris du résultat même si pour le moment je fais ca avec un cercle...
Benjamin
Antonio
Administrateur(trice)|Administrateur|Administratrice
Administrateur(trice)|Administrateur|Administratrice
Messages : 12731
Inscription : 28 oct. 2003 22:49
Contact :

Message par Antonio »

L'idée du double balayage me semble bonne, c'est à quoi j'avais pensé aussi. Peu être créer 2 images, une avec la déformation verticale puis horizontale. Ensuite interpoler les 2 ?
Benjamin
Membre d'honneur
Membre d'honneur
Messages : 1076
Inscription : 29 oct. 2003 14:53
Version de PhotoFiltre : 6.0
Système d'exploitation : Windows 2000 SP 4
Processeur : Pentium IV 2,4Ghz
Mémoire RAM : 512Mo DDR 333
Localisation : 21

Message par Benjamin »

Oui j'essaierai ca aussi en tout cas au niveau option je pense que y'aura balayage horizontal, vertical où les 2 en même temps!

Bon je verrai ca ce soir pour une première version!
Benjamin
Benjamin
Membre d'honneur
Membre d'honneur
Messages : 1076
Inscription : 29 oct. 2003 14:53
Version de PhotoFiltre : 6.0
Système d'exploitation : Windows 2000 SP 4
Processeur : Pentium IV 2,4Ghz
Mémoire RAM : 512Mo DDR 333
Localisation : 21

Message par Benjamin »

Je suis en train d'essayer de faire un mappage de l'image autour de la sélection

Mon problème est le suivante j'arrive pas à trouver un moyen satisfaisant de calculer une sélection réduite d'un certains nombre de pixels d'épaisseur...

En gros ce que je cherche c'est connaissant une épaisseur en pixel, et un tableau de points réprésentant la sélection calculer un 2ième tableau de points (avec autant de points que le premier) mais avec une sélection réduite (ou agrandie par la suite) de l'épaisseur donnée...

Si quelqu'un à une idée...

Merci d'avance
Benjamin
Antonio
Administrateur(trice)|Administrateur|Administratrice
Administrateur(trice)|Administrateur|Administratrice
Messages : 12731
Inscription : 28 oct. 2003 22:49
Contact :

Message par Antonio »

J'ai pas bien compris, est-ce que c'est l'équivalent de la fonction Selection/Contracter de PhotoFiltre ?
Benjamin
Membre d'honneur
Membre d'honneur
Messages : 1076
Inscription : 29 oct. 2003 14:53
Version de PhotoFiltre : 6.0
Système d'exploitation : Windows 2000 SP 4
Processeur : Pentium IV 2,4Ghz
Mémoire RAM : 512Mo DDR 333
Localisation : 21

Message par Benjamin »

Je pense que je cherche trop compliqué en fait... Je vais simplement réduire le rectangle global de la sélection (c'est ce que tu fais dans Selection/Contracter de PhotoFiltre ?)

En fait non ca ne donne pas le bon résultat pour des sélections complexes... (Pour des forme simple ca marche)

En fait ce qui se rappocherait le plus c'est le contour progressif la dernière couleur... (même si je pense pas que cela soit calculé de manière géométrique si?)
Benjamin
Antonio
Administrateur(trice)|Administrateur|Administratrice
Administrateur(trice)|Administrateur|Administratrice
Messages : 12731
Inscription : 28 oct. 2003 22:49
Contact :

Message par Antonio »

La fonction contracter fonctionne bien avec les formes complexes (baguette magique)

En fait je convertis la sélection en masque (noir et blanc), je contracte le masque et je convertis à nouveau ce masque en sélection.
C'est un peu tordu mais c'est efficace
Benjamin
Membre d'honneur
Membre d'honneur
Messages : 1076
Inscription : 29 oct. 2003 14:53
Version de PhotoFiltre : 6.0
Système d'exploitation : Windows 2000 SP 4
Processeur : Pentium IV 2,4Ghz
Mémoire RAM : 512Mo DDR 333
Localisation : 21

Message par Benjamin »

En fait sur cette image je n'obtient pas l'effet désiré (pour mon cas de figure) :

Image

J'ai utilisé la sélection puzzle05 en noir le contour de la sélection contractée (10 pixels) en vert la sélection que j'aimerais obtenir (à peu près) que j'ai obtenu ici à l'aide de la superbe fonction Contour Progressif...

Mais j'aimerais trouver un algo géométrique pour transformer la sélection vectorielle en conservant le même nombre de points...
Benjamin
pf
Développeur(se)|Développeur|Développeuse
Développeur(se)|Développeur|Développeuse
Messages : 974
Inscription : 28 avr. 2004 8:45
Version de PhotoFiltre : 6
Système d'exploitation : xp seven
Localisation : 78

Message par pf »

Je pige pas bien ton objectif :oops: (comment ça bouché :lol: )
Tu cherche à redimentionner (en vectoriel) une selection complexe :?:
Si c'est ça, je peut peut-etre t'aider
A+
Benjamin
Membre d'honneur
Membre d'honneur
Messages : 1076
Inscription : 29 oct. 2003 14:53
Version de PhotoFiltre : 6.0
Système d'exploitation : Windows 2000 SP 4
Processeur : Pentium IV 2,4Ghz
Mémoire RAM : 512Mo DDR 333
Localisation : 21

Message par Benjamin »

Ben je pensais que c'était clair avec l'image :(

En fait je cherche un algorithme permettant à partir d'une sélection d'obtenir une sélection ayant la même forme mais plus petite et toujours à l'intérieur de la grande...

Sur l'image la sélection de départ est en rouge celle que je veux obtenir est en vert (le contour biensur) et en noir celle obtenue Selection/Contracter qui dans ce cas de figure ne donne pas un bon résultat :(
Benjamin
Antonio
Administrateur(trice)|Administrateur|Administratrice
Administrateur(trice)|Administrateur|Administratrice
Messages : 12731
Inscription : 28 oct. 2003 22:49
Contact :

Message par Antonio »

C'est parce que la sélection puzzle est en mode polygone (vectoriel) et non baguette magique. Mais si tu fait un essai avec la baguette magique, ça doit marcher (c'est le même algo que pour le contour progressif).

En mode vectoriel c'est plus complexe car tu dois calculer le vecteur normal à chaque segment (ex tracé de contour avec epaisseur) c'est pour ça que j'ai laissé tomber et je fait une déformation de la boîte englobante dans le cas des sélections vectorielles.
Benjamin
Membre d'honneur
Membre d'honneur
Messages : 1076
Inscription : 29 oct. 2003 14:53
Version de PhotoFiltre : 6.0
Système d'exploitation : Windows 2000 SP 4
Processeur : Pentium IV 2,4Ghz
Mémoire RAM : 512Mo DDR 333
Localisation : 21

Message par Benjamin »

Oki ca m'arrange pas ca :'(

J'en étais effectivement arrivé au même points bidouillage avec les vecteurs normaux mais pour l'instant ca marche pas :'(

Si je comprend bien il s'agit d'un algorithme d'érosion en mode bitmap?
Benjamin
Benjamin
Membre d'honneur
Membre d'honneur
Messages : 1076
Inscription : 29 oct. 2003 14:53
Version de PhotoFiltre : 6.0
Système d'exploitation : Windows 2000 SP 4
Processeur : Pentium IV 2,4Ghz
Mémoire RAM : 512Mo DDR 333
Localisation : 21

Message par Benjamin »

Voici ce que ca donne en vectoriel :D (un désastre)

Image

En gros ca marche pas dans les pointes
Benjamin
Répondre