【问题标题】:Perspective detection with OpenCv使用 OpenCv 进行透视检测
【发布时间】:2011-03-10 05:24:41
【问题描述】:

如果我想检测透视扭曲的物体(例如矩形)并计算校正变换,有什么好的方法?

例如,我有很多平放纸张的照片(照片是从某个角度拍摄的),我想校正透视并裁剪它们。

我正在考虑使用 OpenCv Python 绑定来制作一些东西。我认为这将是一个有很多例子的“标准问题”,但我没有找到任何相关信息。线索?

编辑:我应该补充一点,我知道这可以通过使用一些 Web 服务来完成,但我认为这是在学习 OpenCv 时做一些有用的事情的机会:)

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    您必须准确指定检测失真的含义。我假设您想检测此类纸张(或您的桌子/平面)的角并使其与您的显示器轴平行。这可以使用cvFindHomographycvWarpPerspective 来完成。不久前我已经为 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 也许你可以从那篇论文和提到的参考文献中得出一些想法,但是我自己(还没有)读过它。

    【讨论】:

    • 感谢您的回答。我不想具体说明如何,因为不想缩小自己的范围,但想从其他人那里得到一些输入:) 检测角是我想过的一种方法,但我担心它不够健壮。例如,很多图片有一个或多个角在图片边界之外。
    • 我认为 zerm 的回答涵盖了一个很好的起点,所以我不会提出另一个答案,而是扩展他的方法。正确的方法(最自然)是找到角落。要查找角点,您可以使用可用的角点检测器。但是,您也可以找到图像的消失点。您的问题在这些纸的形状方面模棱两可。或者什么类型的背景或什么类型的颜色。这是一个计算机视觉问题,最好发布一些图片。
    • @Dat Chu:关于发布样本的要点。无论如何,这更像是一个“有趣”的练习,我需要一些初学者。我想我会去检测消失点。实际上,文本可能比边缘本身更容易检测到。
    猜你喜欢
    • 2016-11-27
    • 1970-01-01
    • 2016-10-12
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 2012-02-28
    相关资源
    最近更新 更多