根据形状的已知尺寸消除歪斜/变形

时间:2018-12-30 14:53:57

标签: algorithm image-processing

对于一个应用程序,我有一个想法,该应用程序在每个角上都带有四个正方形的打印页面,并且如果可见至少两个正方形,则可以让您测量纸张上的对象。我希望能够让用户从不完美的角度拍摄照片,同时仍然能够准确地测量物体。

由于我对该领域缺乏知识,因此我无法确切地找到如何找到有关此主题的信息。我已经能够找到进行一些有趣的转换之类的opencv代码示例,但是我还没有弄清楚我要问的问题。

有人知道我可以查找的论文或数学概念以进一步深入该项目吗?

除了在这个论坛上的其他人之外,我不太确定如何或向谁问其他问题。

2 个答案:

答案 0 :(得分:2)

您描述的内容非常让人联想到增强现实标记跟踪。也许您可以从您选择的搜索引擎中搜索这些单词开始。

如果正确完成,则可以使用单个标记进行识别,而不会与其他标记混淆。 AND 可以确定如何将表面放置在相机前面的3D空间中。

但这都是非常困难和高级的内容,我强烈建议不要尝试实现类似的东西,这需要多年的研究...唯一的方法是使用现成的开源库输出您的应用所需的数据。

它甚至可能不存在。在这种情况下,您将必须购买一个。考虑到您问题的根源,这是完全合理的。

答案 1 :(得分:1)

在这里,我仅向您提供编程方面的信息,如果您愿意,您可以从这些示例中找到有关数学方面的信息。您需要的大多数功能都可以使用OpenCV完成。这是python中的一些示例:

  1. 要检测打印的纸张,可以使用cv2.findContours功能。最外面的轮廓可能是纸张,但是您需要对实际图像进行测试。 https://docs.opencv.org/3.1.0/d4/d73/tutorial_py_contours_begin.html

  2. 如果倾斜(不是完美的角度),则可以通过cv2.minAreaRect找到该角度,该角度返回您在上面找到的轮廓的角度。 https://docs.opencv.org/3.1.0/dd/d49/tutorial_py_contour_features.html(第7b部分)。

  3. 如果要旋转纸张,请使用cv2.warpAffinehttps://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_geometric_transformations/py_geometric_transformations.html

  4. 要检测纸张中的物体,有一些方法。最简单的方法是使用上面的轮廓。如果对象具有某些颜色,则可以使用滤色器对其进行检测。 https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_colorspaces/py_colorspaces.html