3D-Diablotine.com
Nous sommes actuellement le Lun 11 Déc 2017, 18:22




Publier un nouveau sujet Répondre au sujet  [ 19 messages ]  Aller à la page 1, 2  Suivant
 mise à plat d'image cylindrique 
Auteur Message
Administrateur
Administrateur
Avatar de l’utilisateur

Inscrit le: Lun 26 Mai 2008, 16:38
Messages: 12733
Localisation: Isère - Jura
Message mise à plat d'image cylindrique
sur mes images "whisky", j'ai souvent évoqué les problèmes de récupération de textures, le support étant cylindrique et donc source de déformations, ce qui rend l'assemblage difficile : viewtopic.php?p=185136#p185136

il y a bien sûr la solution de décoller puis scanner les étiquettes, mais le résultat est parfois complètement pourri (on déchire tout, ça gondole...)

je me suis penché sur le sujet et ai "pondu" (cooot ! ) un script PHP qui, à partir d'une image donnée, la remet à plat.

Image

:arrow: le résultat n'est évidemment pas exploitable en l'état, il faudra encore passer par une correction des perspectives horizontales, et assembler plusieurs photos.

mais l'assemblage devrait être facilité, chaque pixel de l'image obtenue ayant enfin (si je ne suis pas gourré dans mes calculs) la même largeur "réelle" que ses voisins, alors que sur la photo source, les pixels sur les bords gauche et droit étant proches des contours de la bouteille, ils "valent" parfois l'équivalent de 15 ou 20 pixels s'ils étaient pris de face.

il me reste à faire un emballage un peu plus esthétique, même minime, et surtout un contrôle (de sécurité) des fichiers uploadés, et je pourrai le mettre sur mes pages persos, pour en faire ce que vous voulez ;-)

_________________
Image     Image
Image  Image


Mer 11 Sep 2013, 13:53
Profil Site Internet
Administrateur
Administrateur
Avatar de l’utilisateur

Inscrit le: Lun 26 Mai 2008, 16:38
Messages: 12733
Localisation: Isère - Jura
Message Re: mise à plat d'image cylindrique
quelques explications, si ça intéresse quelqu'un :roll:

je suis donc parti sur l'idée du script suivant :

Image

1 : j'ai une image qui correspond à la moitié visible d'un cylindre, donc un demi cercle, d'une largeur connue

2 : de cette largeur, je calcule celle de l'image "dépliée", merci Monsieur Pi

3 : je considère que chaque pixel est une "tranche" projetée depuis l'axe X vers le demi-cercle ayant une largeur fixe

4 : la projection de ces tranches me donne 2 cosinus (de -1 à gauche à +1 à droite)

5 : à partir de ces cosinus, je calcule l'angle alpha de l'arc correspondant à ma tranche.
par exemple, pour une image de 20 pixels de large, chaque pixel vaut 0.1 sur l'axe des abcisses.
le 2ème pixel ici illustré couvre donc l'arc de de cos(-0.9) à cos(-0.8)

6 : ayant mon arc, je calcule le pourcentage qu'il occupe sur les 180° du demi-cercle.
par exemple, un arc de 45° vaut 25% de l'image.
les pixels aux bords gauches et droit, très étirés, valent donc beaucoup plus que ceux du milieu ayant un étirement proche de zéro.

7 : je copie le pixel sur ma nouvelle image, en l'étirant en largeur si besoin est en respectant le pourcentage calculé.


j'ai préalablement détaillé chaque étape des calculs sur Excel, ce qui donne ceci pour une image source de 32 pixels de large : ça donne une idée des calculs nécessaires pour une image de 2000 ou 3000 pixels de large :-o

Image

chaque ligne correspond à 1 pixel, numérotés de 0 à 31, les dernières colonnes indiquant son point de départ et la largeur à laquelle il doit être étiré pendant la copie.



l'image générée plaquée sur un demi-cylindre ne présente plus de déformation du texte, hormis sur les bords : il faudra tout de même assembler des photos !

Image

_________________
Image     Image
Image  Image


Mer 11 Sep 2013, 14:26
Profil Site Internet
Modérateur
Modérateur
Avatar de l’utilisateur

Inscrit le: Mar 13 Sep 2005, 21:28
Messages: 4161
Localisation: la Terre... enfin je crois...
Message Re: mise à plat d'image cylindrique
Ce que tu fais est méritoire, mais il y a encore beaucoup de taf sur l'image avant d'avoir quelque chose de correct à appliquer sur l'objet.

Maintenant, je ne suis pas un pro de photoshop ou autre, et c'est plus facile à faire que ça ne me le paraît être (je parle de la correction post script).

Je me demande s'il n'est pas préférable et plus facile de prendre des photos autour et de faire un montage.

L'appareil fixe, la bouteille sur un pivot.

_________________
L'Intelligence Artificielle n'a aucune chance en face de la Stupidité Naturelle !

Image


