Opencv 使撕破的纸复原

Opencv 使撕破的纸复原,opencv,graphics,Opencv,Graphics,我撕碎了一张纸,它的碎片像: 我想把这些纸碎片弄回来 我使用opencv做了一些事情: 拍摄这些碎片的照片并将其保存到计算机磁盘中 读每一个片段,得到它们的轮廓线 计算碎片各等高线的相似性 如果我想把这些碎片恢复成一整张像纸一样不会撕碎的“纸”,我该怎么办 任何建议或方法都将不胜感激,非常感谢 尽管这像是一个搜索问题;由于无数的点和方向会产生无穷多的状态,所以不可能实现深度优先搜索之类的功能。你需要一个合适的视觉算法来减少这些状态的数量 你是如何比较“等高线”的?这些线在哪里?您的轮廓可能是

我撕碎了一张纸,它的碎片像:

我想把这些纸碎片弄回来

我使用opencv做了一些事情:

  • 拍摄这些碎片的照片并将其保存到计算机磁盘中
  • 读每一个片段,得到它们的轮廓线
  • 计算碎片各等高线的相似性
  • 如果我想把这些碎片恢复成一整张像纸一样不会撕碎的“纸”,我该怎么办


    任何建议或方法都将不胜感激,非常感谢

    尽管这像是一个搜索问题;由于无数的点和方向会产生无穷多的状态,所以不可能实现深度优先搜索之类的功能。你需要一个合适的视觉算法来减少这些状态的数量

    你是如何比较“等高线”的?这些线在哪里?您的轮廓可能是圆形的,并且可能有大量的“线”。您应该查找“如何创建此轮廓,连接其他轮廓的某些部分”

    “此周长与另一周长相似吗?周长的哪个部分相似性最高?”

    这两个问题都归结为我脑海中浮现的一个解决方案,即用人的方式解决:选择一个轮廓。从某个点连接另一个。旋转它直到它碰到。如果两者之间存在黑色空间,请更改连接点。尝试所有要点。如果您发现一个连接点屈服于“无黑色空间”,请将这些轮廓连接到一个轮廓中,然后继续操作。如果不存在任何点,请尝试其他轮廓

    编辑:虽然此方法只进行搜索;它减少了具有黑色空间(轮廓查找)和命中(坐标比较)的状态数

    增强:使用“简单近似”(CV_APPROX_simple)的轮廓查找方法来推断纸张的直线。然后,通过将这些点记为纸面,可以减少要尝试的点数

    EDIT2:您可能希望了解角点检测和缝合方法:

    ,