嘿数学怪才,我有一个问题是被绊倒了我一段时间了。它是一个个人项目。

我已经有了三个点:红色,绿色和蓝色。他们定位在纸板上滑,这样的红点是在左下(0,0),蓝点是在较低的权利(1,0)的,绿点是在左上角。想象一下后退一步,把一个画面的卡从一个角度。如果你找到每个中心点在图片中(我们说的单位素),如何你会找到正常的矢量的卡是面临的图象(相对于摄像机)?

现在有几件事情我已经拿起了关于这个问题:

  1. 点(在"真正的生活")是总是在正确的角度。在图片中,他们仅在一个合适的角度如果摄像机已经围绕红点沿着一个"轴心"(轴线创建的红色和蓝色或红色和绿色的点)。
  2. 有点上只有一侧的卡。因此,你知道你永远不会被找回的。
  3. 距离卡的摄像机是无关紧要的。如果我知道每个深度点,这将是一个整体很容易(只是一个简单的交叉产品,不是吗?).
  4. 旋转卡无关是我要找的。在修修补补,我一直在做尝试图这一个旋转,旋转,可以发现有所帮助的正常矢量的结束。是否不转的一部分(或产品的)寻找正常的矢量是不知道我。

希望有人在那里要么做这个或是一个数学天才。我有我的两个朋友在这里帮我在这和我们--迄今为止--是不成功的。

有帮助吗?

解决方案

我曾在我的旧版本的MathCAD:

alt text

编辑:措辞错误的截图MathCAD:"众所周知的: b垂直的 彼此"

在MathCAD我忘了最后的步骤做的跨产品,我将复制粘贴在这里从我先前的答案:

现在我们已经解决了X-Y-Z的 翻译克和b点,你的 原来的问题想正常的 飞机。

如果交叉 x b, 我们会得到 矢量正常以既:

        | u1  u2  u3 |
g x b = | g1  g2  g3 |
        | b1  b2  b3 |  

      = (g2b3 - b2g3)u1 + (b1g3 - b3g1)u2 + (g1b2 - b1g2)u3

