我的图片中有重复的图案。我想根据相似的模式找到相似的图像。
图案由十字形、三角形、正方形组成,它们组合在一起形成由这些“原始形状”构成的更复杂的结构。例如,想象一个由三角形或六边形等组成的十字架。
这些装饰存在于墙纸、地毯、基里姆布、羊毛衫甚至一些画作中。
来自维基百科的示例图像是 here
我的典型应用是查找具有相似图案的毛衣。暂时忽略颜色。
我尝试提取 SIFT 描述符(使用 C++ 和 OpenCV)并在两个图像之间匹配这些描述符。然而,它们匹配微小的区域,例如六边形和三角形的顶点,但理想情况下我想匹配三角形和矩形的实际形状。
如果我缩小图像,效果会好一些,但我仍然觉得我需要一种不同于 SIFT 和 friend 的方法。
有人可以针对此类问题提出其他方法吗?
最佳答案
如果您先验地知道要查找的模式,则可以进行旧式模板匹配。它可能不像深度学习技术那样流行,但对于受约束的问题可能是有效的。
- 加载 N 个模板
- 加载您要测试的图像。
- 标准化图像和模板(可能包括 转换为灰度和一些直方图和白平衡 平衡)
- 为每个模板创建一些 M 扰动(即, 不同的比例、旋转和透视变换)
- 在 NxM 模板和图像之间做模板。
您可以通过 template matching in the Fourier domain 稍微优化上面的内容因为您只需要对图像进行一次 2D FFT。您还可以预先计算和存储扰动 - 或者更好:存储它们的傅里叶变换。
关于c++ - 在图像中查找相似(大)图案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51964523/