通过正确地将小块彼此放置在一起,将重叠的图像合并为单个图像

问题描述

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

我尝试过幼稚的解决方案:

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

问题在于此解决方案非常慢,主要瓶颈是补丁比较。 有没有更好的方法来做到这一点呢? 也许是更好的补丁选择和比较方法

解决方法

我会尝试:

  1. 使所有图像中所有特征点的排序一次。

    因此创建一个列表,在该列表中存储特征的哈希值或仅存储特征的哈希值,以及创建该图像的图像甚至位置的信息。然后按哈希(或即时)对列表进行排序。

    作为一项功能,选择您现在用于比较图像的内容。由于没有缩放或旋转功能,因此不需要缩放和旋转不变功能,但是如果使用这些功能,则不会受到伤害。我通常选择局部强度最大或最小的像素。然后计算像素的直方图,直到它与该像素的距离保持恒定(旋转时不变),然后对直方图进行哈希处理...

  2. 浏览列表

  3. 检查列表中是否有一个以上的哈希,但是来自不同的图片

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

  4. 如果是,则比较/合并功能所属的图像

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

如果我看对了,您当前的方法是O(m*n^2),它将是O((n*m)*log(n*m)),其中n是图像数量,m是每个图像的平均特征数量。