Aph*_*ire 6 python 2d numpy perspectivecamera matrix-multiplication
我正在录制用户眼睛的视频,然后使用计算机视觉来跟踪他们的眼睛以试图估计他们的目光,但是我能够记录用户的角度不是直接的并且数据的表示需要显示,就好像用户正在直视.
为了进一步解释自己,请考虑下面的图像,描述我到目前为止所做的以及我想要实现的目标:
我想也许最好的方法就是翻译视角,但不是很精通,我不知道从哪里开始.
我对任何有关达到预期结果的最佳方法的建议持开放态度,但请记住我的矩阵数学是相当生疏的,所以如果你使用任何众所周知的方法,请迎合我的无知并解释一切以及您可以.
数据当前存储为X/Y点的NumPy数组
我的矩阵数学比“相当生锈”还要糟糕,但我有一些可能有用的想法。
\n\n总的来说,与变换离散点相比,变换图像的信息要多得多。您可能想要考虑变换图像的眼睛部分而不是变换瞳孔点。
\n\n无论如何,这是我的想法:
\n\n这个答案描述了如何在Python Imaging Library中执行透视变换,用于numpy计算变换的系数。
调整它以操作点而不是图像可能很容易(谷歌建议scipy有一些类似于 PIL.Image.transform` 的功能,可能更适用)。如果失败,您可以将点渲染到二进制图像上,作为黑色背景上的白色像素,然后转换该图像并读取点。
然而,对于透视变换,您仍然需要一种方法来确定 的坐标pa,即您要变换的平面。只需在眼睛周围拟合一个矩形,您就可能获得合理的结果。为此,我可能会旋转你的图形,使其与 X 轴平行,方法是在眼睛两端之间构建一条线,然后从 0\xc2\xb0 开始按线的角度旋转。然后我会记录边界框,并将两者旋转回去。你的飞机看起来像这样:

此时,您也许能够提取眼睛主要轮廓的角度,并相应地捏合和挤压边界矩形。不过,简单的透视变换可能会被证明是不可靠的。
\n\n给定一组起点和一组终点,几乎肯定有一种方法可以从中计算透视变换系数,即使数量大于 4。您可以跳过边界框并假设将每个点转换为其对应的理想形状,然后计算系数。不过,不要问我怎么做,我不知道:P
\n\n如果您的“目标形状”与您要变换的形状具有相同的点数,则您可以模拟许多图像编辑程序的拉伸功能。Photoshop 提供的工具可让您在形状上拉动点来移动它们,从而拉伸内部内容。如果您可以重现此行为,则只需将起始形状上的每个点移动到目标形状上的相应点即可拉伸图像。这可能是最可靠的方法,只需拉伸图像以适合目标形状,然后从新图像中拉出瞳孔即可。
\n\n所有这些方法的问题在于,正常的透视变换永远不会非常准确,因为眼睛是弯曲的,而不是平坦的。您无法真正用平面来近似眼睛的表面并期望完全准确。即使拉伸(方法 3)也会受到照片角度的影响;它会偏向眼睛的可见侧,并使眼睛看起来好像比实际情况更向左(向右)看。如果照片的角度是恒定的并且已知,您也许可以自己纠正。否则,我看不到解决这个障碍的简单方法。
\n\n我对高等数学知之甚少,但希望我的想法对您有所帮助。
\n\nFWIW,眼球追踪经过深入研究,有几篇像这样的详尽论文
\n| 归档时间: |
|
| 查看次数: |
766 次 |
| 最近记录: |