附录 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,用密钥替换下面的空字符串:
API_KEY = ' '
结果如下:
API_KEY = '123fbbb81441231123cgg5b123d92123'
让我们创建一个简单的命令行工具,用来下载具有特定标签的图片。添加以下代码到一个名为 tagdownload.py 的文件中:
iimport flickr
import urllib, urlparse
import os
import sys
if len(sys.argv)>1:
tag = sys.argv[1]
else:
print 'no tag specified'
# 下载图像数据
f = flickr.photos_search(tags=tag)
urllist = [] # 用于存储下载了什么的列表
# 下载图像
for k in f:
url = k.getURL(size='Medium', urlType='source')
urllist.append(url)
image = urllib.URLopener()
image.retrieve(url, os.path.basename(urlparse.urlparse(url).path))
print 'downloading:', url
如果你想将 URL 列表写入一个文本文件,可以在末尾添加下面的代码:
# 将url 的列表写入文件
fl = open('urllist.txt', 'w')
for url in urllist:
fl.write(url+'\n')
fl.close()
在命令行输入:
$ 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
,例如 :
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
minx
、miny
、maxx
和 maxy
定义选择照片的地理区域(分别表示最小经度、最小纬度、最大经度和最大纬度)。响应将用 JSON 格式表示,显示如下:
{"count": 3152, "photos":
[{"upload_date": "02 February 2006", "owner_name": "***", "photo_id": 9439,
"longitude": -151.75, "height": 375, "width": 500, "photo_title": "***",
"latitude": -16.5, "owner_url": "http://www.panoramio.com/user/1600", "owner_id": 1600,
"photo_file_url": "http://mw2.google.com/mw-panoramio/photos/medium/9439.jpg",
"photo_url": "http://www.panoramio.com/photo/9439"},
{"upload_date": "18 January 2011", "owner_name": "***", "photo_id": 46752123,
"longitude": 120.52718600000003, "height": 370, "width": 500, "photo_title": "***",
"latitude": 23.327833999999999, "owner_url": "http://www.panoramio.com/user/2780232",
"owner_id": 2780232,
"photo_file_url": "http://mw2.google.com/mw-panoramio/photos/medium/46752123.jpg",
"photo_url": "http://www.panoramio.com/photo/46752123"},
{"upload_date": "20 January 2011", "owner_name": "***", "photo_id": 46817885,
"longitude": -178.13709299999999, "height": 330, "width": 500, "photo_title": "***",
"latitude": -14.310613, "owner_url": "http://www.panoramio.com/user/919358",
"owner_id": 919358,
"photo_file_url": "http://mw2.google.com/mw-panoramio/photos/medium/46817885.jpg",
"photo_url": "http://www.panoramio.com/photo/46817885"},
...
], "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/ 下载。每个立体像对都带有真实深度图像来方便比较结果。