All Projects → ethereon → Lycon

ethereon / Lycon

Licence: other
A minimal and fast image library for Python and C++

Programming Languages

python
139335 projects - #7 most used programming language
cpp
1120 projects

Projects that are alternatives of or similar to Lycon

Igrphototweaks
Drag, Rotate, Scale and Crop
Stars: ✭ 212 (-9.79%)
Mutual labels:  image-processing
Obs Kinect
OBS Plugin to use a Kinect (all models supported) in OBS (and setup a virtual green screen based on depth and/or body detection).
Stars: ✭ 217 (-7.66%)
Mutual labels:  image-processing
Image Compress Without Backend
Pure frontend solution to compress images
Stars: ✭ 224 (-4.68%)
Mutual labels:  image-processing
Swiftuiimageeffects
Swift port of Apple UIImage+UIImageEffecs category.
Stars: ✭ 213 (-9.36%)
Mutual labels:  image-processing
Gwu data mining
Materials for GWU DNSC 6279 and DNSC 6290.
Stars: ✭ 217 (-7.66%)
Mutual labels:  image-processing
Superpixels Revisited
Library containing 7 state-of-the-art superpixel algorithms with a total of 9 implementations used for evaluation purposes in [1] utilizing an extended version of the Berkeley Segmentation Benchmark.
Stars: ✭ 222 (-5.53%)
Mutual labels:  image-processing
Dhash
Python library to calculate the difference hash (perceptual hash) for a given image, useful for detecting duplicates
Stars: ✭ 209 (-11.06%)
Mutual labels:  image-processing
Imageglass
🏞 A lightweight, versatile image viewer
Stars: ✭ 3,284 (+1297.45%)
Mutual labels:  image-processing
Relion
Image-processing software for cryo-electron microscopy
Stars: ✭ 219 (-6.81%)
Mutual labels:  image-processing
Catalyst
Accelerated deep learning R&D
Stars: ✭ 2,804 (+1093.19%)
Mutual labels:  image-processing
Pyimsegm
Image segmentation - general superpixel segmentation & center detection & region growing
Stars: ✭ 213 (-9.36%)
Mutual labels:  image-processing
Agimagecontrols
cool tools for image edition
Stars: ✭ 217 (-7.66%)
Mutual labels:  image-processing
Thug Memes
Command line Thug Meme generator written in Python
Stars: ✭ 224 (-4.68%)
Mutual labels:  image-processing
Marvinj
Javascript Image Processing Framework based on Marvin Framework
Stars: ✭ 213 (-9.36%)
Mutual labels:  image-processing
Dehazezoo
DehazeZoo for collecting dehazing methods, datasets, and codes.
Stars: ✭ 228 (-2.98%)
Mutual labels:  image-processing
Pynet
Generating RGB photos from RAW image files with PyNET
Stars: ✭ 211 (-10.21%)
Mutual labels:  image-processing
Simplecv
Stars: ✭ 2,522 (+973.19%)
Mutual labels:  image-processing
Nyximageskit
A set of efficient categories for UIImage class. It allows filtering, resizing, masking, rotating, enhancing... and more.
Stars: ✭ 2,553 (+986.38%)
Mutual labels:  image-processing
Graphite
Open source 2D node-based raster/vector graphics editor (Photoshop + Illustrator + Houdini = Graphite)
Stars: ✭ 223 (-5.11%)
Mutual labels:  image-processing
Zoom Learn Zoom
computational zoom from raw sensor data
Stars: ✭ 224 (-4.68%)
Mutual labels:  image-processing

Lycon

A minimal and fast image library for Python and C++.

Lycon is a small subset of optimized image operations derived from OpenCV.

Current set of features include:

  • Reading and writing JPEG and PNG images
  • Fast SIMD optimized image resizing
  • Zero-copy interop with NumPy whenever possible

Tested on:

  • Linux (Ubuntu 14.04) with Python2.7.6 and 3.5.2.
  • macOS (Sierra, 10.12) with Python 2.7.11 and 3.5.1.

