我是计算机视觉的新手,我想检测图像(或视频帧)中的特定和平面对象。
我所说的具体和平坦是什么意思?
平坦的
好吧,扁平物体就像物体,但是,你知道的,扁平的……这对我意味着什么:
- 物体将始终从大致相同的“正面”角度观察,即相机的轴(或多或少)与其表面法线相对应。(但它们可能围绕该轴旋转)。
- 照明角度不会改变任何东西的对象(即它没有投射阴影的凹凸和折痕)。
具体的
- 我知道其确切外观和形状的物品。它们都完全相同,没有变化。
- 我有一张他们的(精确的)照片(或代表)。
此类对象的示例
- 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,因为这似乎是标准的计算机视觉库,但我愿意接受任何解决方案。