Giter Site home page Giter Site logo

aliushn / pyrtools Goto Github PK

View Code? Open in Web Editor NEW

This project forked from labforcomputationalvision/pyrtools

0.0 2.0 0.0 224.16 MB

image pyramid code in python 3

Home Page: https://pyrtools.readthedocs.io/

License: Other

Python 3.05% Jupyter Notebook 96.47% C 0.47%

pyrtools's Introduction

pyrtools: tools for multi-scale image processing

PyPI Version License: MIT Python version Build Status Documentation Status Binder

Briefly, the tools include:

  • Recursive multi-scale image decompositions (pyramids), including Laplacian pyramids, QMFs, Wavelets, and steerable pyramids. These operate on 1D or 2D signals of arbitrary dimension.
  • Fast 2D convolution routines, with subsampling and boundary-handling.
  • Fast point-operations, histograms, histogram-matching.
  • Fast synthetic image generation: sine gratings, zone plates, fractals, etc.
  • Display routines for images and pyramids. These include several auto-scaling options, rounding to integer zoom factors to avoid resampling artifacts, and useful labeling (dimensions and gray-range).

This is a python 3 port of Eero Simoncelli's matlabPyrTools, but it does not attempt to recreate all of the matlab code from matlabPyrTools. The goal is to create a Python interface for the C code at the heart of matlabPyrTools.

Installation

It's recommended you install from pip: pip install pyrtools. The pip install has been tested on Linux and on OSX. Windows is NOT supported because of issues with the C compiler (gcc isn't necessarily installed); if you have experience with C compilation on Windows, please open a pull request. It's possible that the way to fix this is to use Cython, ensuring that Cython is installed before attempting to run the pip command, and then adding: from Cython.Build import cythonize and wrapping the ext_modules in the setup call with cythonize, but I'm not sure.

If you wish to install from the master branch, it's still recommended to use pip, just run pip install . (or pip install -e . if you want the changes you make in the directory to be reflected in your install) from the root directory of this project. The core of this code is the C code, and the pip install will compile it nicely.

Dependencies

Python 3.5, 3.6, and 3.7 all officially supported.

Other requirements:

  • numpy
  • scipy
  • matplotlib
  • Pillow
  • tqdm
  • requests

IPython is optional. If it's not installed, pyrtools.display_tools.animshow must be called with as_html5=False (but since this is for displaying the animated image in a Jupyter / IPython notebook, you probably won't need that functionality).

For the C code to compile, we require gcc version >= 6, because of this issue

Pyramid resources

If you would like to learn more about pyramids and why they're helpful for image processing, here are some resources to get you started:

Authors

Rob Young and Eero Simoncelli, 7/13

William Broderick, 6/17

William Broderick, Pierre-Étienne Fiquet, Zhuo Wang, Zahra Kadkhodaie, Nikhil Parthasarathy, and the Lab for Computational Vision, 4/19

Usage:

method parameters mimic the matlab function parameters except that there's no need to pass pyr or pind, since the pyPyrTools version pyr and pyrSize are properties of the class.

  • load modules (note that if you installed via pip, you can skip the first two lines):
import pyrtools as pt
  • create pyramid:
pyr = pt.pyramids.LaplacianPyramid(img)
  • reconstruct image from pyramid:
recon_img = pyr.recon_pyr()

Please see TUTORIALS/02_pyramids.ipynb for more examples. You can start this with: jupyter notebook 02_pyramids.ipynb if you have iPython and Jupyter installed.

Testing

All code should be considered a beta release. By that we mean that it is being actively developed and tested. You can find unit tests in TESTING/unitTests.py. and run python unitTests.py.

If you're using functions or parameters that do not have associated unit tests you should test this yourself to make sure the results are correct. You could then submit your test code, so that we can build more complete unit tests.

Build the documentation

NOTE: If you just want to read the documentation, you do not need to do this; documentation is built automatically on readthedocs.

However, it can be built locally as well. You would do this if you've made changes locally to the documentation (or the docstrings) that you would like to examine before pushing. The virtual environment required to do so is defined in docs/environment.yml, so to create that environment and build the docs, do the following from the project's root directory:

# install sphinx and required packages to build documentation
conda env create -f docs/environment.yml
# activate the environment
conda activate pyrtools_docs
# install pyrtools
pip install -e .
# build documentation
cd docs/
make html

The index page of the documentation will then be located at docs/_build/html/index.html, open it in your browser to navigate around.

The pyrtools_docs environment you're creating contains the package sphinx and several extensions for it that are required to build the documentation. You also need to install pyrtools from your local version so that sphinx can import the library and grab all of the docstrings (you're installing the local version so you can see all the changes you've made).

pyrtools's People

Contributors

billbrod avatar ravos avatar pehf avatar zahra-kadkhodaie avatar nikparth avatar

Watchers

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