原文地址:  https://github.com/amir32002/3D_Street_View

说明:个人学习笔记,翻译整理自github/airsim.


  • 简介

该存储库共享包含6DOF相机姿态,8个城市的3D模型和扩展元数据的街景图像(2500万张图像和118万张匹配图像对)的大型数据集。 数据来自一系列匹配的图像; 匹配对的内容显示相同的物理点,而相机视点显示较大的基线(通常> 120度)。 该数据集可用于学习6DOF相机姿态估计/视觉测距,图像匹配以及各种3D估计。 您可以从下面的数据集中看到一些示例图像包以及更多示例。

通过开发一个系统,通过谷歌街景图像及其地理元数据来整合城市的地理参考三维模型,数据集自动收集,无需人工注释。 有关如何收集数据集的更多信息,请参阅[论文]。

论文连接:http://3drepresentation.stanford.edu/

  • 3D模型城市:

该数据集覆盖纽约,芝加哥,华盛顿,拉斯维加斯,佛罗伦萨,阿姆斯特丹,旧金山和巴黎市中心及周边地区。 我们将发布这些城市的3D模型以及街景图像和元数据。 这些模型是地理注册和手动生成的。 您可以在下面看到3D模型的示例快照。 你可以在这里看到更多的快照。

  • Paper

该数据用于以下文章以学习通用/通用3D表示法:

通过姿势估计和匹配的通用3D表示,Amir R Zamir,Tilman Wekel,Pulkit Agrawal,Jitendra Malik,Silvio Savarese,ECCV16。

Paper1:    Generic 3D Representation via Pose Estimation and Matching

http://cvgl.stanford.edu/papers/zamir_eccv16.pdf

Paper2:  Generic 3D Representation via Pose Estimation and Matching supplementary material

http://cs.stanford.edu/%7Eamirz/index_files/0633_supp.pdf

有关数据收集和方法的更多详细信息,请访问 http://3drepresentation.stanford.edu/

  • 数据概述Data Overview:

  • 该数据集包含2500万个谷歌街景图像,形成1.18亿个相应的对。我们在上述城市的密集网格中收集图像。根据城市的三维模型,我们在立面上密集采样点并执行射线追踪,以查找所有街景视图全景图,无需遮挡即可看到相同的目标点。对于每个图像,我们知道街景摄像头的地理位置以及聚焦目标点的位置。由于谷歌街景提供了360个全景图,我们计算标题和俯仰角,以便我们可以捕获640x640图像(全景图)部分,显示其中心的相应目标点。如果两个图像显示相同的物理目标点,则它们会形成一对。通常通过2-7个对应的街景图像观察每个目标点。图像由一个640x640 jpg以及一个包含元数据的相同名称的文本文件给出,例如相机和目标点的地理位置,到目标的距离或相机的姿态。图像的文件名将为街道视图位置和目标点编码唯一的ID。这允许轻松识别相应的图像。这些图像被压缩成多个zip文件,这样生成的文件大小不会超过最大值。
  • 测试集:

为了确保测试集的质量并保持评估不受自动数据收集引入的潜在错误的影响,测试集中的每个数据点都至少由三台亚马逊机械突击队进行验证,并删除了嘈杂的实例。程序和统计资料在补充材料中加以说明。测试对保证:

在两个补丁中显示相同的确切物理点(由Turkers重新验证)
    两个补丁中心之间的平移矢量的大小(由Turker点击位置重新测量)为<25像素(即图像宽度的〜4%),
    平移矢量中两个补丁中心之间的不确定性(通过Turker单击位置之间的差异测量)为<15像素(图像宽度的〜2%),

