gpt4 book ai didi

opencv - 特征检测-大图中的小元素

转载 作者:太空宇宙 更新时间:2023-11-03 20:41:11 24 4
gpt4 key购买 nike

假设您有两张图片。其中有一个小图标(比如小于 300X300 像素)。第二个是一个非常大的图标,里面有一个(或多个)较小的图标实例(当然是不同的比例、旋转)。

手头的任务是在大图像中找到图标的实例。你们会如何处理这个问题?

我尝试使用基于特征的对象检测,通过使用 OpenCV 库,但是对于拥挤的大图像(包含许多特征点),匹配是不确定的。我试过使用 BRUTE/FLAN 匹配算法的 SURF/OBJ 特征提取器。

根据我的经验,匹配似乎没有注意到两幅图像上特征点之间的几何关系。作为可视化帮助,我附上了两个示例图像的特征点实例。 enter image description here

这是一个更难的任务实例。我在大图中突出显示了图标。 enter image description here

最佳答案

根据有限的经验,我为遇到此类问题的任何其他人提供了三项建议。

1) 使用 FindObject by Mathieu Labbé 进行实验

这是一个非常好的工具,它帮助我快速进行实验以找到用于特征检测/描述的设置的良好组合。只需将您的图标加载为对象并将示例大图像加载为场景。然后进行调整,直到您为您的应用程序获得可靠的结果。作为奖励,他最近添加了 BRISK 和 FREAK 非专利保护特征检测/描述方法。

2) 获得现实的解决方案

您的图标对象和您正在搜索的大场景中的实际图标的分辨率非常不同。据我了解,这些方法的尺度不变性实际上非常有限。查看优秀comparisons done by Ievgen Khvedchenia .通过将图像大小调整到您期望的范围的中间,您可能会获得更好的结果。

3) 使图标示例图像更逼真(例如,模糊)

与 #2 相关,我发现在更逼真的场景中搜索时使用非常清晰的样本图像效果不佳。我对尖锐的样本应用了高斯分布,使它们与我期望找到的更相似。下面有一个例子。奇怪的公式只是确保内核维度是所需的奇数。

def proportional_gaussian(image):
kernel_proportion = 0.005
kernel_w = int(2.0 * round((image.shape[1]*kernel_proportion +1)/2.0)-1)
kernel_h = int(2.0 * round((image.shape[0]kernel_proportion +1)/2.0)-1)
return cv2.GaussianBlur(image, (kernel_w, kernel_h), 0)

希望对某人有所帮助。

关于opencv - 特征检测-大图中的小元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11609657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com