我撕下一张纸,它的碎片像:
我想让这些片段的片段恢复。
我使用opencv做了一些事情:
如果我想将这些片段恢复成一整页“纸张”,如纸张不撕裂,我该怎么办?
非常感谢任何建议或方法,非常感谢!
答案 0 :(得分:1)
虽然这就像搜索问题;由于来自无数点和方向的无数个状态,不可能实现像深度优先搜索这样的东西。您需要一个合适的视觉算法来减少这些状态。
你是如何比较“等高线”的?这些线在哪里?你的轮廓可能是圆形的,并且可能有很多“线条”。你应该寻找 “如何创建这个轮廓,加入其他轮廓的某些部分”
“这个周边是否与另一个周边相似?周边的哪一部分具有最高的相似度?”
这两个问题都产生了我想到的一个解决方案,以人的方式解决:选择一个轮廓。从某个角度连接另一个。旋转它直到它击中。如果之间有黑色空格,请更改连接点。尝试所有要点。如果发现连接点屈服于“无黑色空间”,请将这些轮廓连接到一个轮廓并继续操作。如果没有点,请尝试另一个轮廓。
编辑:虽然这种方法除了搜索之外什么也没做;它减少了具有黑色空间(轮廓发现)和命中(坐标比较)的状态数量
增强:使用轮廓查找方法和“简单近似”(CV_APPROX_SIMPLE)推导出纸张的直线。然后,您可以通过将这些点标记为纸张边来减少要尝试的点数。
EDIT2:您可能想要查看角点检测和拼接方法:
http://tobw.net/index.php?cat_id=2&project=Panorama%20Stitching%20Demo%20in%20Matlab,
http://docs.opencv.org/modules/stitching/doc/introduction.html