mat*_*sta 9 math vector plane projective-geometry
嘿,数学极客,我有一个问题,一直困扰我一段时间.这是个人项目.
我有三个点:红色,绿色和蓝色.它们位于纸板条上,红点位于左下方(0,0),蓝点位于右下方(1,0),绿点位于左上方.想象一下,退一步从一个角度拍摄卡片.如果你要找到图片中每个点的中心(假设单位是像素),你会如何找到图片中卡片面部的法线向量(相对于相机)?
现在我已经了解了一些关于这个问题的事情:
希望有人可以做到这一点,或者是数学天才.我有两个朋友在这里帮助我,我们 - 到目前为止 - 都没有成功.
Ian*_*oyd 14
我在我的旧版MathCAD中解决了这个问题:
alt text http://i47.tinypic.com/4fjhs.jpg
编辑:MathCAD屏幕截图中的措辞错误:"已知:g和b彼此垂直 "
在MathCAD中,我忘记了执行交叉产品的最后一步,我将从之前的答案中复制粘贴:
现在我们已经解决了翻译的g和b点的XYZ,你的原始问题想要平面的法线.
如果交叉g x b,我们将得到两个向量的向量:
Run Code Online (Sandbox Code Playgroud)| u1 u2 u3 | g x b = | g1 g2 g3 | | b1 b2 b3 | = (g2b3 - b2g3)u1 + (b1g3 - b3g1)u2 + (g1b2 - b1g2)u3
所有的值都是已知的,插入它们(我不会写出g3和b3取代的版本,因为它太长而且难看有用.
但实际上,我认为你必须用数字来解决它,调整g z和b z以便最符合条件:
g · b = 0
和
| g | = | b |
因为像素不是代数完美的.
使用阿波罗13号宇航员的照片装配一个命令模块的方形氢氧化锂罐在LEM中工作,我找到了角落:
替代文字http://i48.tinypic.com/2heahit.jpg
使用它们作为XY平面的基础:
alt text http://i47.tinypic.com/wj9zsx.jpg
我使用Photoshop记录像素位置,右边是正X,正面是Y(以保持Z的右手规则" 进入 "图片):
g =(79.5,-48.5,g z)
b =(-110.8,-62.8,b z)
将两个起始公式打孔到Excel中,并使用分析工具包通过调整g z和b z来" 最小化 "错误,它提出了两个Z值:
g =(79.5,-48.5,102.5)
b =(-110.8,-62.8,56.2)
然后让我计算其他有趣的值.
g和b的长度(以像素为单位):
| g | = 138.5
| b | = 139.2
法线向量:
g x b =(3710,-15827,-10366)
单位法线(长度1):
你N =(0.1925,-0.8209,-0.5377)
将法线缩放到与g和b相同的长度(以像素为单位)(138.9):
正常=(26.7,-114.0,-74.7)
现在我有与g和b相同长度的法线,我将它们绘制在同一张图片上:
替代文字http://i47.tinypic.com/2qjzp0i.jpg
我想你会遇到一个新问题:相机镜头引入的失真.三个点不能完美地投射到二维摄影平面上.有一个球形失真,使直线不再是直线,使相等的长度不再相等,并使法线略微偏离正常.
微软研究有一个算法来弄清楚如何纠正相机的失真:
但它超越了我:
我们提出了一种灵活的新技术,可以轻松校准相机.它非常适合在没有3D几何或计算机视觉的专业知识的情况下使用.该技术仅需要相机观察以几个(至少两个)不同方向示出的平面图案.可以自由移动相机或平面图案.不必知道动议.对径向透镜畸变进行建模.建议的程序包括一个封闭形式的解决方案,然后是基于最大似然准则的非线性改进.计算机模拟和实际数据都已用于测试所提出的技术,并且已经获得了非常好的结果.与使用昂贵设备(如两个或三个正交平面)的传统技术相比,所提出的技术易于使用且灵活.它将3D计算机视觉从实验室环境一步推进到现实世界.
他们有一个示例图像,您可以在其中看到失真:
注意
Guy在派生的代数公式中发现了一个错误.修复它会导致我不认为具有简单封闭形式的公式.这不是太糟糕,因为它无论如何都无法解决; 但数字上.
这是Excel的截图,我从两个知识规则开始:
g · b = 0
和
| g | = | b |
将第二个作为差异("错误"数量)写入,然后可以将两者都加起来并将该值用作数字以使excel的求解器最小化:
这意味着您必须编写自己的数值迭代求解器.我正盯着我的大学工程师数值方法课本; 我知道它包含解决递归方程的算法,没有简单的封闭形式.