Git Product home page Git Product logo

simple-deflicker's Introduction

Simple Deflicker

A minimalist, lightning-fast and easy to use tool for deflickering image sequences such as timelapses. It's still in its early stages of development.

Short Demo

What is timelapse flickering?

Timelapse flickering can occur if one or more settings of the camera have been left on "auto" which causes it to randomly switch between two settings (for example shutter speeds). Here is an example on YouTube (not made by me): Timelapse flickering demonstration

How to use this software

  • Download the latest version from the releases page. The compiled binary is only available for windows at this point
  • Execute simple-deflicker.exe either by double-clicking it or by launching it from the console. If launched without any arguments Simple Deflicker will ask you to specify a source and destination folder. Read the wiki for more details.
  • The software will then start deflickering the images.

Current limitations of the tool

  • Only JPG and PNG (8bit) are supported
  • JPGs will always be saved with a compression setting of 95
  • All metadata present in the source files will not be copied over.
  • The software can only fix global flicker. It can not deal with rolling flicker (caused by certain indoor lighting conditions).

How does the deflickering work?

The current implementation uses a technique called histogram matching. It basically creates a list of how often a certain brighness (or rather every individual brightness level) appears, creates a rolling average to allow for gradual brightness changes (for example in a day to night transition) and finally shifts the brightness to match the "smoothed out" brightness levels.

What's planned for the future

  • Compiled binaries for more operating systems (linux and macOS)
  • Maybe a proper GUI (though CLI will remain possible)
  • 16bit image support

How is the software structured? (only important for developers, not for users)

The software uses several other packages:

  • Imaging for loading, saving and manipulating image files.
  • dialog for creating the dialog boxes and file selection windows.
  • uiprogress for creating the progress bars in the console. Let's take a quick tour through all the files:
  • main.go contains the main() function as well as the runDeflickering() function which orchestrate the entire process.
  • histogram.go contains the mathematical operations for handeling histograms and luts (Look up tables) used for deflickering
  • files.go deals with the filesystem. It parses the source directory for images and creates the destination directory if it does not exist.
  • config.go deals with the configuration, either via args or (if the args parameters are missing) by creating a pop-up to let users make a selection.
  • progress.go is responsible for managing the progress bars in the console window.
  • util.go contains various helper functions.

simple-deflicker's People

Contributors

struffel avatar

Watchers

 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.