将平面投影到圆柱体上

时间:2011-11-02 14:16:57

标签: algorithm image-processing projection

我有一个普通的位图,我想在圆柱上进行投影。

这意味着,我希望以某种方式转换图像,这样如果我打印它并环绕柱状柱体并从某个位置拍摄它,结果图像就像原始图像一样。

我仍然迷失在所有投影算法中(通常与地球投影有关)。

所以我要感谢提示正确的算法是什么以及我可以使用哪些工具将它应用到我的图像中。

1 个答案:

答案 0 :(得分:13)

假设您有长度的矩形图像:L和高度:H。

和圆柱半径:R和高度H'

设A(x,z)为图片中的一个点,

然后 A'(x',y',z')=(R * cos(x *(2Pi / L)),R * sin(x *(2Pi / L)),z *( H'/ H))将是您的圆柱上A点的投影。

  

证明:

     

<强> 1。 z'= z *(H'/ H)

     

我首先将圆柱体调整到图像大小,这就是我乘以的原因   :(H'/ H),我保持相同的z轴。 (如果你画它,你会看到它   立刻)

     

<强> 2。 x'和y'?

     

我将图像的每一行投影到一个圆圈中。参数   对于[0,2PI]中的t,圆的方程是(Rcos(t),Rsin(t))   参数方程将一个段([0,2PI]中的t)映射到一个圆。那是   正是我们要做的。

     

然后如果x描述长度为L的行,则x *(2pi)/ L描述一行   长度为2pi,我可以使用参数方程来映射每个点   这条线到了一个圆圈。

希望有所帮助


上一个功能使功能“按”一个平面对着一个圆柱体。

这是一个双射,因此从圆柱体的给定点可以轻松获得原始图像。

来自圆柱的A(x,y,z)

图片中的'(x',z'):

z'= z *(H / H')

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

(这是一个非常丑陋的公式,但就是这样:D你需要将模数表示为正值)

如果您可以将其应用于圆柱形图像,则可以获得解开图片的方法。