5

我开发了一个简单的小 iPhone 应用程序(用于学术目的),它允许用户为物体拍照。在拍摄照片时,手机的加速度计数据也会被捕获。用户将采用自上而下(鸟瞰图)的图像,这意味着手机应合理地与对象成 90 度角。但是,不能保证角度始终为 90 度这一概念。

鉴于我有拍摄图像时的加速度计数据(x、y、z 值),我相信有一种方法可以构造一个变换矩阵来变换图像,就好像它是从 90 度角拍摄的一样。但是,我不确定如何构建这个矩阵。

正如我所提到的,这是为了玩耍/学术目的,所以一旦我捕捉到图像和 x、y、z 数据,我只需将其发送到我的一台计算机进行进一步处理。正在使用 Python 和 OpenCV 执行处理。

任何帮助或指示将不胜感激。

4

1 回答 1

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并根据传感器的方向信息创建输入顶点。

或者,如果角度非常小,仿射变换可能看起来足够好(cvWarpAffinecvGetAffineTransformhttp://docs.opencv.org/doc/tutorials/imgproc/imgtrans/warp_affine/warp_affine.html

于 2013-04-18T13:13:48.687 回答