Mer 11 Sep 2013, 16:44
Profil
Administrateur
Administrateur
Avatar de l’utilisateur

Inscrit le: Lun 26 Mai 2008, 16:38
Messages: 12733
Localisation: Isère - Jura
Message Re: mise à plat d'image cylindrique
tu n'as pas tout lu ^^

j'ai bien précisé qu'il faut faire plusieurs photos et les assembler, car les contours sont trop étirés pour être utilisables. (je vais éditer le message et le mettre en gras ^^ )

mais l'assemblage de photos ainsi étirées n'est pas facile, car l'image est "plate" sur quelques pixels au centre de l'image puis, insidieusement, pixel par pixel, se contracte progressivement vers les extérieurs (en suivant la courbe à 180° du demi-cercle)

ce script ne servira qu'à faciliter (je l'espère) l'assemblage, en supprimant la déformation cylindrique vers l'arrière.

c'est pas faute d'avoir essayé, mais 3 ou 5 photos ne suffisent pas : si on veut ne garder que les "tranches propres" du milieu de chaque photo, il faut 8, 10...15 photos !

et dans tous les cas, bonjour l'assemblage !! :2gunfire: avec entre autre :
- les différences de luminosité : c'est arrondi, donc l'ombrage varie en permanence,
- les problèmes de centrage de l'objet : il faut que le pivot soit exactement au centre, sinon la bouteille avance/recule par rapport à l'APN, ce qui change la focale... et donc les perspectives, très légèrement mais suffisamment pour avoir des raccords foireux
- les problèmes de réflexions : y'a souvent des dorures sur les étiquettes de bouteilles de whisky, donc selon la rotation, elles changent et donnent des zones difficilement exploitables.
- ... et le problème de contraction cylindrique !!! ça sera déjà ça en moins.

Je j'ai trouvé aucun soft d'assemblage panoramique qui sache assembler dans ce sens là !
Les panoramiques de paysages, y'en a à la pelle ! Les panoramiques d'objets (photo "VR"), y'a pas. :2gunfire:

Les solutions proposées pour le VR sont de faire 15 ou 20 photos autour de l'objet, et un script JS ou Flash les affiche selon le mouvement de souris, pour donner une impression de rotation : aucun soft n'assemble réellement les photos pour réellement la faire pivoter, comme c'est le cas pour les panoramiques 360° de paysages.

Ce qui semble logique car comment prendre une photo continue autour d'un objet ???
On ne peut pas ! A part sur un cylindre... mais visiblement personne n'a pris le temps de développer un soft qui fasse ça.

Enfin si, on peut, mais ça donne des résultats "abstratico-fantastico-artistique" qui ne collent pas avec la création de textures, car la qualité est assez faible

_________________
Image     Image
Image  Image


Mer 11 Sep 2013, 17:11
Profil Site Internet
Modérateur
Modérateur
Avatar de l’utilisateur

Inscrit le: Mar 13 Sep 2005, 21:28
Messages: 4161
Localisation: la Terre... enfin je crois...
Message Re: mise à plat d'image cylindrique
Et ben je ferai des bouteille sans étiquettes, na ! ^^

_________________
L'Intelligence Artificielle n'a aucune chance en face de la Stupidité Naturelle !

Image


Mer 11 Sep 2013, 18:54
Profil
Administrateur
Administrateur
Avatar de l’utilisateur

Inscrit le: Lun 26 Mai 2008, 16:38
Messages: 12733
Localisation: Isère - Jura
Message Re: mise à plat d'image cylindrique
oh t'as bien raison, c'est la partie la plus plaisante à faire... les étiquettes c'est chiant ! :crash:

_________________
Image     Image
Image  Image


Mer 11 Sep 2013, 19:37
Profil Site Internet
Modérateur
Modérateur
Avatar de l’utilisateur

Inscrit le: Ven 7 Mar 2008, 11:23
Messages: 8129
Localisation: Forêt d'Orient
Message Re: mise à plat d'image cylindrique
Du coup, tu as été contraint de faire de la trigo ! :mrgreen:

J'ai peut-être une autre solution...

Avec Bryce... Si si...

Image

Tu crées un cylindre, tu appliques ton étiquette en projection "objet front" Ambiance à fond. Tu positionnes la caméra au centre du cylindre et fait en rendu en 360°... et voilà... :mrgreen:

_________________
Image


Mer 11 Sep 2013, 21:22
Profil
Administrateur
Administrateur
Avatar de l’utilisateur

Inscrit le: Lun 26 Mai 2008, 16:38
Messages: 12733
Localisation: Isère - Jura
Message Re: mise à plat d'image cylindrique
:shock: :shock:

faut voir si la déformation est équivalente, mais c'est carrément pas con du tout ça !!! chapeau pour l'idée :clap: :bravo:

surtout que l'AA de Bryce étant particulièrement efficace - à défaut d'être rapide - ça donnerait des images bien plus propres que mon script qui copie par bandes de pixels... Je testerai ça comme il faut !