Install

pip install lycon

Native extension dependencies:

  • CMake 2.8 or newer
  • C++ toolchain
  • LibJPEG
  • LibPNG

Ubuntu

Single-line command for installing all dependencies:

sudo apt-get install cmake build-essential libjpeg-dev libpng-dev

Anaconda

When working within an Anaconda Python distribution, it is recommended to use the latest cmake version (3.6 or newer). Older versions can lead to a mismatch between the libpng and libjpeg headers used to build Lycon (usually the system headers), and the linked library (which may be preempted by the Anaconda-scoped version). To install the latest cmake version:

conda install cmake

Example

import lycon

# Load an image as a numpy array
img = lycon.load('mittens.jpg')
# Resize the image using bicubic interpolation
resized = lycon.resize(img, width=256, height=512, interpolation=lycon.Interpolation.CUBIC)
# Crop the image (like any regular numpy array)
cropped = resized[:100, :200]
# Save the image
lycon.save('cropped-mittens.png', cropped)

Limitations

Compared to other image processing libraries (OpenCV, pillow, scikit-image), Lycon offers a very limited set of operations. Intended usages include data loaders for deep learning, mass image resizing, etc.

Advantages over OpenCV

  • Drastically smaller (at the cost of drastically fewer features)
  • Python module installable via pip
  • Images use the more common RGB ordering (vs OpenCV's BGR)

However, if you already have OpenCV installed, Lycon's advantages are minimal.

Advantages over PIL(low)

  • Faster
  • First-class NumPy support
  • Full support for floating point images

Advantages over Scikit-Image

  • Drastically faster

Benchmarks

  • The table below lists execution time (in seconds), averaged across 10 runs
  • The multiplier next to the time is the relative slowdown compared to Lycon
Operation Lycon OpenCV PIL Scikit-Image
Upsample: Nearest 0.1944 0.1948 (1x) 2.1342 (11x) 30.8982 (158.9x)
Upsample: Bilinear 0.4852 0.4940 (1x) 7.2940 (15x) 45.9095 (94.6x)
Upsample: Bicubic 1.8162 1.8182 (1x) 8.9589 (4.9x) 120.1645 (66.1x)
Upsample: Lanczos 4.5641 4.5714 (1x) 10.7517 (2.3x)
Upsample: Area 0.4801 0.4931 (1x)
Downsample: Nearest 0.0183 0.0181 (1x) 0.4379 (24.2x) 3.6101 (199.9x)
Downsample: Bilinear 0.0258 0.0257 (1x) 1.3122 (51x) 4.8487 (188.4x)
Downsample: Bicubic 0.1324 0.1329 (1x) 1.8153 (13.7x) 9.4905 (71.6x)
Downsample: Lanczos 0.3317 0.3328 (1x) 2.4058 (7.2x)
Downsample: Area 0.0258 0.0259 (1x)
Read: JPG 0.3409 0.5085 (1.5x) 1.4081 (4.1x) 1.4628 (4.3x)
Read: PNG 1.2114 1.3245 (1.1x) 1.8274 (1.5x) 1.8674 (1.5x)
Write: JPG 0.4760 0.6046 (1.3x) 2.3823 (5x) 5.0159 (10.5x)
Write: PNG 2.1421 2.2370 (1x) 9.0580 (4.2x) 11.6060 (5.4x)
  • Blank cells indicate that the operation is not supported by the library
  • All operations performed on a 16k (15360 x 8640) RGB image
  • Tests performed on Ubuntu 14.04 running on an Intel Core i7 (Skylake)
  • OpenCV 3.2+ (master: a85b4b5), Pillow 4.0.0, skimage 0.12.3, Python 2.7.3
  • OpenCV can potentially achieve better performance with GPU implementations and proprietary libraries like Intel IPP

License

  • All code derived from the OpenCV project is licensed under the 3-clause BSD License.
  • All Lycon-specific modifications are licensed under the MIT license.

See LICENSE for further details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].