看一下这张图片
这是圆柱面上矩形区域的透视投影结果(如瓶子)的边缘。矩形的垂直中线与圆柱面的轴平行。
我知道如何在平面(http://alumni.media.mit.edu/~cwren/interpolator/和Perspective Transform in Matlab)上进行四边形的透视变换,但是如何在圆柱面上进行变换?
我想要的是将区域转换为原始矩形。
我的问题几乎是这样的:Unwarp curved surface
感谢您的帮助!
这是两个图像中的简单解释。我将图像1滚动并粘贴在一个瓶子上,然后我从一定距离拍摄了一张具有特定角度和方向的照片。那么如何从图像2恢复图像1?
图1
图2
答案 0 :(得分:0)
很难从提出的问题中了解OP真正想要的东西。
如果他/她想要在瓶子的标签上画一条折线,一个半径为r
的瓶子,然后在一般的透视图中绘制相同的折线,那么我们的想法是先将标签展开到一个平面,你可以做到圆柱形表面是可开发的,然后
x*-z'
y'=y0=r
中绘制所述折线
醇>
将标签折回瓶子表面
将折线映射到轴x'=0, y'=0
z' = z'
angle = x*/y0
y' = y0*cos(angle)
x' = y0*sin(angle)
返回全球坐标
给出你的观点等等
请注意,标签上的水平线是笛卡尔坐标系中的曲线,因此必须将一条直线细分为若干段才能以足够的精度进行渲染。