1

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

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

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

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

谢谢!

4

3 回答 3

3

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

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

OpenCV 库包括 haar 训练和用于训练它以进行人脸/文本识别的示例程序。在那之后,您基本上必须弄清楚事情。我刚刚偶然发现的另一个有用资源是英特尔的OpenCV参考手册。所以,祝你好运!

于 2011-01-30T02:14:40.443 回答
2

使用第二种方法要容易得多,因为您知道 GPS 坐标的位置,并且知道您面对的方向(因为大多数移动设备都有集成的指南针和加速度计)。这已经被几个增强现实浏览器使用了——如果你使用 Android,你可能想看看“Layar”......

对用户更友好的方式是通过摄影,因为并非每部手机都有 GPS,而且他们总是需要先打开它……

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

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

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

希望有帮助...

于 2011-01-30T18:19:24.427 回答
2

Doing this as a computer vision task would be very difficult for someone with little computer vision experience - 10 years ago it was an entirely unsolved problem. But to get you started:

Neural networks (or properly, NN with back-propagation-style training) are rather old hat, and no longer the method of choice. Random forests are popular, mostly because they quite flexible, reasonably easy to implement, and have on-average no worse performance that the other classification methods around. Criminisi et al 2011 is the standard paper. http://research.microsoft.com/pubs/155552/decisionForests_MSR_TR_2011_114.pdf

Last time I checked the literature (a few years ago now) there appeared to be two good first choices of image feature. SIFT or sparse Haar wavelets.

Have a look at Criminisi et al 2008 (http://research.microsoft.com/pubs/72423/Criminisi_bmvc2008.pdf) for a random forest and Haar wavelet based object recognition system.

An alternative approach from Fergus et al. 2007, (http://cs.nyu.edu/~fergus/papers/fergus_ijcv.pdf) uses a simple image patch model tied together using a Bayesian network.

OpenCV is probably as good place as any to start to find existing code. Matlab also claims to have good support for these tasks.

于 2013-03-15T17:50:38.677 回答