Yet*_*eti 10 opencv computer-vision
假设你有两张图片.在一个你有一个小图标(如小于300X300像素).第二个是一个非常大的,在你内部有一个(或多个)较小的图标实例(当然在不同的规模,旋转).
手头的任务是在大图像中找到图标的实例.你们怎么接近这个?
我试图通过使用OpenCV库来使用基于特征的对象检测,但是对于拥挤的大图像(包含许多特征点),匹配是不确定的.我已经尝试过使用BRUTE/FLAN匹配算法的SURF/OBJ特征提取器.
根据我的经验,匹配似乎没有记录两个图像上的特征点之间的几何关系.作为可视化帮助,我附加了两个示例图像的特征点的实例.
这是一个更难实现的任务.我突出了大图中的图标.
基于有限的经验,对于遇到此类问题的其他人,我有三条建议.
这是一个非常好的工具,它帮助我快速进行实验,找到特征检测/描述的良好设置组合.只需将图标作为对象加载,然后将样本大图像作为场景加载.然后调整,直到您的应用程序获得可靠的结果.作为奖励,他最近添加了BRISK和FREAK非专利保护功能检测/描述方法.
2)获得逼真的分辨率
对于您正在搜索的大型场景中的图标对象和实际图标,分辨率是如此不同.根据我的理解,这些方法的尺度不变性实际上非常有限.看看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)
Run Code Online (Sandbox Code Playgroud)
希望能帮助别人.
| 归档时间: |
|
| 查看次数: |
6087 次 |
| 最近记录: |