【问题标题】:Reconstructing a 2D shape from its projection in 1D从 1D 中的投影重建 2D 形状
【发布时间】:2015-06-22 10:36:39
【问题描述】:

我在二维空间(在 x-y 平面上)有一个凸封闭形状。我不知道它长什么样。我将这个形状大约围绕其边界框的中心旋转 64 次 5.625 度 (360/64)。对于每次旋转,我都有形状极值点的 x 坐标。换句话说,我知道每次旋转的形状的左右 x 范围(假设是正交投影)。如何在与 x 投影不矛盾的形状上获得 64 个点。 请注意,2D 形状正在旋转,但坐标轴并未随之旋转。因此,如果您的对象是一条线,则绘制后每一端的 x 投影本质上将是一个 sin/cos 波,具体取决于其原始方向。

如果我有解决方案,旋转次数越多 - 我就越接近我的实际形状。

实际上,我不知道旋转形状的确切点,但是假设我知道的任何解决方案仍然会有所帮助,因为我不介意重建不完美。

【问题讨论】:

  • 是透视投影还是正交投影?
  • 您是否围绕已知坐标的固定点旋转?对于每次旋转,你得到两个坐标(左和右),还是只有长度?
  • 如果您围绕单个轴旋转,并且只获得极端坐标,您将永远无法完全重建形状:您将获得的只是一个边缘平行于旋转轴的边界棱镜。您有两种选择:考虑多边形轮廓,或以两个角度旋转。
  • Yves:他正在观察二维空间中的一个形状(并围绕一个点旋转)。由于形状是凸的和闭合的,很容易证明一个点位于形状内当且仅当它位于 [0,2*PI] 中所有旋转角的一维投影内(没有不管哪一点是你的旋转中心)。为了证明这一点,找到任何将整个形状放置在所讨论点的左侧(或右侧)的旋转。假设这对于形状外的点是不可能的,将导致与凸形相矛盾。

标签: algorithm math geometry computational-geometry differential-equations


【解决方案1】:

我们使用直接的方法进行重构。

投影是物体的阴影。

您从一个 2D 边界框开始。对于每个投影,您从位于投影之外的 2D 形状左右部分切掉。因此,主函数计算两个凸二维形状的交集。您为每个投影计算这些交点。

我们有几个原始绿色物体的紫色投影P1、P2、P3、P4:

知道紫色投影的位置,构建来自投影端点的两条红色光线,并将它们与重建的对象相交:

红色物体是使用 4 个投影重建的。与原始绿色相比,您可以看到它们并不相同。您的预测越多,最终结果中的错误就越少。

【讨论】:

  • 感谢您的回复 - 但 x 投影仅在 x 轴上。 x 轴不旋转。
  • 2D 形状正在旋转,但坐标轴并未随之旋转。因此,如果您的对象是一条线,则绘制后每一端的 x 投影本质上将是一个 sin/cos 波,具体取决于其原始方向。
  • 很好的答案,恶搞的问题和提问者。
  • @gayathrichittiappa,这个问题还不是很清楚。您对每个投影了解哪些信息?它只是对象旋转的角度和X 轴上投影的XminXmax 坐标吗?别的什么都没有?更具体地说,你知道物体旋转的点(x,y)的坐标吗?
  • 什么都没有。在我的物理情况下,我不知道对象旋转的坐标。但也许我可以假设我们正在围绕第一个投影和第 17 个投影的中心定义的 x 和 y 旋转它,另一种选择是假设我们围绕原点 (0, 0) 旋转它,这与我的问题是什么。我试图找到一个不需要知道旋转中心是什么的解决方案。但不确定这是正确的方法
猜你喜欢
  • 2014-05-06
  • 2021-10-24
  • 1970-01-01
  • 2016-01-04
  • 2017-03-31
  • 1970-01-01
  • 2020-07-08
  • 2012-10-30
  • 2011-07-16
相关资源
最近更新 更多