首页 > 解决方案 > 通过正确定位补丁将重叠图像合并为单个图像

问题描述

鉴于从图像中获取的许多补丁,任务是创建由补丁组成的单个图像。

我尝试了天真的解决方案:

  1. 对于每 2 张图像,检查许多补丁并进行比较。
  2. 如果它们在某个置信度阈值以上相似,则创建 2 的新图像。
  3. 将新图像添加到池中并删除其他 2。
  4. 重复直到池大小为 1。

问题是这个解决方案很慢,主要瓶颈是补丁比较。有没有更好的方法可以更快地做到这一点?也许更好的补丁选择和比较方法?

标签: pythonalgorithmopencvimage-processingprocessing-efficiency

解决方案


我会尝试:

  1. 一次对所有图像的所有特征点进行有序列表。

    因此,创建一个列表,其中存储了特征或特征的散列,以及从哪个图像中获取的信息,甚至可能是位置。然后按哈希(或即时)对该列表进行排序。

    作为一项功能,请选择您现在用来比较图像的内容。由于您没有缩放或旋转,因此您不需要缩放和旋转不变的功能,但是如果您使用这些功能不会受到伤害。我通常选择强度的局部最大值或最小值的像素。然后计算像素的直方图,直到距它的某个恒定距离(旋转不变)然后散列直方图......

  2. 浏览列表

  3. 检查一个哈希是否在列表中不止一次但来自不同的图像

    在有序列表中,它们将组合在一起

  4. 如果是,则比较/合并特征所属的那些图像

    还更新功能列表,因此只需将列表中的图像 ID 更改为新合并的图像 ID。

如果我没看错,您当前的方法是O(m*n^2),这将是O((n*m)*log(n*m))图像n数量m和每个图像的平均特征数。


推荐阅读