Skip to content

6o6o/fft-descreen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Fourier transform descreen filter

An implementation of GIMP descreen plugin in python with OpenCV. It utilizes a custom normalization of magnitude spectrum, found in fft plugin, which assigns more energy to pixels further away from the center, thus allowing to use regular binary threshold to localize high frequency areas and create a mask automatically. It turned out to be very helpful in case of periodic pattern removal, therefor I adapted it for python.

Usage

python descreen.py images/example.png images/result.png

example result

Optional arguments include

  • --thresh INT, -t INT - Threshold level for normalized magnitude spectrum
  • --radius INT, -r INT - Radius to expand the area of mask pixels
  • --middle INT, -m INT - Ratio for middle preservation

The normalized spectrum and its multi-channel mask of the above example respectively

norm-spec spec-mask

Motivation

Originally intended to clean up deconvolution checkerboard artifacts, found in style transferred images, I thought it may have its uses in other areas, like cleaning low-dpi scans and therefor would be better off as a separate script. I excluded the optional despeckle step, found in original plugin for being too destructive. Instead, I find waifu2x to give a superior result in case of artistically styled images, thus tend to use it with maximum noise reduction as a second step.

Original image

orig

fft-descreen + waifu noise removal

result

About

An fft-based descreen filter

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages