Giter Site home page Giter Site logo

ludos1978 / eosvrconverter Goto Github PK

View Code? Open in Web Editor NEW

This project forked from grapeot/eosvrconverter

1.0 0.0 0.0 57 KB

A small utility to allow Canon EOS VR Utility to indirectly process RAW files, and turn on horizontal correction by default.

Python 99.63% Shell 0.37%

eosvrconverter's Introduction

Notes from the corrections / updates

  • when converting from fisheye to equirectangular the images are converted to 8bit only from 16bits colors
  • use create_venv.command to install the python packages
  • correct the path at the beginning of EOSVRConverter.py to match the created venv-directory

EOS VR Converter

This repo provides an alternative workflow than the EOS VR Utility for Canon's great VR lens. The workflow aims to handle the current painpoints of the EOS VR Utility:

  • RAW formats are unsupported for both still and video;
  • Operation efficiency is not a focus of the software design, which has many blocking long operations. The users often have to wait for minutes before able to begin export;
  • There are some artifacts in the parallex correction, sometimes resulting in dizziness or cross eyes.

The utility allows for the following workflows instead:

Photos

  • [Optional] Perform image adjustments from RAW files in your favorite editing tools. Export the result to JPG files.
  • Use the EOSVRConverter.py to convert the images to equirectangular format in batch, in parallel, in a set and go manner.
  • [Optional] If resolution is a concern, I usually use Topaz Sharpen AI to boost the clarity.

Videos

  • Perform RAW decoding, video color grading (if you use Canon Log) and other adjustment in your favorite editing tools. Export the result to MP4 files.
  • If you use All-I format (instead of RAW formats), it's possible to skip the previous step and directly begin from the mp4 files right from the body. In this case, use the EOSVRConverter.py to do color grading, auto adjustment, and equirectangular transform to png files. It also extracts audio for future use. Otherwise, one can also use EOSVRConverter.py for equirectangular transform purpose only, similarly in a parallel, efficient, and set-and-go manner.
  • Use VideoCombiner.py to optionally launch Topaz Sharpen AI to boost the clarity. And then the python script combines the frames and the audio into a MP4 file which can be played on VR goggles.

EOSVRConverter_Red.py provides support on RED V-Raptor VV. Check the code for more details.

enableJpgs.py is provided for legacy use only.

Technical Details

This utility converts an image or video from R5 + EOS VR lens to an equirectangular form, which could be rendered in VR goggles. I used industry standard algorithms to develop this tool so the result might be different from EOS VR Utility's result. Currently it doesn't depend on the EXIF data, so it doesn't require the image to be from the body, and thus could support jpg files derived from the RAW file. However, this also limits its capability to perform automatic horizontal correction. So there is no gaurantee the horizon is correct. When the photo was taken with too much derivation from the horizonal position (tilt etc.) the photo may bring disorientation and dizziness. The speed is about 10~20x faster than the EOS VR Utility though. Similarly, the utility also supports RAW videos from R5 (indirectly), with multi-core acceleration.

This is a python script, so one needs to have some basic understanding of python in order to use it. First install python and dependencies in the requirement. And then modify the code in the EOSVRConverter.py as you like, epsecially the main function. It has quite some personalized adjustment embedded in, so I strongly suggest to first read the code instead of execute it blindly.

[Legacy] EnableJpgs

When using the great EOS VR system, I got two pain points. The first is the software doesn't accept RAW files, even for images. We have to use the output jpg files directly from the body, instead of the more flexible and capable RAW files. The second is the entire EOS VR Utility software is implemented with blocking behaviors. That is, when clicking anything such as selecting a file, the UI will completely freeze while doing (usually time consuming) computation. This is really annoying when one has tens or hundreds of photos to process.

This utility doesn't solve the two issues directly, but greatly alleviate the issues. For the first one, it allows the EOS VR Utility to recognize the derived jpgs from RAW files. And for the second one, it enabled "Horizontal Correction" by default, so we don't need to click into each image twice and wait for two minutes to click the "Hozirontal Correction" button. We still need to click into image to calculate the parallax correction parameter though.

Usage

This is a python script. So please first install python 3, and also make sure exittool is installed and put into the system PATH. Assuming the jpg files derived from the RAW files are stored in the folder ./jpgs, and the original jpg files right from the camera are stored in the folder ./raw_jpgs, then we can execute the following command:

python ./enableJpgs.py --jpgdir ./jpgs --rawdir ./raw_jpgs

This will write corresponding xml files to ./jpgs, and patch the jpg files so the EOS VR Utility could recognize them.

eosvrconverter's People

Contributors

grapeot avatar ludos1978 avatar

Stargazers

 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.