python - 通过正确定位补丁将重叠图像合并为单个图像
问题描述
鉴于从图像中获取的许多补丁,任务是创建由补丁组成的单个图像。
我尝试了天真的解决方案:
- 对于每 2 张图像,检查许多补丁并进行比较。
- 如果它们在某个置信度阈值以上相似,则创建 2 的新图像。
- 将新图像添加到池中并删除其他 2。
- 重复直到池大小为 1。
问题是这个解决方案很慢,主要瓶颈是补丁比较。有没有更好的方法可以更快地做到这一点?也许更好的补丁选择和比较方法?
解决方案
我会尝试:
一次对所有图像的所有特征点进行有序列表。
因此,创建一个列表,其中存储了特征或特征的散列,以及从哪个图像中获取的信息,甚至可能是位置。然后按哈希(或即时)对该列表进行排序。
作为一项功能,请选择您现在用来比较图像的内容。由于您没有缩放或旋转,因此您不需要缩放和旋转不变的功能,但是如果您使用这些功能不会受到伤害。我通常选择强度的局部最大值或最小值的像素。然后计算像素的直方图,直到距它的某个恒定距离(旋转不变)然后散列直方图......
浏览列表
检查一个哈希是否在列表中不止一次但来自不同的图像
在有序列表中,它们将组合在一起
如果是,则比较/合并特征所属的那些图像
还更新功能列表,因此只需将列表中的图像 ID 更改为新合并的图像 ID。
如果我没看错,您当前的方法是O(m*n^2)
,这将是O((n*m)*log(n*m))
图像n
数量m
和每个图像的平均特征数。
推荐阅读
- python - 我无法打开用于在 python 中写入的文件,它给了我一个错误
- database - 如何在没有 localhost 127.0.0.1 的情况下单击 Laravel 中的链接?
- sql - 从 Teradata 中的范围创建行级数据
- php - 通过邮件 PHP 发送回显输出
- java - 为什么我在此双向链接列表中出现错误?
- google-apps-script - 使用 Google App Scripts 读取本地文件?如果没有,解决方法?
- node.js - React:'React' 未定义 no-undef
- vb.net - vb.net 中的错误;有没有办法可以使用标签/按钮打开链接?
- xml - 从哈希表创建自定义 XML
- python - 有没有办法查找您在 Discord 中的服务器是否属于特定服务器?