所有数值都是已知的,它们插在 (我不会写出来的g3版本 和b3取代,因为它只是 太久的和丑陋的是有帮助的。

但实际上,我认为你必须要解决它数,调整 zbz 所以如以最适合的条件:

· b = 0

|| = |b|

由于像素不是代数完美的。

使用的图片,在阿波罗13号宇航员操纵的一个命令的模块的平方氢氧化锂罐中工作,在莱姆,我的位置的角落:

alt text

使用它们作为我的依据,对X-Y平面:

alt text

我录像素的地点使用Photoshop,正X的权利,并积极Y下(保留的右手规则的Z去""画面):

=(79.5,-48.5,gz)

b =(-110.8,-62.8,bz)

冲的两起公式到Excel和使用分析工具来"最小化"错误通过调整 zbz, 它出了两Z值:

= (79.5, -48.5, 102.5)

b = (-110.8, -62.8, 56.2)

然后让我calcuate其他有趣的价值观。

长的 b 在像素:

|| = 138.5

|b| = 139.2

正常的矢量:

x b = (3710, -15827, -10366)

该单位正常的(长1):

uN = (0.1925, -0.8209, -0.5377)

扩展正常长度相同(在像素)作为 b (138.9):

正常=(26.7,-114.0,-74.7)

现在,我有正常的,是相同的长度 b, 我绘制了他们在同样的画面:

alt text

我想你会有一个新问题:畸变介绍了摄像机镜头。三点不是完全预计到2-维摄影飞机。有一个球形的变形,使得直线不再觉,使得平等长度的不再相等,并使法线稍微离开正常的。

Microsoft研究的一个算法找出如何正确对了相机的失真:

一个灵活的新的技术,用于校准照相机

但它超出我说:

我们提出了一个灵活的新技术来 很容易地校准照相机。它是好的 适用于不专业 知识的3D几何形状或计算机 愿景。技术只需要 摄影机观察到一个平面图案 在几(至少两个) 不同的方向。要么的 摄像机或平面图可以 自由移动。该运动不需要 知的。径向镜头畸变是 建模。拟议的程序 由一个封闭形式的解决方案, 随后由一个非线性的改进 根据最大可能性 准则。这两种计算机模拟 而真实的数据已被用于测试 拟议的技术,很好 结果已经获得的。相比 与古典的技术,其使用 昂贵的设备,如两个或 三个正交的飞机,所提出的 技术是使用方便和灵活性。它进步3D计算机的视野的一个 步骤,从实验室环境 现实世界中的使用。

他们有一个样品的图像,在这里你可以看到的失真:

alt text
(资料来源: microsoft.com)

注意到

  • 你不知道如果你看到"上面"纸板,或者"自下而上",因此正常的可能镜像垂直的(即z=-z)

更新

那家伙找到了一个错误的源代数公式。固定它导致的公式,我不认为,有一个简单的关闭形式。这不是太糟糕了,因为它不能完全解决;但数字。

这里有一个截图从Excel我开始与两个知的规则:

· b = 0

|| = |b|

写第2人为差异(一个"错误"数额),可以再增加和使用,价值为数量有excel的解 最小化:

alt text

这意味着你必须要写你自己的数字迭代求解。我凝视过我 数值计算方法为工程师 教科书从大学;我知道它所包含的算法来解决递归方程式没有简单的关闭形式。

其他提示

从它的声音,你有三点 p1, p2, , p3 定义一平面,并且你想要找到正常的矢量的飞机。

表示点作为载体,从该来源, 公式用于一个正常的矢量 将会是
n = (p2 - p1)x(p3 - p1)
(其中x是跨产品的两个矢量)

如果你想的矢量指向外 卡片,然后ala右手规则,设定
p1 =red(左下)点
p2 =蓝色的(较低的权利)点
p3 =green(左上)点

@伊恩*博伊德...我喜欢你的解释,只有我被困在第2步,当你说要解决的 bz.你仍然有 bz 在你的答案,而且我不认为你应该有 bz 在你的答案...

bz 应+/-的平方根 x2 +gy2 +gz2 -bx2 -by2

之后我做了这个我自己,我发现非常难以取代 bz 进入第一个方程时解决克z, 因为当代bz, 你现在会得到:

z =-(gxbx +gyby)/sqrt(gx2 +gy2 +gz2 -bx2 -by2 )

一部分,这使得这个困难是,存在 z 在这方根的,所以你必须单独和合并 z 在一起,并解决了 z 我没有,只有我不认为我的方式解决它是正确的,因为当我写我的程式计算 z 对我来说,我用你的 x, , y 值来看,如果我的答案匹配的上你的,它没有。

所以我想知道如果你能帮助我,因为我真的需要得到这工作我的一个项目。谢谢!

只是在想我的脚在这里。

您有效的输入是显而易见的比RB/RG[+],显而易见的角度轴承,而角度,(说)RB使用你的屏幕上坐标y-轴线(我有没有错过任何东西).你需要的组成部分归正常(嘿!) 矢量,我认为这是仅有的两个独立的价值观(虽然你留下一个前后的模糊性,如果该卡是看到通过)。[++]

所以我猜这是可能...

从这里开始我的工作假设,即显而易见的角度RB总是0,我们可以转动的最终解决围绕z轴后。

开始与卡位的平行查看飞机和向在"自然"方式(即你上与下和左与正确的分配受到尊重).我们可以到达所有有趣的职位的卡通过旋转 \theta 围绕最初的x轴(对 -\pi/2 < \theta < \pi/2),然后再旋转 \phi 围绕最初的y-轴线(对 -\pi/2 < \phi < \pi/2).注意,我们具有保留明显的方向RB矢量。

下一步计算显而易见的比例和显而易见的角度在条款 \theta\phi 并倒转的结果。[+++]

正常会 R_y(\phi)R_x(\theta)(0, 0, 1) 对于 R_i 原始旋转矩阵围绕轴 i.

[+]绝对的长度不要计数,因为这只是告诉你的距离卡。

[++]一个更的假设:距离从卡查飞机是多大的比小的卡。

[+++]在这里投射使用从三维空间的观察面的事项。这是最难的部分,但不是我们可以为你做的除非你说什么投影。如果您使用的是一个真正的照相机,然后这是一个视角投影和被涵盖在本质上任何一本书上的3D图形。

正确的,正常的矢量不会改变的距离,但所投的纸板上的一个画面 改变按距离(简单:如果你有一个小纸,没有什么变化。如果你有一个纸板1英里,宽1英里高的和你转动它的那一侧是接近和其他方更远的距离,近的一侧是放大的远侧缩短上的图片。你可以看到,立刻,一个矩形不会保持一个长方形,但一个飞人)

这主要是准确的方式为小角度和摄像机中心在中间的是测量比的宽度之间的"正常"的形象和角度图像的中间线的(因为他们是不是扭曲的).

我们定义的x作为左右,y如下来了,z为从远近。

然后
x=符号有时在和之间易(measuredWidth/normWidth)红蓝色的
y=符号有时在和之间易(measuredHeight/normHeight)红色绿色的
z=sqrt(1.0-x^2-y^2)

我会计算明天一个更确切的解决方案,但是我太累了,现在...

你可以使用u,v,n共oridnates.设置你的观点出发位置的"眼睛"或者"相机",然后把你的x、y、z坐标到u,v,n。从那里,你可以确定的法、以及透视和表面可见的如果你想(u',v'n').此外,铭记,2D=3D与z=0.最后,确保使用homogenious坐标。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top