如何从图像中识别特定的物理对象?

时间:2011-01-29 21:14:26

标签: image-processing image-recognition

我的目标是让一个拥有手机的人在我们的大学校园里拍摄当地地标(建筑物或其他地方(如凉亭,雕像等))的图片,并能够识别地标和告诉他们这是什么。

例如,他们四处走动,他们看到一个带金属圆顶的大楼。他们不知道它是什么,但它看起来很有趣,所以他们拍了一张照片,应用程序告诉他们这是篮球中心(以及其他相关信息)。

我在这个特定领域的知识有限,这使我想到使用神经网络并训练程序来识别特定的地方。如果是这种情况,请同时给我这个选项的资源,因为我对NN的了解程度是,如果他们接受过培训,他们可以用来识别事物。 :)

我知道OpenCV库,但由于我不是C开发人员,我想知道在开始之前我是否需要走这条路。我主要是在Java工作,但我不反对弄脏我的手。

谢谢!

3 个答案:

答案 0 :(得分:3)

这是对原始问题的回应。  最好的资源是O'Reilly的书Learning OpenCV

您可以免费阅读Google图书上的内容,并使用C和OpenCV。您可以使用python或Java来适应您的工作。

OpenCV库包括haar培训和样本程序,用于培训面部/文本识别。在那之后,你基本上必须解决问题。  我偶然发现的另一个有用的资源是英特尔的reference manual OpenCV。  祝你好运!

答案 1 :(得分:2)

使用你的第二种方法更容易,因为你知道从GPS坐标到哪里,你知道你面临的方式(因为大多数移动设备都有一个集成的罗盘和加速度计)。这已被几个增强现实浏览器使用 - 如果你使用Android,你可能想看看“Layar”......

更加用户友好的方式是通过摄影,因为不是每部手机都有GPS,他们总是需要先打开它......

首先,您需要获得建筑物最显着的结构和特征。 OpenCV有一些方法。特征提取是图像处理中的一个重要课题。你应该在图像上提取边缘,采用突出的特征/点,并将它们与你所有建筑物的特征数据库进行比较。

你可以使用神经网络进行训练,但你仍然需要很多参考图片来提取数据以获得学习过程。

(为了与其他对象的整个数据库进行比较,您甚至可能需要查看服务器端计算,而不是在手机上完成所有这些操作)

希望有帮助...

答案 2 :(得分:2)

对于计算机视觉经验很少的人来说,这是一项计算机视觉任务非常困难 - 10年前,这是一个完全未解决的问题。但是为了让你开始:

神经网络(或者恰当地,具有反向传播式训练的NN)相当古老,不再是选择的方法。随机森林很受欢迎,主要是因为它们非常灵活,相当容易实施,并且平均而言其他分类方法的平均性能并不差。 Criminisi等2011是标准论文。 http://research.microsoft.com/pubs/155552/decisionForests_MSR_TR_2011_114.pdf

上次我检查了文献(几年前的现在),似乎有两个很好的图像特征首选。 SIFT或稀疏的Haar小波。

看看Criminisi等人2008(http://research.microsoft.com/pubs/72423/Criminisi_bmvc2008.pdf)对随机森林和基于Haar小波的物体识别系统的看法。

Fergus等人的另一种方法。 2007年,(http://cs.nyu.edu/~fergus/papers/fergus_ijcv.pdf)使用贝叶斯网络捆绑在一起的简单图像补丁模型。

OpenCV可能是开始查找现有代码的好地方。 Matlab还声称对这些任务有很好的支持。