Image processing 图像中的图像算法
我需要一个用任何语言编写的算法来查找图像内部的图像,包括不同比例的图像。有人知道解决这样一个问题的起点吗 例如: 我有一张800x600的图像,在这张图像中有一个周长为180像素的黄色球。我需要能够找到这个图像,搜索模式是一个周长为15像素的黄色球Image processing 图像中的图像算法,image-processing,Image Processing,我需要一个用任何语言编写的算法来查找图像内部的图像,包括不同比例的图像。有人知道解决这样一个问题的起点吗 例如: 我有一张800x600的图像,在这张图像中有一个周长为180像素的黄色球。我需要能够找到这个图像,搜索模式是一个周长为15像素的黄色球 谢谢您应该看看,一个开源的计算机视觉库-这将是一个很好的起点。具体检查对象检测和方法。如果你想找到圆,一个简单的起点是 然而,围绕这一主题有一个完整的研究领域,称为目标检测和识别。在过去的十年中,最先进的技术有了显著的进步。这里有一个算法: 将图像
谢谢您应该看看,一个开源的计算机视觉库-这将是一个很好的起点。具体检查对象检测和方法。如果你想找到圆,一个简单的起点是 然而,围绕这一主题有一个完整的研究领域,称为目标检测和识别。在过去的十年中,最先进的技术有了显著的进步。这里有一个算法:
- 将图像分割成蓝色通道。您将注意到,彩色图像中的黄色区域现在在蓝色通道中变暗。这是因为蓝色和黄色是蓝色
- 反转蓝色通道
- 创建一个与图像大小相同的圆圈(圆周180像素)的灰度搜索模式。在黑色背景上画一个白色圆圈
- 使用反向蓝色通道计算搜索模式的颜色李>
- 互相关峰值将对应于球的位置
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++方面很差劲)我用这种方法,效果很好。但若搜索的项目具有相同颜色的可选轮廓,则此模式不起作用。如何更改包含与搜索圆周围的图案颜色相同的圆(未填充)的原始图像的图案?实际上我有一个长方形,但这并不重要。