特定扁平物体的物体检测

时间:2011-02-20 17:25:06

标签: opencv computer-vision object-recognition

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

具体和扁平是什么意思?

嗯,平面物体就像物体,但是,你知道,平坦......这对我意味着什么:

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

具体

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

此类对象的示例

  • $ 1 bill的正面
  • 蒙娜丽莎
  • 上一期(你最喜欢的杂志)的封面
  • ...

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

> 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,
 ...]

事实上,我甚至不关心物体的大小和位置,我只需要一个计数。

但我找不到这样的东西。 我所能找到的是无数的人脸识别实例,称为哈尔分类器,这似乎根本不适合我的问题,因为:

  • 脸部不平坦,因此分类器必须处理不同照明,阴影等问题......
  • 它必须识别面孔,即相似但不完全相同的物体。
  • 它必须识别尚未训练的面孔,因为它们“看起来像”面孔。
  • 证明这不合适:必须训练数百或数千个阳性和阴性样本。在我的问题中,所需的所有信息都包含在一个样本中。所以这不可能是正确的。

那么,这样的事情是否存在?

我更喜欢使用OpenCV,因为这似乎是标准的计算机视觉库,但我对任何解决方案持开放态度。

1 个答案:

答案 0 :(得分:6)

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