Projection d'un plan sur un cylindre

j'ai un bitmap simple et je veux faire une projection sur un cylindre.

cela signifie que je veux transformer l'image d'une manière telle que si je l'imprime et enroule autour d'un cylindre cylindrique et la photographie d'une certaine position, l'image résultante ressemble à l'original.

pourtant je suis assez perdu dans tous les algorithmes de projection (qui sont souvent liés aux projections de la terre).

alors je serais reconnaissant pour des conseils ce que le bon algorithme pourrait être et quels outils je pourrais utiliser pour l'appliquer à mon image.

11
demandé sur Ricky Bobby 2011-11-02 18:16:56

1 réponses

disons que vous avez une image rectangulaire de longueur: L et hauteur :h.

Let (x,z) un point dans l'image,

A' (x', y', z') = (R*cos(x*(2Pi/L)), R*sin(x*(2Pi/L)), z*(H'/H)) sera la projection du point A sur votre cylindre.

la Preuve :

1. z' = z*(H'/H)

j'ai d'abord s'adapter à la cylindre de la taille de l'image , c'est pourquoi je multiplie par : (H'/H), et je garde le même axe z. (si vous dessinez, vous verrez immédiatement)

2. x 'et y'?

je projette chaque ligne de mon image dans un cercle . la paramétrique l'équation d'un cercle est (Rcos(t), Rsin(t)) pour t dans [0,2 PI], la équation paramétrique cartographier un segment (t dans [0,2 PI]) à un cercle . C'est exactement ce que nous essayons de faire.

alors si x décrit un ligne de longueur L, x*(2pi)/L describres une ligne de longueur 2pi et je peux utiliser l'équation paramétrique pour cartographier chaque point de cette ligne à un cercle.

j'Espère que ça aide


la fonction précédente donnait la fonction de "presser" un plan contre un cylindre.

C'est une bijection, donc à partir d'un point donné dans le cylindre, vous pouvez facilement obtenir l'image d'origine.

A (x,y,z) à partir du cylindre

A'(x', z') dans le image:

z' = z*(H/H')

and x' = L/(2Pi)* { arccos (x/R) *(sign (y)) (mod (2Pi))}

(c'est assez laid formule, mais c'est tout :D et vous avez besoin d'exprimer le modulo comme une valeur positive)

si vous pouvez appliquer cela à votre image cylindrique vous obtenez comment décoiler votre image.

13
répondu Ricky Bobby 2011-11-02 17:28:59