您可以下载几千个随机挑选的测试数据点[此处https://storage.googleapis.com/amirs/3Drep_dataset/testset_pairs_visualization_v1.zip]的可视化和准确性分析。下面您可以看到一些示例测试对,其中两个图像/补丁的中心应该匹配,三个Turker通过点击验证。详见[补充材料http://cs.stanford.edu/%7Eamirz/index_files/0633_supp.pdf]。

  • 噪音统计:

通过Amazon Mechanical Turk进行用户研究,分析最终数据集中的噪音特征并量化其数量。 研究和讨论的结果可以在[补充材料http://cs.stanford.edu/%7Eamirz/index_files/0633_supp.pdf]的第3.2节中找到。 这对有兴趣开发和评估方法的研究人员非常有用,这些方法能够自动大量使用,因此几乎无需收集数据,但代价是噪音适度。

  • 下载

请注意,通过下载此数据集,您同意非商业用途和许可证。
https://goo.gl/ERPCsa
数据集很大(800GB)。 为了使它更方便,它包含了多个包含图像和元数据的tar文件。 测试集和3D模型作为单独的文件夹提供。

  • 数据集结构

街景数据以包含元数据的图像和相应的文本文件的形式给出。数据存储在多个tar文件中,其中每个tar文件包含一个数据集的图像和元数据文件。数据集对应于地图上的矩形子区域。

对于每个街景点 - 目标点对应关系,都有一个图像和一个具有相同名称的文本文件。数据结构如下:

README.md
README.txt
\<DatasetID.tar>
<DatasetID>_<ImageID>_<ViewID>_<TargetID>.jpg
<DatasetID>_<ImageID>_<ViewID>_<TargetID>.txt
  • 编码ID的含义如下所述:

DatasetID <int>数据集的标识。数据集对应于地图上的矩形区域。

TargetID <int>数据集中唯一的目标点的ID。在名称中具有相同目标标识的图像在其中心显示相同的物理点。

PatchID <int>补丁本身的ID。一个补丁在一个数据集中有一个唯一的ID。

StreetViewID <int>街景视图位置的ID。街景位置在一个数据集内具有唯一的ID。该ID与地理位置唯一关联。

所有ID(数据集ID除外)在一个数据集中唯一唯一。整个文件名始终是唯一的。

图像被采集,使得3D目标点应该被投影到中心像素(直到可能的对准误差)。

该文本文件包含两行(谷歌元数据和对齐信息)。第一行以d开头,第二行以a开头。这些行包含空格分隔的数字。

数字的含义在下面解释,与文件中的顺序相同:

  • Google元数据(d)

DatasetID <int>数据集的标识。数据集对应于地图上的矩形区域。

TargetID <int>数据集中唯一的目标点的ID。在名称中具有相同目标标识的图像在其中心显示相同的物理点。

PatchID <int>补丁本身的ID。一个补丁在一个数据集中有一个唯一的ID。

StreetViewID <int>街景视图位置的ID。街景位置在一个数据集内具有唯一的ID。该ID与地理位置唯一关联。

Target Point<3x1 double>目标点在全球地理参照系(纬度,经度,高度)中定义,其中经度和纬度以十进制度给出,高度以米为单位给出。

Target Surface Normal<3x1 double>底层几何图形的法向矢量(例如建筑物的正面)。类似于曲面法线,矢量被标准化为1。法线也是在全球坐标系统(WebMercator)中定义的,

Street View Location<3x1 double>相应街景全景的位置。经度和纬度以十进制度数给出。高度以米为单位给出。

Distance to Target<double>街景位置和目标点之间的距离(以米为单位)。

Heading<double>以度为单位的街景摄像头的标题

Pitch<double>街景相机的间距,以度为单位

Roll <double>以度为单位的街景摄像机滚动(始终为零)

标题,俯仰和滚动Heading, pitch, and roll描述(虚拟)街景摄像机的绝对方向,以使目标点聚焦在图像的中心。方向以绝对角度给出。

给定街景位置的整个图像是球形的。我们使用的图像只是该球体的一个矩形区域。

Heading: 0 means north, 180 means south
Pitch:0表示看起来平行于地面,-90表示向地面看,90看向天空。

  • 对齐数据(a)

这些图像有两个版本发布:原始(没有内容对齐)和对齐(与内容对齐,以减少元数据缺陷造成的问题)。 第二行包含有关对齐后处理的信息。 如果文本文件不包含该行,则不应用后处理。

我们应用后期处理步骤来补偿由于谷歌街景中的注册错误或导致遮挡的未报告结构导致的图像对齐不准确。 该算法估计并对图像应用线性变换以消除未对准。 粗略地说,对于给定的目标点,算法选取一个对应的街景作为参考,并尝试对齐所有其他视图,以使目标点投影到所有视图的相同图像位置。 请注意,并非所有图像都可以被处理。

Corrected Patch Center <2x1 double>
New (aligned) location of the target point in the given street view image

Warp Matrix <3x3 double>
Matrix that rectifies the street view image such that the target normal is orthogonal to the viewing plane

Bounding Box Coordinates <4x2 double>
coordinates of the virtual, unaligned bounding box in the image. The
bounding box represents a region on the infinite plane in space that is
defined by target point and normal. The bounding box has the same size
(in meters) for one target id.

Registration Matrix <3x3 double>
matrix that transforms the given street view image, such that the target
point is projected to the image center. (in order to align the image,
we could either move the projection of the target point or transform the
image)

The following quantities are heuristically used to say something
about the quality and the reliability of the registration process:

Total Sift Flow Energy <int>
Total energy of the sift flow algorithm that registers the warped street view images. The lower the better.

Transformation Inlier Ratio <double>
Inlier ratio of the RANSAC algorithm that founds the best fitting
projective transformation matrix for the flow field computed by SIFT
flow. The higher the better.

Similarity Measure <double>
Standard similarity measure (ssi) of the warped and registered image and the warped reference image. The higher the better.

Distortion <double>
Lets assume that we define a square-shaped bounding box in the reference
view and transform it by the resulting registration matrix R. B' = R *
B. Distortion is the ratio of the area of B' and B. Defined to be
between 0 and 1. The higher the better.

Corrected Bounding Box <4x2 double>
Aligned version of <bounding box coordinates 4x2 double>.

  • Citations

If you use this dataset please cite:

@inproceedings{zamir2016generic,
title={Generic {3D} representation via pose estimation and matching},
author={Zamir, Amir R and Wekel, Tilman and Agrawal, Pulkit and Wei, Colin and Malik, Jitendra and Savarese, Silvio},
booktitle={European Conference on Computer Vision},
pages={535--553},
year={2016},
organization={Springer}
}

<airsim文档学习> Street View Image, Pose, and 3D Cities Dataset的更多相关文章

  1. EasyUI文档学习心得

    概述 jQuery EasyUI 是一组基于jQuery 的UI 插件集合,它可以让开发者在几乎完全不需要CSS以及复杂的JS代码情况下完成美观且功能强大的Web界面. 本文主要说明一些如何利用Eas ...

  2. Spring文档学习

    Spring文档学习 参考Spring Framework Documentation学习 1. IoC 容器 1.1 容器实例化 <beans> <import resource= ...

  3. <文档学习>AirSim/using_car.md Choosing Your Vehicle: Car or Multirotor

    如何在AirSim中使用汽车 默认情况下,AirSim中使用的车型为多转子multirotor. 如果你想使用汽车,那么只需在你的settings.json(https://github.com/Mi ...

  4. 这可能是最详细的 iOS 学习入门指南(含书目/文档/学习资料)

    1 零基础小白如何进行 iOS 系统学习 首先,学习目标要明确: 其次,有了目标,要培养兴趣,经常给自己一些正面的反馈,比如对自己的进步进行鼓励,在前期小步快走: 再次,学技术最重要的一点就是多动手. ...

  5. Cassandra1.2文档学习解读计划——为自己鼓劲

    最近想深入研究一下Cassandra,而Cassandra没有中文文档,仅有的一些参考书都是0.7/0.6版本的.因此有个计划,一边学习文档(地址:http://www.datastax.com/do ...

  6. 《MATLAB从入门到放弃》二维曲线和图形绘制基础(二):使用Help文档学习line、plot、plotyy、subplot、hold绘图函数

    目录: »  plot 最常用的二维曲线绘图函数 >  帮助文档 >  基本使用语法 >  线条的样式.符号和颜色调整 >  图形属性调整 >  使用图形句柄进行设置 » ...

  7. 通过程序校验xml文档学习笔记

    校验xml文档,可以通过程序来校验,利用一段js代码即可. 各行代码的含义已经写出,运行这个html文件,检验如下xml代码: 结果如下: 如果xml文档出现错误: 结果如下: 其中,obj.asyn ...

  8. Nodejs v4.x.0API文档学习(2)Assert断言测试模块

    文档参考地址:https://nodejs.org/dist/latest-v4.x/docs/api/ Assert(断言) assert模块提供了一组简单的断言测试方法,可以拥有测试不变量.该模块 ...

  9. Nodejs v4.x.0API文档学习(1)简介

    文档参考地址:https://nodejs.org/dist/latest-v4.x/docs/api/ 简介 下面是用nodejs编写的一个web服务的例子,返回"Hello World& ...

随机推荐

  1. Python学习之数组类型一:

    Python学习之数组类型一: Numpy中的向量与矩阵: 1.创建:  向量.矩阵均由array函数创建,区别在于向量是v=array( [逗号分隔的元素] ), 矩阵是M=array( [[ ]] ...

  2. C#设计模式(8)——桥接模式(Bridge Pattern)(转)

    一.引言 这里以电视遥控器的一个例子来引出桥接模式解决的问题,首先,我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器做为一个抽象类,抽象类中提供遥控器的所有实现,其他具体电视 ...

  3. 微信小程序scroll-view不能实现下拉刷新

    一般在列表展示页面,会使用到上拉加载和下拉刷新功能,在scroll-view中有bindscrolltolower事件,可以实现上拉加载功能,但是却没法实现下拉刷新. 如需同时使用两种功能,解决步骤如 ...

  4. Java 中的E,K,V,T,U,S

    Java泛型中的标记符含义:  E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number ...

  5. Fluxion无线攻击

    使用步骤 github地址 https://github.com/deltaxflux/fluxion 进入到fluxion目录下 ./fluxion 启动fluxion  启动之后会先检测没有安装的 ...

  6. halcon脱离hdvp运行

    halcon如何脱离HDevelop运行:第一种方式(测试多台电脑全部正常):(推荐)使用本站开发的脱机修复助手:https://www.51halcon.com/thread-1217-1-1.ht ...

  7. lua语言中的假

    [1]测试及结论 (1)代码 local var_false = false local var_nil = nil if var_zero then print('var_zero : true') ...

  8. 字典排序 sorted

    a = {6:2,8:0,1:4,-5:6,99:11,4:22} print( sorted(a.items()) ) #默认安照key排序的print( sorted(a.items(),key= ...

  9. Linux基础命令---lpstat查看打印任务

    lpstat lpstat指令用来显示当前任务.打印机的状态.如果没有参数,那么就显示打印队列. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora.openSUSE. ...

  10. List 循环删除 指定元素的 方法

    使用Iterator进行循环,在删除指定元素.如果使用for 或 foreach 在删除指定下标是,list.size 会相应的缩短且下标前移,导致相邻满足条件的元素未删除 Iterator<S ...