A multi-scale image pyramid representation library for Julia.
Currently, Pyramids.jl can create, manipulate, and reduce Gaussian pyramids, Laplacian pyramids, and complex steerable pyramids. These image representations are used for a wide variety of computer vision and computational photography algorithms.
To install and begin using Pyramids, run the following in Julia:
Pkg.add("Pyramids") using Pyramids
While parts of the Pyramids library are adapted from matlabPyrTools, use of the library is quite different. For a more direct port of matlabPyrTools, look at juliaPyrTools.
The Pyramids library is used through the
ImagePyramid class. To create a new
ImagePyramid, there a several possible constructors. Most typically, they take the form
- The abstract type
Additional parameters include the pyramid scale/slope, the maximum number of levels, number of orientation bands, and the minimum level size, as applicable. For a complete listing of parameters, view the source code.
Below is an example of loading an image and converting it to an
using Images, Pyramids im = real.(load("cameraman.png")) pyramid = ImagePyramid(im, ComplexSteerablePyramid(), scale=0.75, max_levels=23)
To manipulate an
update_subband functions may be used.
hi_residual = subband(pyramid, 0) pyramid_inverted_hi = update_subband(pyramid, 0, -hi_residual)
update_subband also has a mutating variant,
To convert an
ImagePyramid back to its original image representation, the
toimage function may be used.
image_inverted_hi = toimage(pyramid_inverted_hi)
examples/ directory provides a further example of using Pyramids to implement "Phase-Based Frame Interpolation for Video," by Meyer et. al., from CVPR 2015.