变形的模板/图像匹配

时间:2013-03-03 12:41:24

标签: python image opencv numpy comparison

好吧,我一直想知道在图像/模板中找到变形子图像的好方法。此时我正在使用cv2.matchTemplate,它不时工作,它取决于给定的容差级别,以及背景“噪声”:其他对象可能相似,因此如果公差则返回很高兴。

当前的算法是这样的(伪)/只返回一个匹配(多重匹配得到类似 - 这是这个问题的实际情况):

haystack = im.read("stack.bmp")
image = Image.open("im.bmp")
MATCH = []
PIL_rotateImage for 0 to 360: # You get the point..
    image = np.array(rotatedImage)
    result = cv2.matchTemplate(image, haystack, algorithm) #algorithm: CCOEFF_NORMED
    resultMax = result.max()
    y,x = np.unravel_index(result.argmax(), result.shape)
    MATCH.append([resultMax, (x,y)])

Best_match = sorted(MATCH, key=itemgetter(0))[0] 
if Best_match[0] < minval: return False
*.....*

假设您有一个包含变形(部分和/或旋转)的子图像的模板,它与图像完全相同(对于人眼):

  1. 可以旋转对象
  2. 对象可以是部分的(但是容忍级别 - 例如:60%)
  3. 颜色并不总是相同,但相似。 (得到了比较颜色的算法)
  4. 对象并不总是存在......
  5. 对象可能会有点变形:某些像素可能会“错过”
  6. 有些东西可能会被遗忘:但总的来说:DEFORMED。
  7. 我也试过迭代列表,但这显然很慢,而我这样做的方式只是通过检查是否有一些第一个/最后一个或中心像素相同...&lt; - Ofcourse not working用于查找部分或旋转的对象。

    一个小图片(示例)支持我的写作,以帮助您理解: 只是一个例子!

    :有没有人有关于如何解决此问题的任何提示,伪代码或实用代码?可以给我一个开始的东西,因为我经常迷路。

0 个答案:

没有答案