• Stars
    star
    124
  • Rank 286,572 (Top 6 %)
  • Language
    C++
  • License
    MIT License
  • Created about 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A computer vision library for omnidirectional (360 degree) cameras.

cpp build and test build CD-PyPi PyPI version

A computer vision library for omnidirectional(360Β°) cameras. This package is divided into two parts:

  • Basic functions for inter-conversion of different types of mappings associated with omni directional cameras, virtual reality and 360Β° videos, like cubemap, spherical projections, perspective projection and equirectangular projection.
  • Software applications like 360Β° video viewer, fisheye image generator with variable intrinsic properties, GUI to determine fisheye camera paraeters.
Objectives of the OmniCV library

This library has been developed with the following obectives:

  • Quick and easy to use API to encourage and enhance the research in areas using omni directional cameras.
  • To support real time applications.
  • Provide extensions in python as well as C++ as they are the languages used by researchers.
  • Provide ROS package to use in robotics research.

Click here to know more about omni directional cameras

Highlights

Some interesting 360Β° video effects

Arround the world effect Hollow world effect

Creating custom fisheye images

Equirect2Fisheye Custom image using GUI

GUI to determine fisheye camera parameters

GUI to get radius GUI to get fisheye params

Horizontal and vertical orientation viewing mode support

360Β° viewer mode 1 360Β° viewer mode 2

Index to theory, examples and application notes

  • Types of omni directional cameras
  • Examples
    • Equirectangular image to fisheye or pinhole camera image.
    • Fisheye image to equirectangular image.
    • Equirectangular image to cube map image (horizontal or dice format)
    • Convert cube map image (horizontal or dice format) to equirectangular image.
    • Convert equirectangular image to perspective image with desired field of view and viewing angles.
    • Convert cubemap image to perspective image with desired field of view and viewing angles.
  • Application notes
    • GUI to control focus, distortion and view orientation to generate different kinds of distortion effects and get images with different properties.
    • GUI to determine fisheye camera parameters like aperture and fisheye radius for further conversions.
    • GUI to view an equirectangular image in 360Β° format with control trackbars to change FOV(Field Of View) and viewing angles. (You can download any 360Β° video from youtube and view it using the GUI and enjoy the 360Β° viewing experience).

Installation guide

A custom make file has been written which provides quick and easy options for installing and testing the library.

    git clone https://github.com/kaustubh-sadekar/OmniCV-Lib
    cd OmniCV-Lib/omnicv/
    # To build c++ as well as python files
    make build-all
    # To build only python files
    make build-python
    # To build only c++ files
    make build-cpp

Installing OmniCV in a virtual environment using pipenv. Pipfile and Pipfile.lock files have been provided. Copy both the files to the present working directory. Then simply run the following commands to setup OmniCV in a local environment.

    pipenv install
    pipenv shell    

Running Tests

    cd OmniCV-Lib/omnicv/
    # To test only python extension of the project
    make test-py
    # To test only c++ extension of the project
    make test-cpp
    # To test python as well as c++ extension of the project
    make test-all
ROS Nodes

To build the ROS nodes follow these steps:

  • Create a folder named omnicv in your ros workspace where you have your other ros packages
roscd src/
mkdir omnicv
  • Add the contents present inside ros_files folder to the omnicv folder created in the previous step.
  • Build the workspace.
cp OmniCV/ros_files/ [PATH TO ROS WORKSPACE]/src/omnicv/
roscd
catkin_make

More Repositories

1

Invisibility_Cloak

This is a fun application of image processing which enables you to experience the magic of an invisibility cloak. Let's make our childhood fantasy of using an invisibility cloak come true.
Python
199
star
2

VirtualCam

Virtual camera is created only using opencv and numpy. It simulates a camera where we can control all its parameters, intrinsic and extrinsic to get a better understanding how each component in the camera projection matrix affects the final image of the object captured by the camera.
Python
191
star
3

FunMirrors

This is a fun project I created to motivate computer vision enthusiasts and to highlight the importance of understanding fundamental concepts related to image formation in a camera.
Python
54
star
4

AIR_Drums

This project enables you to play virtual drums simply by using concepts of image processing and computer vision.
Python
51
star
5

ShadowArt-Revisited

Shadow Art Revisited: A Differentiable Rendering Based Approach
Python
13
star
6

PixoCube

PixoCube is a digital version of photo cubes that people usually gift others. It is basically a 3D cube with different images consisting of different sides of the cube. The interesting part of this project is I used concepts of camera projection and only opencv functions to render the cube. Moreover the camera view point is rendered such that it shifts based on the movement of users face.
Python
9
star
7

Colab-Notebooks

This repository contains tutorials related to python, OpenCV , TensorFlow and PyTorch in form of colab notebooks
Jupyter Notebook
7
star
8

LS-HDIB

LS-HDIB: A Large Scale Handwritten Document Image Binarization Dataset
Python
6
star
9

Cyclops-Visual-Assistant

Cyclops is a spatial AI based visual assistant. It is assembled in a device similar to a VR headset and allows the wearer to ask if any objects matching the speech input are found nearby and provides an active feedback when approaching found objects.
Python
4
star
10

SPAD-Simulator

Physics-based modeling of SPAD sensor measurements.
3
star
11

PyTorch_KinectFusion

Kinect Fusion implementation with GPU acceleration capabilities using PyTorch. Vectorized implementation of the ICP algorithm and TSDF Fusion algorithm to enable GPU aceleration capabilities.
3
star
12

dlutils

This repository contains a small collection of utility functions
Python
2
star
13

Stereo-Cam-Lib

Library for affordable stereo camera.
1
star
14

QuickRef

Use this website as a quick reference
1
star
15

TemplateProjectpage

Test Project Website
1
star
16

kaustubh-sadekar.github.io

HTML
1
star
17

FunCV

This repository contains some useful codes related to different topics of OpenCV
1
star
18

no-more-writers-block

Temp experiment
HTML
1
star
19

DataFolder

This is a repository which contains some images which can be used for learning OpenCV functionalities. Main purpose of this repository is to provide an easy way to play with images with OpenCV using google colab.
1
star
20

githubActions

This repository is used to understand functioning of github actions. The code shared is simply for demo purpose. However the repository contains the complete process of using github actions, CD/CI workflow and pushing a project to pipy automatically using tagged commits.
Python
1
star