smi*_*man 15 homography projective-geometry kinect
从Kinect深度图获得两个连续的3D点云1和2(不是整个云,比如用OpenCV的GoodFeaturesToMatch从云中选择的100个点),我想从1到2计算摄像机的单应性.我理解这是一个投影变换,它已经由很多人完成了:这里(幻灯片12),这里(幻灯片30)和这里似乎是经典论文.我的问题是,虽然我是一名称职的程序员,但我没有数学或触发技巧将其中一种方法转化为代码.由于这不是一个简单的问题,我为解决以下问题的代码提供了大量的赏金:
相机位于原点,沿Z方向看,不规则的五面体[A,B,C,D,E,F]:

相机向左移动-90mm(X),向上移动60mm(Y),向前移动+ 50mm(Z)并向下旋转5°,向右旋转10°,逆时针旋转-3°:

旋转整个场景以使相机返回其原始位置允许我在2处确定顶点的位置:

以下是顶点之前和之后的位置,内在函数等:

请注意,camera2的顶点不是100%准确,有一些故意的噪音.
我需要的代码,必须可以很容易地翻译成VB.Net或C#,必要时使用EMGUCV和OpenCV,获取2组顶点和内在函数并生成此输出:
Camera 2 is at -90 X, +60 Y, +50 Z rotated -5 Y, 10 X, -3 Z.
The homography matrix to translate points in A to B is:
a1, a2, a3
b1, b2, b3
c1, c2, c3
Run Code Online (Sandbox Code Playgroud)
我不知道单应性坐标的单应性是3X3还是3X4,但它必须允许我将顶点从1转换为2.
我也不知道值a1,a2等; 那是你必须找到的; ;-)
500赏金提供'替换'我提供给这个非常相似的问题的赏金,我在那里添加了一个指向这个问题的评论.
编辑2:我想知道我问这个问题的方式是否具有误导性.在我看来,问题更多的是点云拟合而不是相机几何(如果你知道如何平移和旋转A到B,你知道相机变换,反之亦然).如果是这样,那么也许可以用Kabsch的算法或类似的方法获得解决方案