【问题标题】:perspective view of a rectangular label pasted on cylindrical surface粘贴在圆柱面上的矩形标签的透视图
【发布时间】:2014-12-14 14:05:38
【问题描述】:

看看这张图片。

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

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

我的问题差不多是这样的:Unwarp curved surface

感谢您的帮助!


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

图片1

图二

【问题讨论】:

  • 你想究竟做什么?请不要在评论中回答,而是编辑您的问题。
  • @gboffi 抱歉,我添加了更多描述。
  • 如果你想要什么,使用瓶子类比,在瓶子的标签(标签是一个平面矩形!)上绘制,然后获得你想要的东西的透视图,我已经准备好了答案。我在标签上画了。你能证实我的猜想吗?
  • @gboffi 我添加了 2 张图片以使问题易于理解。我已经得到的是透视图,我想将其转换为原始形状。对不起,但我最后的回复不应该是“是”:(

标签: transformation projection perspective cylindrical


【解决方案1】:

从提出的问题中很难知道 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. 透视项目

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    相关资源
    最近更新 更多