特定扁平物体的物体检测

Goh*_*ohu 9 opencv computer-vision object-recognition

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

具体和扁平是什么意思?

平面

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

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

具体

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

这类物体的例子

  • 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,
 ...]
Run Code Online (Sandbox Code Playgroud)

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

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

  • 面部不平坦,因此分类器必须应对不同的照明,阴影等问题......
  • 它必须识别面部,即相似但不完全相同的对象.
  • 它必须识别没有经过训练的面孔,因为它们看起来像"面孔".
  • 证明这不合适:它必须经过数百或数千个正面和负面样本的训练.在我的问题中,所需的所有信息都包含在一个样本中.所以这不可能是正确的.

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

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

eta*_*ion 6

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

  • @Gohu:将颜色信息包含在功能中应该不会太难.但是,请注意颜色:如果相机或照明设备发生变化,颜色会发生变化.这对我们人类来说并不明显,但这对计算机来说是一个难题,请参阅http://en.wikipedia.org/wiki/Color_constancy (2认同)