您必须准确地指定检测失真的含义。我假设您想要检测这样一张纸(或您的桌子/平面)的角,并使其与您的显示器的轴平行。这可以用
cvFindHomography
和
cvWarpPerspective
. 我刚才为python编写了一些示例代码,请注意,这些仍然是旧的绑定(不过,更新到opencv 2.0不需要很长时间):
http://ioctl.eu/blog/2009/05/13/opencv_homography
另一件事你显然要做的是检测角落。在我的示例代码中,用户需要使用鼠标单击四个角。在你的例子中,很难说出来,因为我需要一个例子。opencv提供了几种检测角的方法(参见harris),在示例中还应该有关于如何查找矩形的代码。如果你能更具体一点,我可能会更努力。
更新
这对你来说可能也很有趣:我刚刚听过一个关于处理图像中透视失真的讨论(例如,增加投影缩短)。它们需要大量的用户交互,但是要优化一些带有约束的网格以保持平滑的扭曲。
以下是ACM链接:
http://portal.acm.org/citation.cfm?id=1778765.1778864
也许你可以从那篇论文和提到的参考文献中得出一些想法,但是我自己还没有读过。