附录 B 图像集

B.1 Flickr

广受欢迎的照片分享网站 Flickr(http://flickr.com/)是计算机视觉研究者和爱好者的金矿。这是一个很好的资源,包含数以亿计的图像,其中许多有用户做了标记,可以用来获得训练数据或用真实的数据进行实验。Flickr 有一个 API 接口服务,使其可以上传、下载和注释图像(以及更多功能)。对API完整的描述参见 http://flickr.com/services/api/,其中还包含许多编程语言的配套组件,包括 Python。

让我们看看如何使用名为 flickrpy 的库,参见 http://code.google.com/p/flickrpy/。下载文件 flickr.py。你需要从 Flickr 获得一个 API 密钥使其正常工作,这些密钥对于非商业用途是免费,对于商业用途则另有要求。点击 Flickr API 页面的链接“Apply for a new API Key”(申请新 API 密钥),然后按指示进行。获得 API 密钥后,打开 flickr.py,用密钥替换下面的空字符串:

  1. API_KEY = ' '

结果如下:

  1. API_KEY = '123fbbb81441231123cgg5b123d92123'

让我们创建一个简单的命令行工具,用来下载具有特定标签的图片。添加以下代码到一个名为 tagdownload.py 的文件中:

  1. iimport flickr
  2. import urllib, urlparse
  3. import os
  4. import sys
  5. if len(sys.argv)>1:
  6. tag = sys.argv[1]
  7. else:
  8. print 'no tag specified'
  9. # 下载图像数据
  10. f = flickr.photos_search(tags=tag)
  11. urllist = [] # 用于存储下载了什么的列表
  12. # 下载图像
  13. for k in f:
  14. url = k.getURL(size='Medium', urlType='source')
  15. urllist.append(url)
  16. image = urllib.URLopener()
  17. image.retrieve(url, os.path.basename(urlparse.urlparse(url).path))
  18. print 'downloading:', url

如果你想将 URL 列表写入一个文本文件,可以在末尾添加下面的代码:

  1. # 将url 的列表写入文件
  2. fl = open('urllist.txt', 'w')
  3. for url in urllist:
  4. fl.write(url+'\n')
  5. fl.close()

在命令行输入:

  1. $ python tagdownload.py goldengatebridge

你会得到 100 幅标记为“goldengatebridge”的最新图像。可以看到,我们选择了获取“中等”尺寸的图像。如果你想得到缩略图、原尺寸的图像或其他图像,这里有许多其他尺寸供选择;说明文档参见 Flickr 网站 http://flickr.com/api/

这里我们只对下载图像感兴趣;需要身份验证的 API 调用过程略微复杂。查看 API 文档了解更多的关于设置身份验证会话的信息。

B.2 Panoramio

谷歌照片分享服务 Panoramio(http://www.panoramio.com/) 是一个获取地理标记图像的好地方。该 Web 服务提供 API 以编程方式访问内容。API 的描述参见 http://www.panoramio.com/api/。你可以得到网站小部件并使用 JavaScript 对象访问数据。要从该网站上下载图片,最简单的方法是调用 GET,例如 :

  1. http://www.panoramio.com/map/get_panoramas.php?order=popularity&set=public&from=0&to=20&minx=-180&miny=-90&maxx=180&maxy=90&size=mediu

minxminymaxxmaxy 定义选择照片的地理区域(分别表示最小经度、最小纬度、最大经度和最大纬度)。响应将用 JSON 格式表示,显示如下:

  1. {"count": 3152, "photos":
  2. [{"upload_date": "02 February 2006", "owner_name": "***", "photo_id": 9439,
  3. "longitude": -151.75, "height": 375, "width": 500, "photo_title": "***",
  4. "latitude": -16.5, "owner_url": "http://www.panoramio.com/user/1600", "owner_id": 1600,
  5. "photo_file_url": "http://mw2.google.com/mw-panoramio/photos/medium/9439.jpg",
  6. "photo_url": "http://www.panoramio.com/photo/9439"},
  7. {"upload_date": "18 January 2011", "owner_name": "***", "photo_id": 46752123,
  8. "longitude": 120.52718600000003, "height": 370, "width": 500, "photo_title": "***",
  9. "latitude": 23.327833999999999, "owner_url": "http://www.panoramio.com/user/2780232",
  10. "owner_id": 2780232,
  11. "photo_file_url": "http://mw2.google.com/mw-panoramio/photos/medium/46752123.jpg",
  12. "photo_url": "http://www.panoramio.com/photo/46752123"},
  13. {"upload_date": "20 January 2011", "owner_name": "***", "photo_id": 46817885,
  14. "longitude": -178.13709299999999, "height": 330, "width": 500, "photo_title": "***",
  15. "latitude": -14.310613, "owner_url": "http://www.panoramio.com/user/919358",
  16. "owner_id": 919358,
  17. "photo_file_url": "http://mw2.google.com/mw-panoramio/photos/medium/46817885.jpg",
  18. "photo_url": "http://www.panoramio.com/photo/46817885"},
  19. ...
  20. ], "has_more": true}

使用 JSON 包 , 你可以获得 photo_file_url 字段的结果,见 2.3 节中的例子。

B.3 牛津大学视觉几何组

牛津大学视觉几何研究组在 http://www.robots.ox.ac.uk/~vgg/data/ 上公布有很多的数据集。在本书中,我们使用了一些多视图的数据集,例如“Merton1”、“Model House”、“dinosaur”和“corridor”序列,这些数据(某些包括摄像机矩阵和点跟踪)下载地址为 http://www.robots.ox.ac.uk/~vgg/data/data-mview.html

B.4 肯塔基大学识别基准图像

肯塔基大学基准图像集,亦称“ukbench”集,是一个包含 2550 组图片的图像集。该数据集中,每组图像共 4 幅,包含同一对象或同一场景下的不同视角。这是一个测试目标识别和图像检索算法一个很好的图像集。数据集可以在 http://www.vis.uky.edu/~stewe/ukbench/ 下载(全套约 1.5 GB),详见文献 [23]。

在本书中,我们使用一个较小的子集,只含有前 1000 幅图片。

B.5 其他

B.5.1 Prague Texture Segmentation Datagenerator与基准

该数据集在分割那一章里面用到过,可以生成许多不同类型的纹理分割图像,参见 http://mosaic.utia.cas.cz/index.php

B.5.2 微软剑桥研究院Grab Cut数据集

最初用于 Grab Cu 的论文 [27],该图像集提供带有用户注释的分割图像。该数据集和一些论文参见 http://research.microsoft.com/en-us/um/cambridge/projects/visionimagevideoediting/segmentation/grabcut.html。数据集中的原始图像现在是伯克利分割数据集(http://www.eecs.berkeley.edu/Research/Projects/CS/vision/grouping/segbench/)中的一部分。

B.5.3 Caltech 101

这是一个经典的数据集,其中包含 101 类照片,可以用来测试目标识别算法,参见 http://www.vision.caltech.edu/Image_Datasets/Caltech101/

B.5.4 静态手势数据库

这个来自 Sebastien Marcel 的数据集与其他几个手势数据集可在 http://www.idiap.ch/resource/gestures/ 下载。

B.5.5 Middlebury Stereo数据集

这些数据集用于基准立体算法,可在 http://vision.middlebury.edu/stereo/data/ 下载。每个立体像对都带有真实深度图像来方便比较结果。