我开发了一个简单的小型iPhone应用程序(用于学术目的),允许用户拍摄物体的照片。在拍摄照片时,也会捕获来自手机的加速度计数据。用户将采用自上而下(鸟瞰图)的图像,这意味着手机应合理地与物体成90度角。但是,无法保证角度始终为90度的概念。
鉴于我有拍摄图像时的加速度计数据(x,y,z值),我相信有一种方法可以构建一个转换矩阵来转换图像,好像它是从90度角拍摄的。但是,我不确定如何构建这个矩阵。
正如我所提到的,这是为了游戏/学术目的,所以一旦我捕获图像和x,y,z数据,我只需将其发送到我的一台计算机进行进一步处理。正在使用Python和OpenCV执行处理。
非常感谢任何帮助或指示。
答案 0 :(得分:3)
阅读文章
这些演示文稿将让您了解所涉及的数学复杂性。 - http://www.cs.auckland.ac.nz/compsci773s1t/lectures/773-GGpdfs/773GG-FundMatrix-A.pdf - http://www.robots.ox.ac.uk/~vgg/hzbook/hzbook1/HZepipolar.pdf
从相关问题Skewing an image using Perspective Transforms开始,使用OpenCV函数 cvWarpPerspective (感谢@ jeff7)
http://opencv.willowgarage.com/documentation/geometric_image_transformations.html
您仍然需要创建矩阵,为此您可以尝试 cvGetPerspectiveTransform 并根据传感器的方向信息创建输入顶点。
或者,如果角度非常小,仿射变换可能看起来足够好( cvWarpAffine cvGetAffineTransform ) http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/warp_affine/warp_affine.html