Open CV中的2D子图像检测

对于以下问题,OpenCV使用哪种最明智的算法或算法组合: 我有一组小的2D图像。我想在更大的图像中检测这些子图像的位置。 子图像通常约为32x32像素,较大的图像约为400x400。 子图像并不总是正方形,因此包含alpha通道。 可选地 - 较大的图像可以是颗粒状的,压缩的,3D旋转的,或者稍微变形的 我尝试过cvMatchTemplate,结果很差(很难正确匹配,大量的误报,所有的匹配方法)。一些问题来自OpenCV似乎无法处理alpha通道模板匹配的事实。 我尝试过手动搜索,看起来效果更好,并且可以包含alpha通道,但速度非常慢。 谢谢你的帮助。     
已邀请:
cvMatchTemplate使用MSE(SQDIFF / SQDIFF_NORMED)类型的度量来进行匹配。这种度量将严重地惩罚不同的α值(由于等式中的平方)。您是否尝试过规范化的互相关?已知更好地模拟像素强度的线性变化。 如果NCC不能完成这项工作,您需要将图像转换为强度差异没有太大影响的空间。例如计算边缘强度图像(canny,sobel等)并在这些图像上运行cvMatchTemplate。 考虑到图像尺度的巨大差异(~10x)。必须使用图像金字塔来确定匹配的正确比例。建议您从比例开始(2 ^ 1 / x:x是正确的比例)并将估计值传播到金字塔上。     
你需要的是像SIFT或SURF这样的东西。     

要回复问题请先登录注册