粘贴在圆柱表面上的矩形标签的透视图

时间:2014-12-14 14:05:38

标签: transformation projection perspective cylindrical

看一下这张图片 an object exacted from a cylindrical surface

这是圆柱面上矩形区域的透视投影结果(如瓶子)的边缘。矩形的垂直中线与圆柱面的轴平行。

我知道如何在平面(http://alumni.media.mit.edu/~cwren/interpolator/Perspective Transform in Matlab)上进行四边形的透视变换,但是如何在圆柱面上进行变换?
我想要的是将区域转换为原始矩形。

我的问题几乎是这样的:Unwarp curved surface

感谢您的帮助!


这是两个图像中的简单解释。我将图像1滚动并粘贴在一个瓶子上,然后我从一定距离拍摄了一张具有特定角度和方向的照片。那么如何从图像2恢复图像1? enter image description here
图1
enter image description here
图2

1 个答案:

答案 0 :(得分:0)

很难从提出的问题中了解OP真正想要的东西。

如果他/她想要在瓶子的标签上画一条折线,一个半径为r的瓶子,然后在一般的透视图中绘制相同的折线,那么我们的想法是先将标签展开到一个平面,你可以做到圆柱形表面是可开发的,然后

  1. 使用x*-z'
  2. 在平面y'=y0=r中绘制所述折线

    将标签折回瓶子表面

    1. 将折线映射到轴x'=0, y'=0

      的圆柱体上
      z' = z'
      angle = x*/y0
      y' = y0*cos(angle)
      x' = y0*sin(angle)
      
    2. 返回全球坐标

      1. 应用坐标的通用更改(旋转+翻译)
      2. 给出你的观点等等

        1. 项目透视
        2. 请注意,标签上的水平线是笛卡尔坐标系中的曲线,因此必须将一条直线细分为若干段才能以足够的精度进行渲染。