9

我是计算机视觉的新手,我想检测图像(或视频帧)中的特定和平面对象。

我所说的具体和平坦是什么意思?

平坦的

好吧,扁平物体就像物体,但是,你知道的,扁平的……这对我意味着什么:

  • 物体将始终从大致相同的“正面”角度观察,即相机的轴(或多或少)与其表面法线相对应。(但它们可能围绕该轴旋转)。
  • 照明角度不会改变任何东西的对象(即它没有投射阴影的凹凸和折痕)。

具体的

  • 我知道其确切外观和形状的物品。它们都完全相同,没有变化。
  • 我有一张他们的(精确的)照片(或代表)。

此类对象的示例

  • 1美元钞票的正面
  • 蒙娜丽莎
  • (你最喜欢的杂志在这里)上一期的封面
  • ...

我相信这个问题很简单,我应该能够找到一个基本上像这样工作的计算机视觉库的函数:

> findObjects("object.png", "image.png")
[object at x1, y1, rotated z1 degrees, size height1*width1,
 object at x2, y2, rotated z2 degrees, size height2*width2,
 ...]

事实上,我什至并不真正关心对象的大小和位置,我只需要计数。

但我找不到这样的东西。我能找到的只有无数的人脸识别示例,这些示例使用称为 Haar 分类器的东西,这似乎根本不适合我的问题,因为:

  • 人脸不是平面的,因此分类器必须处理不同的照明、阴影等问题......
  • 它必须识别人脸,即相似但不完全相同的对象。
  • 它必须识别那些没有被训练过的面孔,因为它们“看起来像”面孔。
  • 证明这不合适:它必须用成百上千的正负样本进行训练。在我的问题中,所需的所有信息都包含在一个样本中。所以这不可能。

那么,这样的事情存在吗?

我更喜欢使用 OpenCV,因为这似乎是标准的计算机视觉库,但我愿意接受任何解决方案。

4

1 回答 1

6

一种方法是使用关键点匹配器。Opencv有一个演示做你想要的(在http://imgur.com/a/Bbc6C#UfTkn中找到http://imgur.com/a/Bbc6C#gxXGh作为预制演示(在opencv 2.2发行版中) : ). 输出在http://imgur.com/ZF1bh中可视化- 您应该能够从它开始调整它,以便它找到图像的多个实例并计算它们。samples/c/find_obj.cpp

于 2011-02-20T17:38:26.547 回答