Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 图像中的图像算法_Image Processing - Fatal编程技术网

Image processing 图像中的图像算法

Image processing 图像中的图像算法,image-processing,Image Processing,我需要一个用任何语言编写的算法来查找图像内部的图像,包括不同比例的图像。有人知道解决这样一个问题的起点吗 例如: 我有一张800x600的图像,在这张图像中有一个周长为180像素的黄色球。我需要能够找到这个图像,搜索模式是一个周长为15像素的黄色球 谢谢您应该看看,一个开源的计算机视觉库-这将是一个很好的起点。具体检查对象检测和方法。如果你想找到圆,一个简单的起点是 然而,围绕这一主题有一个完整的研究领域,称为目标检测和识别。在过去的十年中,最先进的技术有了显著的进步。这里有一个算法: 将图像

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

例如:

我有一张800x600的图像,在这张图像中有一个周长为180像素的黄色球。我需要能够找到这个图像,搜索模式是一个周长为15像素的黄色球


谢谢

您应该看看,一个开源的计算机视觉库-这将是一个很好的起点。具体检查对象检测和方法。

如果你想找到圆,一个简单的起点是

然而,围绕这一主题有一个完整的研究领域,称为目标检测和识别。在过去的十年中,最先进的技术有了显著的进步。

这里有一个算法:

  • 将图像分割成蓝色通道。您将注意到,彩色图像中的黄色区域现在在蓝色通道中变暗。这是因为蓝色和黄色是蓝色
  • 反转蓝色通道
  • 创建一个与图像大小相同的圆圈(圆周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
结果:

misha@misha-desktop:~/Desktop$ python cross-correlation.py 
(72, 28)

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

以前使用opencv 3和python 3制作的文章的一个版本

import cv2
import sys

min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(cv2.matchTemplate(cv2.imread(sys.argv[1]),cv2.imread(sys.argv[2]),cv2.TM_CCOEFF_NORMED))

print(max_loc)
另存为file.py并运行为:

python file.py image pattern

在这种情况下,圆的周长作为测量值实际上是非常无用的。您在这方面受过数学培训吗?这只是一些基本的向量空间变换。没有数学就无法解释。1000次投票给你先生,在找到你的答案之前,我花了几个小时(我在C++方面很差劲)我用这种方法,效果很好。但若搜索的项目具有相同颜色的可选轮廓,则此模式不起作用。如何更改包含与搜索圆周围的图案颜色相同的圆(未填充)的原始图像的图案?实际上我有一个长方形,但这并不重要。