2

看看这张图片。
从圆柱表面提取的物体

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

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

我的问题几乎是这样的:Unwarp曲面

感谢帮助!


这是两张图片的简单解释。我将图像 1 滚动并粘贴在瓶子上,然后我从一定距离以特定角度和方向拍摄了一张照片。那么如何从图像 2 恢复图像 1?
在此处输入图像描述
图 1
在此处输入图像描述
图 2

4

1 回答 1

0

从提出的问题中很难知道 OP 真正想要什么。

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

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

将标签折回瓶子表面

  1. 将折线映射到带有轴的圆柱体上x'=0, y'=0

    z' = z'
    angle = x*/y0
    y' = y0*cos(angle)
    x' = y0*sin(angle)
    

回到全局坐标

  1. 应用坐标的一般变化(旋转+平移)

鉴于您的观点等

  1. 透视项目

请注意,标签上的水平线是笛卡尔坐标中的曲线,因此必须将直线细分为多个段才能以足够的精度进行渲染。

于 2014-12-14T15:01:25.470 回答