Skip to content

loganwilliams/Pyramids.jl

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Pyramids.jl

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.

Project Status

Build Status Coverage Status

Documentation

Installation

To install and begin using Pyramids, run the following in Julia:

Pkg.add("Pyramids")
using Pyramids

Usage

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 ImagePyramid(im::Array, t::PyramidType).

Subtypes of PyramidType include:

  • The abstract type SimplePyramid
    • GaussianPyramid
    • LaplacianPyramid
  • ComplexSteerablePyramid

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 ImagePyramid.

using Images, Pyramids

im = real.(load("cameraman.png"))
pyramid = ImagePyramid(im, ComplexSteerablePyramid(), scale=0.75, max_levels=23)

To manipulate an ImagePyramid, the subband and 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, update_subband!.

To convert an ImagePyramid back to its original image representation, the toimage function may be used.

image_inverted_hi = toimage(pyramid_inverted_hi)

Further examples

The examples/ directory provides a further example of using Pyramids to implement "Phase-Based Frame Interpolation for Video," by Meyer et. al., from CVPR 2015. [1]

[1] https://www.disneyresearch.com/publication/phasebased/

About

A multi-scale image pyramid representation library for Julia.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages