Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2012-12-11 06:05:46 Application d'une homothétie à une vidéo

Zab
nouveau membre
Date d'inscription: 2012-12-11
Messages: 7

Application d'une homothétie à une vidéo



Bonjour à tous

Je débute en pure data, et je cherche à appliquer une transformation (homothétie) à une vidéo issue d'une webcam. J'ai trouvé comment utiliser la webcam et utiliser ses frames pour du traitement d'image. En revanche je ne trouve pas d'outil qui me semble adapté pour changer les valeurs (R G B) d'un pixel en position (i, j). Il y a bien les objets pix_set ou pix_dump, mais (si j'ai bien compris la doc), ils ne permettent pas de choisir précisement la position du pixel à modifier...

Quelqu'un aurait une idée?

Hors ligne

 

#2 2012-12-11 08:30:16 Re : Application d'une homothétie à une vidéo

Zab
nouveau membre
Date d'inscription: 2012-12-11
Messages: 7

Re: Application d'une homothétie à une vidéo



homographie, pas homothétie...
(désolée)

Hors ligne

 

#3 2012-12-11 10:46:47 Re : Application d'une homothétie à une vidéo

pob
Exterminator
Lieu: Rennes
Date d'inscription: 2009-10-13
Messages: 765
Site web

Re: Application d'une homothétie à une vidéo



Bienvenue,

[pix_data] va te permettre de lire les valeurs d'un pixel en particulier. Pour écrire, comme objet tout fait, je ne vois pas.

Il y a sans doute un truc à faire avec des shaders, c'est une autre programmation qui va être encapsulée dans ton patch et qui, sur un ordi avec une vraie carte graphique sera bien plus performant.
Il y a un sujet assez long avec pas mal d'infos à trier sur la même rubrique du forum.


Une autre façon de faire serait d'utiliser gridflow.
http://artengine.ca/gridflow/

Dernière modification par pob (2012-12-11 10:48:53)

Hors ligne

 

#4 2012-12-11 12:17:19 Re : Application d'une homothétie à une vidéo

Zab
nouveau membre
Date d'inscription: 2012-12-11
Messages: 7

Re: Application d'une homothétie à une vidéo



Merci pour ta réponse rapide!
Je viens d'installer Gridflow, je vais voir ce que je peux faire avec. Tu sais s'il y a une doc quelque part? Je ne l'ai pas trouvé sur le lien que tu m'as passé.

Hors ligne

 

#5 2012-12-11 12:25:20 Re : Application d'une homothétie à une vidéo

pob
Exterminator
Lieu: Rennes
Date d'inscription: 2009-10-13
Messages: 765
Site web

Re: Application d'une homothétie à une vidéo



C'est assez complet dans les fichiers d'aide. Il y a notamment un patch nommé "index.pd" dans "extra/gridflow/doc/" qui fait l'inventaire des différentes fonctions et autres trucs concernant gridlfow.


S'il y a de gros traitements à faire, ce n'est pas la solution idéale. Pour Windows il y a des limitations assez importantes.
Ca dépend un peu de ce que tu veux faire en pratique...

Hors ligne

 

#6 2012-12-11 12:32:49 Re : Application d'une homothétie à une vidéo

Zab
nouveau membre
Date d'inscription: 2012-12-11
Messages: 7

Re: Application d'une homothétie à une vidéo



En fait, j'ai une matrice d'homographie que j'aimerais appliquer a une image. Normalement je fais ça en appliquant ma transformation a chaque coordonnée de pixel (produit matriciel), mais je n'ai pas encore trouvé comment récupérer les coordonnées d'un pixel, les multiplier, puis replacer mon pixel sur l'image. Je ne sais pas si c'est considéré comme un 'gros traitement'?
Je vais regarder le patch d'index. Merci encore.

Hors ligne

 

#7 2012-12-11 12:43:46 Re : Application d'une homothétie à une vidéo

pob
Exterminator
Lieu: Rennes
Date d'inscription: 2009-10-13
Messages: 765
Site web

