Skip to content

ricsonc/more-pixels-less-noise

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

More pixels, less noise

Below is a small crop of a larger image taken in relatively low light. There is a lot of noise in the top image -- however the top image is just the first of 12 which I took and fused together to create the bottom image, which is twice the resolution (80 MP) and much cleaner. No tripod was used, and I deliberately shook my hands more than usual while taking the photographs.

Test Image 4

This project has no original ideas and is a custom synthesis/recombination of previous research:

https://dl.acm.org/citation.cfm?id=2980254

https://arxiv.org/abs/1905.03277

Although compared to those works (which run on a phone in seconds), this is quite clumsy and unoptimized: it takes nearly an hour per burst of images on a desktop computer and requires at least 32GB of RAM.

The basic components are 1. estimating optical flow to align the images, 2. misalignment robust block merging a la Hasinoff et al., 3. a naive superres approach by upsampling images before warping/aligning with subpixel accurate flow.

The dependencies are dcraw, for demosaicking, pyflow, which is a wrapper on Ce Liu's implementation of coarse to fine flow estimation, and cv2, imagemagick, and some python libraries, for some image processing tasks.

The code isn't really plug-and-play yet, so I won't bother writing how-to-use documentation. All of the steps are implemented as a function in cmds.sh, and merge.py is used as the last step. The output is 16 bit linear RGB.

About

given a small collection (~10) of photos taken from a handheld camera, merge them in order to obtain a single higher resolution image with less noise

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published