折叠一张纸(计算机视觉)

时间:2012-06-06 18:44:49

标签: algorithm geometry linear-algebra

我正在尝试将具有折叠折痕的2D草图转换为完整的3D表示。 红线将是山谷和蓝山/山顶。我想计算变换/映射坐标{P1'... P8'}。我没有找到任何可以自动执行此操作的好软件,但我会很感激提示。

Folding Pattern

  • a - 折叠角度
  • P - 坐标
  • E - 元素
  • 蓝线 - 折叠山
  • 红线 - 折叠的山谷

Folded a1 = a2 = a3 = 90度(π/ 2弧度)(折角) 和箭头作为冲浪法线

我正在使用Matlab,但我正在寻找解决此问题的通用算法。

假设点 P0 在origo中固定,元素 E1 不会改变其坐标,我应该如何最好地描述转换?我应该使用非均匀或齐次坐标,极坐标吗?

例如,点P8取决于取决于角度的其他坐标。

我想我可以为点(节点)和/或将每个元素与其节点配对的矩阵使用某种邻接矩阵。 例如:[E1 P0 P4 P5 P1; E2 P1 P5 P6 P2; ...]

每个坐标的变换是变换+旋转,变换取决于坐标/元素。但是连接几个元素会变得棘手...

如何将带有折叠图案的2D“纸张”整齐地转换为3D坐标?

3 个答案:

答案 0 :(得分:1)

你可以遍历每个折痕,并计算折痕一侧所有像素的变换。

您可以使用转换矩阵来计算折叠点的坐标。看看the wikipedia article describing transformation matrix

首先,平移所有点以使折痕与轴对齐,然后根据折痕的方向旋转折痕一侧的所有点。然后,您可以反转第一个平移,以使图形回到原始位置。用下一个折痕重复该过程,直到你完全折叠图形。

使用matlab,矩阵计算非常容易预制。

答案 1 :(得分:1)

您可以使用用于描述具有多个旋转关节的机器人的技术;比你的问题可以被描述为forward kinematics问题。另一个有趣的读物可能是this

答案 2 :(得分:0)

您只想对线的一侧的每个点应用线性变换。

转换是围绕轴的旋转,其转换矩阵为given by

enter image description here

由于轴不是以原点为中心,因此您需要首先对原点应用平移,然后进行旋转,然后平移。