【问题标题】:Removing skew/distortion based on known dimensions of a shape根据形状的已知尺寸消除歪斜/扭曲
【发布时间】:2019-05-27 11:10:00
【问题描述】:

我有一个应用程序的想法,该应用程序采用每个角落有四个正方形的打印页面,并允许您测量纸上的对象,因为至少有两个正方形是可见的。我希望能够让用户从不完美的角度拍照,并且仍然可以准确测量对象。

由于我缺乏该领域的知识,我无法确切地弄清楚如何找到有关此主题的信息。我已经能够找到一些 opencv 代码示例,这些代码可以进行一些有趣的转换等,但我还没有弄清楚我用更简单的术语要问什么。

有没有人知道我可以查阅的论文或数学概念以进一步了解这个项目?

除了这个论坛上的人之外,我不太确定如何或向谁提问,抱歉这个有点含糊的问题。

【问题讨论】:

  • 这适用于平面在纸上的 2D 对象。一旦物体突出在纸上或有体积,您的想法就不再有效。
  • 为什么?我想将原始(非完美)角度图像转换为与纸张垂直的图像,然后使用像素宽度来确定宽度等,我不需要能够在任何给定时间点进行 3d 测量。
  • 靠近相机的东西比远离相机的东西大。如果没有 3D 视觉(使用立体相机或测距相机),您不知道物体有多远,因此无法对此进行校正。您的方法将校准纸张定义的 2D 平面上的尺寸。距离相机更近的物体会被投影到该 2D 平面上,因此被测量为比实际更大。
  • 查看相关的 QA:Transformation of 3D objects related to vanishing points and horizon lineBirdseye view without loss of dataWhich is the best way to estimate measure of photographed things?De-skew characters in binary image 没有图像很难缩小范围。但是我投票关闭,因为您要求的是场外教程/帮助/文档而不是特定的编程问题
  • @cris 你有已知大小的参考形状,这意味着你应该能够测量图片的歪斜/扭曲或没有?一个例子是让你的 1x1 正方形拍摄照片,使其在 z 方向远离你,但在 x 或 y 方向没有。意思是图片底部的物体越靠近它们看起来越大。但是您应该能够在最高点和最低点抓住正方形的像素大小的变化,从而为您提供一种检查旋转的方法。

标签: algorithm image-processing


【解决方案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

【讨论】:

    【解决方案2】:

    您所描述的非常让人联想到增强现实标记跟踪。也许您可以先在您选择的搜索引擎上搜索这些词。

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-03-30
      • 2015-02-27
      • 2019-05-03
      • 1970-01-01
      • 2014-03-12
      • 2018-01-28
      • 2017-09-09
      • 1970-01-01
      • 2022-08-29
      相关资源
      最近更新 更多