将平面投影到圆柱体上

tau*_*oge 11 algorithm projection image-processing

我有一个简单的位图,我想在圆柱上做一个投影.

这意味着,我希望以某种方式转换图像,这样如果我打印它并环绕柱状圆柱体并从某个位置拍摄它,则生成的图像看起来像原始图像.

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

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

Ric*_*bby 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的线,并且我可以使用参数方程将该线的每个点映射到圆.

希望能帮助到你


前一个功能给出了将一个平面"压"在圆柱体上的功能.

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

圆柱体的(x,y,z)

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

z'= z*(H/H')

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

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

如果您可以将其应用于圆柱形图像,您将获得如何展开图片的方法.