图像算法中的图像

Pau*_*aul 5 image-processing

我需要一种用任何语言编写的算法来查找图像内部的图像,包括不同比例的图像.有谁知道解决这样的问题的起点?

例如:

我有800x600的图像,并且该图像是一个周长为180像素的黄色球.我需要能够找到具有15像素周长的黄色球的搜索模式的图像.

谢谢

mpe*_*kov 21

这是一个算法:

  • 将图像分割为RGB并拍摄蓝色通道.您会注意到彩色图像中黄色的区域现在在蓝色通道中是暗的.这是因为蓝色和黄色是互补色.
  • 反转蓝色通道
  • 创建一个灰度搜索模式,其圆圈的大小与图像中的圆相同(圆周为180像素).使它成为黑色背景上的白色圆圈.
  • 计算搜索模式与反转蓝色通道的互相关.
  • 互相关峰值将对应于球的位置.

这是运行中的算法:

RGB和R:

替代文字 替代文字

G和B:

替代文字 替代文字

倒B和模式:

替代文字 替代文字

Python + OpenCV代码:

import cv
if __name__ == '__main__':
    image = cv.LoadImage('ball-b-inv.png')
    template = cv.LoadImage('ball-pattern-inv.png')

    image_size = cv.GetSize(image)
    template_size = cv.GetSize(template)
    result_size = [ s[0] - s[1] + 1 for s in zip(image_size, template_size) ]

    result = cv.CreateImage(result_size, cv.IPL_DEPTH_32F, 1)

    cv.MatchTemplate(image, template, result, cv.CV_TM_CCORR)

    min_val, max_val, min_loc, max_loc = cv.MinMaxLoc(result)

    print max_loc
Run Code Online (Sandbox Code Playgroud)

结果:

misha@misha-desktop:~/Desktop$ python cross-correlation.py 
(72, 28)
Run Code Online (Sandbox Code Playgroud)

这将为您提供图像中图案第一次出现的左上角坐标.如果要查找圆的中心,请将圆的半径添加到x和y坐标.