计算机视觉:图像比较和计数?

时间:2013-08-18 19:56:34

标签: c++ python c opencv computer-vision

我很好奇是否有可能计算一张照片中的东西数量,让我们说一下鸭子的数量,首先拍摄一张样本照片,然后在单独的照片中查看匹配的位置。所以为了澄清,我们将有2张图片(一张图片有一只鸭子,一张图片有4只鸭子,为了参数),程序会看到它可以在4张鸭子图片中叠加一张图片鸭子图片 - 从而计算图片中有多少只鸭子。我一直在阅读计算机视觉,我知道opencv的网站谈到使用傅立叶变换将图像分解为其幅度和相位。我希望可能将一张鸭图片的大小变成矩阵,然后将它与四张鸭图片中的一系列矩阵进行比较。

我想这将是非常困难的,看到我将不得不以某种方式告诉程序初始鸭子的形状,然后将鸭子的分解图像信息存储到矩阵中,然后将其与从矩阵中分解的矩阵进行比较。其他图片。有什么想法/建议吗?我认为这将是一次很好的学习经历,因为我是一名电气工程专业的学生,​​上学期我学过傅立叶变换,DFT等等 - 实际应用它们真的很酷。

1 个答案:

答案 0 :(得分:1)

您所说的是对象识别 - 计算机视觉中的一个基本问题。你的主要想法 - 拍摄物体的照片,从中获取一些特征,然后在其他图像上找到相同的特征集 - 是正确的。然而,逐像素比较(无论在时间或频域中)是非常容易出错的并且通常给出差的结果。在大多数情况下,更高级别的功能可以提供更好的结果。

要开始使用,请查看OpenCV中的Cascade Classifier,它使用类似Haar的功能(具有特定灰度级的小矩形)。它最为人所知的是面部检测和识别,但也可以训练其他物体。

您可能也会对SURF方法感兴趣,该方法会搜索具有相似特征的点,甚至是AAMs,这些方法会尝试对对象的形状和外观进行建模。