Skip to content
mbredif edited this page Feb 11, 2016 · 17 revisions

General wiki

To consult the general wiki page of the itowns project, go to https://github.com/iTowns/itowns-project/wiki

Data preparation

Images

Images should be accessible over http using a url pattern (see below) Their format should be compatible with the THREE.js WebGL library, such as JPEG or PNG.

Images are, for now, considered to be composed of a set of panoramics where each panoramic is itself a set of unassembled images from a rigid multi-camera panoramic head. We also assume that the panoramic camera head is rigid such that the relative positions and rotations of image sensors are constant across panoramics. Thus image metadata is provided by two JSON files : panoramic poses and camera calibrations

Panoramic poses

The panoramic head moving frame is defined by a JSON file providing an array of panoramic objects:

[
 {
   "url_format": "images/140616/Paris-140616_0740-{cam_id_pos}-00001_0000482.jpg",
   "easting": 651187.76,
   "northing": 6861379.05,
   "altitude": 39.39,
   "pan_xml_heading_pp": 176.117188,
   "pan_xml_roll_pp": 0.126007,
   "pan_xml_pitch_pp": 1.280821,
   "pan_time_utc": "12:31:34.84099999998463 ",
   "id_platform": "Stereopolis"
 },
 ...
]
  • url_format provides a template url from which the image urls will be generated. Relative urls are treated relative to the path of this JSON metadata file
  • easting, northing, altitude is the origin of the moving panoramic frame defined in some static world coordinate system. The example above uses Lambert93 coordinates.
  • pan_xml_heading_pp,pan_xml_roll_pp,pan_xml_pitch_pp provide the orientation of the moving frame using three Euler angles (in degrees).
  • pan_time_utc denotes the simultaneous time of acquisition of all the images of this panoramic.
  • id_platform is currently unused. The plan is to support the use of multiple platforms / panoramic heads.

Camera calibrations

Image calibration should be provided using a json file containing an array of object of the following form, which describe all the cameras of the panoramic head :

[
 {
  "cam_id_pos": "300",
  "rotation": [
    0.000735648, -0.00148884, -0.999999,
    0.999998   ,  0.00205265,  0.000732591,
    0.00205156 , -0.999997  ,  0.00149035
  ],
  "position": [ -0.145711, -0.0008142, -0.867 ],
  "projection": [
    1150.66785706630299,    0               , 1030.29197487242254,
       0               , 1150.66785706630299, 1023.03935469545331,
       0               ,    0               ,    1
  ],
  "size" : [2048, 2048],
  "distortion": {
    "pps": [1042.178,1020.435],
    "poly357": [ -1.33791587603751819E-7, 3.47540977328314388E-14, -4.44103985918888078E-21 ]
  },
  "orientation": 3
 },
 ...
]
  • cam_id_pos provides a camera name to the calibration (which may be used to generate image urls)

  • rotation is an array of 9 floats, describing a 3x3 rotation matrix from panoramic coordinates (to be defined) to camera coordinates (X along lines, Y along columns, Z along the optical axis)

  • position denotes the image center position with respect to the panoramic coordinate frame

  • projection provides a 3x3 projection matrix from the 3D camera frame to the projective 2D image frame (in pixels). The common case is to provide the following matrix, where focal denotes the focal length along rows and columns in pixels and ppa denotes the principal point of autocollimation in pixels :

      focal.x , 0       , ppa.x,
      0       , focal.y , ppa.y,
      0       , 0       , 1
    
  • size is the sensor size (in pixels).

  • pps is the distortion center (in pixels).

  • poly357 provide the r3, r5 and r7 coefficients of a distortion polynom. ([0,0,0] means no distortion)

  • orientation adds a further rotation of 0,90,180 or 270 degrees around the optical axis. It is redundant with rotation and is likely to be deprecated in future releases. orientation:3 denotes no rotation.

Terrain (DTM)

TODO

Lidar

TODO

Buildings

TODO

Textured buildings

TODO

Clone this wiki locally