Giter Club home page Giter Club logo

equirectangular-toolbox's Introduction

Equirectangular-toolbox

Handy toolbox for equirectangular images

Equirectangular to Gnomonic projection

nfov.py

  • A tool to extract a normal field of view of any given center point from any given equirectangular image/frame.
  • Highly optimized implementation to compute every pixel projection mapping at once, with bilinear interpolation for smoother image.
  • References: mathworld.wolfram.com, wikipedia

DEMO

Input equirectangular image:

360.jpg ^ image taken from internet

Normal Field of View output images:

nfov.jpg

nfov.jpg

equirectangular-toolbox's People

Contributors

nitishmutha 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

equirectangular-toolbox's Issues

Index out of bounds exception

Hi, thanks for sharing the code. Your solution has been really helpful for me!

However, I found a small issue. You can replicate it by changing line 20:
self.FOV = [0.45, 0.45]
to
self.FOV = [0.3, 0.3]

and line 113:
center_point = np.array([0.5, .5])
to
center_point = np.array([0.5, .9])

It triggers the exception at line 76, in _bilinear_interpolation.

IndexError: index 8389700 is out of bounds for size 8388608

To solve it, I added the following, after line 64:

x2 = np.minimum(x2, self.frame_width-1)
y2 = np.minimum(y2, self.frame_height-1)

I think the error occurs because for the interpolation, you take pixel i and pixel i+1, and in some specific cases, pixel i is already the last pixel (either in width or height).

Hope it helps.

Nearest Neighbor addition?

Would it be possible to add a nearest neighbor interpolation to this package? If so how would we go about implementing that?

NFOV

Hello,

Thanks, your solution helped me a lot :)!
How do you define the normal field of view, how does it depend from the input image?

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.