繁体   English   中英

图像中的目标检测

[英]Object Detection in an Image

我想检测图像中的某些元素。 为此,我得到图像和指定的元素(如鼻子),然后从Pixel(0,0)开始搜索我的元素。 但是软件性能太差了,因为我一个接一个地遍历像素。 我认为我需要一些智能算法来解决这个问题。 也许机器学习算法对此很有用。 你有什么想法

我将从viola jones对象检测框架开始

这是一种有监督的学习技术,可让您检测出具有高概率的任何对象。
(尽管本文主要指的是面孔,但它是为一般对象设计的。)

如果您选择这种方法-您的主要工作将是获得分类训练集。 您以后可以评估使用交叉验证的算法的质量。

AFAIK,它在OpenCV库中实现(我不熟悉该库以提供帮助)

您可以使用图像和搜索模式的傅立叶变换来进行非常快速的互相关

一个很好的实现是例如OpenCV的matchTemplate函数

如果您的图案始终在图像上始终具有相同的旋转度和缩放比例,则效果最佳。 如果不是,则可以使用模式的多个缩放/旋转版本重复搜索。

这种方法的一个优点是不需要培训阶段。


另一个更适合您的模式的更简单方法是:

使用连接的组件标签来识别具有正确数量的白色像素的斑点,将其作为元素的中心矩形。 这将消除几乎所有的误报。 将搜索集中在剩下的几个景点上。 同样,OpenCV具有一个不错的Blob库,用于处理此类问题。

如果您要在计算机生成的图像中寻找简单的几何形状(如您提供的示例),那么您就不必为机器学习而烦恼。

例如,这是您尝试在原始图像中找到的组件之一:

(图片已根据要求删除)

假设此组件始终以相同的尺寸绘制,则顶线和底线始终相距21个像素。 通过将此图像与其垂直方向偏移21个像素的副本进行组合,并将两个图像中较亮的一个作为每个位置的像素值,可以大大缩小搜索空间。

(图片已根据要求删除)

同样,此组件左右两边的垂直线相距47像素,因此我们可以使用47像素的水平移位重复此过程。 这将在组件位置处产生大约24px高的垂直条。

(图片已根据要求删除)

通过在经过处理的图像的垂直列中查找22至26像素长的黑色像素,可以很容易地检测到这些条。 这将为您提供候选位置的简短列表,您可以在其中更彻底地检查此组件的存在,例如,通过计算局部2D互相关。

这是处理整个图像后的结果。 到达此阶段仅需几毫秒。

(图片已根据要求删除)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM