Coder Social home page Coder Social logo

sbrunoberenguel / omniscv Goto Github PK

View Code? Open in Web Editor NEW
40.0 5.0 9.0 216.58 MB

Omnidirectional Synthetic image generator for Computer Vision

License: GNU General Public License v3.0

Python 100.00%
omnidirectional-images synthetic-images non-central-cameras central-cameras catadioptric-cameras computer-vision image-simulator fisheye-image equirectangular-panorama semantic-segmentation

omniscv's Introduction

OmniSCV: Omnidirectional Synthetic image generator for Computer Vision

Python implementation for a camera simulator.

Introduction

Camera models

In this simulator we include two types of projection models, central and no-central. For the central cameras, we have implemented:

  • Equirectangular
  • Cylindric
  • Catadioptric cameras:
    • Para-Catadioptric
    • Hyper-Catadioptric
    • Planar-Catadioptric
  • Fish eye cameras:
    • Equiangular
    • Stereographic
    • Equi-solid angle
    • Orthogonal
  • Scaramuzza
  • Kannala-Brandt

For no-central cameras, we have implemented:

  • Panoramic
  • Catadioptric cameras:
    • Spheric mirror
    • Conic mirror

Citing

If you use and like our tool, please cite our paper OmniSCV: An Omnidirectional Synthetic Image Generator for Computer Vision

Use Instructions

Install Requirements

This code has been compiled and tested in Linux using:

  • python 2.7
  • python 3.6

Package requirements:

To use this image simulator, first you have to have installed the following python packages. The version of each package is that of development, other versions might work but are not tested.

  • UnrealCV
  • Numpy (version 1.16.6)
  • Math
  • Pillow (version 5.1.0)
  • StringIO
  • os
  • scipy.optimization (version 1.2.1)
  • cv2 (version 4.2.0)
  • Open3D (version 0.9.0.0)

User guide

First steps

After download this repository on your own PC, you have to copy the simulator folder called "Pack" in the same directory where the UnrealCV executable is located. In the example we will see how this path looks like.

With our "Pack" placed in the correct directory, we enter the folder and we will find several files. The main script is "simulator.py". From this script we will run the image simulator OmniSCV and we will be able to obtain the images from the virtual environment. The other files we can find in the folder are:

  • cam_loc.txt : in this file we will specify the locations from where we want to take the images
  • cam_rot.txt : in this file we will set the rotation for each location. This file is prone to use for trajectories.
  • Other : this files will not be used by the user, are for support the main program

OmniSCV

These cameras are modeled acording different mathematical models. These models are explained with detail in the papers of Jesus Bermudez-Cameo

Once known the models, we start to build the images of this simulator mapping our environment in a sphere arround the camera. As an sphere is difficult to obtain from planar images, we aproximate it with a cube-map formed by 6 images in the main directions (the cartesian axis X, Y, Z). We build a cube-map for each location in our scenario where we want to make an image. To do so with our simulator, we first need to set the locations where we want to take the images. Editing the file 'cam_loc.txt', we set the different locations where we are going to get the cube-maps. In this file we have to write the coordinates (x,y,z) in one line and separated by white spaces for each location.

Defined each location in the environment from where we take the acquisition, we run our main program 'simulator.py'. After we run the program, a menu will appear (If it takes more than 5 seconds to appear we recomend to close and reopen the simulator). From this menu we will be able to chose differenct functions.

The first one to appear is Acquisition. This function makes an image acquisition from the virtual environment for the composition of central projection images.

The second option is Composition. Here we can choose which kind of image we want to compose. It's divided between central and non-central projection systems. For the central projection systems we need to build the cube-maps (made with the acquisition). For the non-central systems, since acquisition and composition are mixed, you can do the composition directly, without previous acquisition.

Next comes Scenario. It will give the name of the scenario to the composed images. Usefull for large data-sets with different scenarios.

And last but not least, Functions. It's under development, stil have some bugs. However, we can obtain ground truth information of the layout of the scene extracting the layout of the environment.

	$ python simulator.py

	 Welcome to the image simulator OmniSCV
	-------------------------------------
	This simulator has been made at the University of Zaragoza, Spain
	We hope you enjoy it
	-------------------------------------

	 Main menu:
	  (Ac)quisition
	  (Co)mposition
	  (S)cenario name
	  (F)unctions
	  (E)xit

	 What do you want to do?: 

Downloads

Data set

Omnidirectional images from different indoor environments generated with Unreal Engine 4: download

Scenarios

UnrealCV scenarios: download

License

This software is under GNU General Public License Version 3 (GPLv3), please see GNU License

For commercial purposes, please contact the authors: Bruno Berenguel-Baeta ([email protected]), Jesús Bermudez-Cameo ([email protected]) and Josechu Guerrero ([email protected])

Note from the authors

This code has not been thoroughly tested, which means it may have some bugs. Please use with caution.

The authors and developers of this code want the best for the users and have gone to great lengths to make it easy to use and accessible. Be nice to them and enjoy their work.

If any problem may appear, do not hesitate and we will do our best to solve it (at least we will try).

omniscv's People

Contributors

sbrunoberenguel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.