_________________
Image     Image
Image  Image


Mer 11 Sep 2013, 21:55
Profil Site Internet
Modérateur
Modérateur
Avatar de l’utilisateur

Inscrit le: Ven 7 Mar 2008, 11:23
Messages: 8129
Localisation: Forêt d'Orient
Message Re: mise à plat d'image cylindrique
:cobra:

Normalement, ça devrait être bon en tout cas à l'horizontal... il y a peut-être un déformation verticale...

Mon idée initial était l'export du cylindre mais les exports dans Bryce, c'est vraiment pas terrible... disons que ça ne marche pas du tout...

La difficulté c'est de bien cadrer la photo initiale, non ? :roll:

_________________
Image


Jeu 12 Sep 2013, 07:49
Profil
Administrateur
Administrateur
Avatar de l’utilisateur

Inscrit le: Lun 26 Mai 2008, 16:38
Messages: 12733
Localisation: Isère - Jura
Message Re: mise à plat d'image cylindrique
oui j'y ai pensé, les panos 360° utilisent une projection spherical map au ratio 2:1.
Celle de Bryce est tronquée en vertical, il manque le centre des zenith et nadir (c'est en gros du 360°x160°, et non 360°x180°) :

Image

donc ce qu'on corrige en déformation horizontale sera peut-être converti en déformation verticale... bon, à tester.

_________________
Image     Image
Image  Image


Jeu 12 Sep 2013, 08:22
Profil Site Internet
Administrateur
Administrateur
Avatar de l’utilisateur

Inscrit le: Lun 26 Mai 2008, 16:38
Messages: 12733
Localisation: Isère - Jura
Message Re: mise à plat d'image cylindrique
bon, c'était un script en ligne, écrit en PHP : fonctionnel mais bouffe trop de ressources processeur, je ne voulais pas le mettre en ligne sur mes pages persos, ça serait un coup à faire suspendre mon compte pour abus de ressources.

du coup j'ai repris la structure du script (un traitement colonne par colonne de pixels de l'image) et suis en train de le porter sur AutoIt, afin d'en faire un exécutable, pour un usage local hors-ligne, avec la librairie FreeImage.

l'interface est terminée, le script fonctionne, il faut que je gère encore quelques détails (l'écrasement ou non ds fichiers existants, ça peut être embêtant si c'est pas voulu) et que je fasse le fichier texte pour tout le blabla habituel.

je pourrai sûrement mettre en ligne une version beta ce soir, avant la version finale d'ici quelques jours (packaging, setup d'install, toussi toussa).

hop ! :-o

_________________
Image     Image
Image  Image


Jeu 12 Déc 2013, 14:36
Profil Site Internet
Modérateur
Modérateur
Avatar de l’utilisateur

Inscrit le: Ven 7 Mar 2008, 11:23
Messages: 8129
Localisation: Forêt d'Orient
Message Re: mise à plat d'image cylindrique
:-D Super !

_________________
Image


Jeu 12 Déc 2013, 22:16
Profil
Modérateur
Modérateur
Avatar de l’utilisateur

Inscrit le: Mer 22 Aoû 2007, 16:45
Messages: 9984
Localisation: varoisvaroisvarois, na
Message Re: mise à plat d'image cylindrique
en packaging cylindrique forcemment ;-)

_________________
Image


Ven 13 Déc 2013, 13:24
Profil Site Internet
Administrateur
Administrateur
Avatar de l’utilisateur

Inscrit le: Lun 26 Mai 2008, 16:38
Messages: 12733
Localisation: Isère - Jura
Message Re: mise à plat d'image cylindrique
ça serait une idée :mrd:

_________________
Image     Image
Image  Image


Ven 13 Déc 2013, 19:09
Profil Site Internet
Administrateur
Administrateur
Avatar de l’utilisateur

Inscrit le: Lun 26 Mai 2008, 16:38
Messages: 12733
Localisation: Isère - Jura
Message Re: mise à plat d'image cylindrique
téléchargement de la version 1.0.0 portable (pour Windows, comme d'hab)

:arrow: http://mithril94.free.fr/applis/c2c/cyl2cube_v1.0.0.zip

merci de vos retours pour ceux qui testeront :-o

il faudra aussi que je fasse un petit tuto pour accompagner, car il faut préalablement préparer les images à traiter. J'indique le minimum dans l'aide, quelques images d'illustration en plus ne seront pas du luxe.

_________________
Image     Image
Image  Image


Ven 13 Déc 2013, 19:46
Profil Site Internet
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 19 messages ]  Aller à la page 1, 2  Suivant


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Sauter vers:  

3D-DIABLOTINE.COM © 2002 - 2015 | Reproduction totale ou partielle interdite



Powered by phpBB © phpBB Group | Translated by phpBB.fr © 2007, 2008 | Designed by Vjacheslav Trushkin