Re: Application d'une homothétie à une vidéo



[pix_multiply] si tu as ta matrice de traitement déjà sous forme d'image aux même dimensions que celle de ta webcam. Là aussi c'est lourd en calcul pour un truc nettement plus efficace avec les shaders.

En fait la question essentielle, c'est d'où sortent tes coefficients (image statique ou flux d'image) ou suite de valeurs calculées tirées d'une autre flux de données.
Ca ne sert à rien de faire des conversions inutiles.

Hors ligne

 

#8 2012-12-11 13:00:22 Re : Application d'une homothétie à une vidéo

Zab
nouveau membre
Date d'inscription: 2012-12-11
Messages: 7

Re: Application d'une homothétie à une vidéo



En fait, ma matrice d'homographie H est une matrice 3x3 que je calcule une fois pour toute avec un autre programme (matlab).
Pour appliquer mon homographie a une image dans puredata, j'ai besoin de changer la place de chacun des pixels de mon image pour leur attribuer leur nouvelle place après application de l'homographie. En gros, pour chaque pixel (i,j) de mon image, l'opération a effectuer est:

[i]       [ h1  h2  h3]       [i']
[j]   x  [ h4  h5  h6]  =   [j']
[1]      [ h7  h8  h9]       [1]


Ca se voit peut-être pas, mais ce sont des vecteurs et une matrice.
Je dois donc calculer les nouvelles coordonnées (i', j') de mon pixel, et écrire la valeur de ce pixel à ces coordonnées (i', j') dans ma nouvelle image.

J'espère que j'arrive à être claire...

Hors ligne

 

#9 2012-12-11 13:19:53 Re : Application d'une homothétie à une vidéo

pob
Exterminator
Lieu: Rennes
Date d'inscription: 2009-10-13
Messages: 765
Site web

Re: Application d'une homothétie à une vidéo



OK, tu fais un produit matriciel sur les coordonnées et non pas sur les couleurs.

Franchement, regarde les shaders, ça ne fera qu'une bouchée des calculs. C'est fait pour faire du calcul matriciel en vidéo.
http://codelab.fr/2897

Hors ligne

 

#10 2012-12-11 14:43:25 Re : Application d'une homothétie à une vidéo

nononononono
membre
Lieu: Toulouse
Date d'inscription: 2011-02-04
Messages: 614

Re: Application d'une homothétie à une vidéo



Yop,

Ca marche aussi très bien avec gridflow, c'est fait aussi pour ça...Les exemples sont un peu compliqués, mais prends waves par ex.

Ceci étant, pour les shaders, à ma connaissance en tout cas, on ne peut pas faire passer de matrice en arguments uniform.
l'astuce étant qu'une matrice de 3 par 3 peut être interprétée comme un tableau de 3 vec3.
NB : pour ce genre de calcul, mieux vaux utiliser texture2DRect et connaitre la taille de l'image. Donc [rectangle 1< sur ton objet texture.

Question : à quoi correspond ton [1]?

Hors ligne

 

#11 2012-12-11 19:36:15 Re : Application d'une homothétie à une vidéo

Zab
nouveau membre
Date d'inscription: 2012-12-11
Messages: 7

Re: Application d'une homothétie à une vidéo



Salut,

Le [1] dans les vecteurs de coordonnées correspond à la coordonnée homogène, en gros juste une variable supplémentaire qui me permet d'utiliser d'appliquer des matrices 3x3 à des vecteurs normalement 2x2. Elle est liée aux deux autres, ainsi le système a bien 2 degrés de liberté, et non 3.

Au passage, je me suis plantée dans mon produit matriciel dans le message plus haut, c'est plutot:

[ h1  h2  h3]      [i]       [i']
[ h4  h5  h6]  x  [j]   =  [j']
[ h7  h8  h9]      [1]      [1]

Pour l'instant je suis un peu perdue dans Gridflow, mais je vais étudier waves de plus près. J'aimerais éviter les shaders, OpenGl n'est pas installé sur mon PC.

Merci beaucoup pour vous réponses en tout cas!

Hors ligne

 

#12 2012-12-13 00:46:35 Re : Application d'une homothétie à une vidéo

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: Application d'une homothétie à une vidéo



citation :

OpenGl n'est pas installé sur mon PC.

Si ta carte graphique supporte l'OpenGL, je ne crois pas que tu aies besoins de l'installer...
Saches par ailleurs que GEM fonctionne en OpenGL, donc il vaudrait mieux, shader ou pas, que ta carte graphique gère cela...

Sinon, ce que tu essayes d'obtenir me semble assez accessible avec Processing...
Es-tu obligé d'utiliser Pd ?


L'Amour au Peuple !

Hors ligne

 

#13 2012-12-13 13:12:29 Re : Application d'une homothétie à une vidéo

oli44
membre
Lieu: Notre Dame des Landes
Date d'inscription: 2008-04-25
Messages: 585
Site web

Re: Application d'une homothétie à une vidéo



Par rapport à openGL, tu veux dire que ta carte graphique ne le gère pas ou que tu n'as pas les drivers permettant d'en tirer parti?

Concernant le fond du problème, es-tu allé voir du côté d'iemmatrix? il y a énormément d'objets pour le calcul matriciel (sans devoir passer par une install de Gridflow, c'est dans pd-extended).

Olivier: c'est autant accessible avec Pd que Processing ce genre de pb!!!


La route est longue mais la voie est libre

Hors ligne

 

#14 2012-12-13 21:13:31 Re : Application d'une homothétie à une vidéo

nononononono
membre
Lieu: Toulouse
Date d'inscription: 2011-02-04
Messages: 614

Re: Application d'une homothétie à une vidéo



Mhh, je suis d'avis avec olivier sur processing du coup, car si pc ( donc windows je suppose) alors pb compatibilité GEM->Gridflow (conversion pix->matrice).
Le travail avec iemmatrix, oui, mais comment faire passer les pixels dans un tableau 3d ( pix-dump? pix-data? ça sent la bidouille) en fait pure data a des pointeurs pour les nombres les caractères, les listes, les tableaux à 1 dim, mais pas  au delà, du moins pas nativement (ce que fait chacun à sa manière gridflow, iemmatrix, et les pix-obj et les pdp, mais pas du tout harmonisés entre eux, c'est pour ça qu'il y a des pix2pdp, #to-pix etc...mais j'ai pas vu de pix2iem par exemple).
Zab, teste dans les exemples Gem simple_texture.pd , on sait jamais si ça marche c'est que tout est installé (je parle d'openGL+glsl)...
Sinon je rejoins l'avis Olivier, à savoir passer sous linux (pour compatibilité gridflow) ou essayer sous processing qui est pour le coup vraiment adapté (et relativement simple) pour faire du travail matriciel.

Dernière modification par nononononono (2012-12-13 21:15:36)

Hors ligne

 

#15 2012-12-14 11:03:07 Re : Application d'une homothétie à une vidéo

Olm-e
membre
Lieu: Bruxelles
Date d'inscription: 2011-11-15
Messages: 84
Site web

Re: Application d'une homothétie à une vidéo



hello,
je suis justement en train de travailler sur un problème similaire, à savoir refaire un "wiiwhiteboard" avec pd,
donc je cherche à faire une homographie entre le plan déterminé par les points de repère et une surface dans GEM,

personellement je ne suis pas parti sur le transformation de chaque pixel mais plutôt sur celle d'un plan texturé (on modifie les coins du quadrilatère )
est-ce que ce n'est pas une manière plus simple de faire ce calcul ?

pour calculer l'homographie j'ai du faire une bidouille en python, parce que je ne suis pas arrivé à obtenir les bonnes transformations de matrice avec iemmatrix ... problèmes de dimention de matrice et d'ordres des opérations que je n'arrive pas à résoudre.

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024