匹配基于模板的图像

时间:2011-01-04 05:00:44

标签: c# image-processing ocr

我无法想出一种方法来描述我想要更好理解的问题区域,所以我设置了以下方案以帮助说明

考虑到下面的图像,我将如何编写可以找到与位置1中的图像匹配的所有幸福面孔(称为模板图像)并忽略位置2和5中的悲伤面部图像的东西。

alt text ...

我不是在寻找任何人为我解决它,我只需要一个有见地的第一步让我开始,因为它是我未知的领域。

这会叫什么?我应该查询谷歌和堆栈溢出,以便找到有用的信息?有没有人有一个可以帮助我入门的库或代码片段?

另外,我是一名.NET / C#程序员,所以任何碰巧用我母语的东西都会受到特别赞赏,但不是一个交易破坏者。

提前致谢... 麦克

5 个答案:

答案 0 :(得分:2)

请参阅以下链接,以帮助您使用AForge.net识别图像 Detecting some simple shapes in images

答案 1 :(得分:1)

最简单的技术可能是template matching。但是,示例图像的差异非常小,因此可能很难区分示例中的图像1和图像。

答案 2 :(得分:1)

该技术实际上取决于实际情况。这有几个名称,例如基于内容的检索,模板匹配,图像描述等。

我的建议:

如果您的场景类似于面部,以已知大小的已知角度旋转,请寻找更简单的技术,例如两个图像的相关性。为每个角度做它,你得到它。

如果您知道图像之间的唯一差异是旋转,这意味着您只有旋转的快乐和悲伤面,没有其他扭曲,您可以寻找旋转不变的匹配方法。傅里叶理论可以帮助你,也可以映射与相关性相关的极坐标。

在最糟糕的情况下,如果您有多种变体,则需要查看图像描述符和模式匹配技术。这些也取决于图像类型,并且有几种。如果你最终得到这些,你将有一个带有一些库/代码的方案来从图像中提取特征和分类器,告诉你哪些是相同的,哪些不是,有某种自信(如距离测量)特征向量之间。)

答案 3 :(得分:1)

可能的算法是:

  1. 计算图像的渐变
  2. 对于每个渐变向量,计算渐变方向
  3. 计算渐变向量的方向直方图(角度与频率)
  4. 这种方向直方图对于“快乐”与“悲伤”的笑脸是截然不同的。

    玩得开心。

答案 4 :(得分:0)

在这种情况下完成工作的简单穷人算法可能是。

  1. 确定图像的边界框,并假设其中心为圆形。
  2. 在圆圈中搜索两只眼睛作为BLOB的。即包含总共20个或像素的对象,这些对象适合小的定义矩形。
  3. 一旦你需要定位两只眼睛,就可以确定两条线之间相交线的斜率,从而确定面部的方向。
  4. 从两只眼睛中间的点直接向下穿过圆圈的中心到嘴巴的距离返回2个可能距离中的1个。即悲伤或快乐。
  5. 快速,脏和硬编码到这个特定的图像,但它会很快完成工作。

    AForge选项可能是一种更好的通用方法。