Code Monkey home page Code Monkey logo

penguinv's Introduction

penguinV

PenguinV is a powerful image processing library with focus on heterogeneous systems. The library is designed with an idea to have common API for CPUs and GPUs simplifying developer's work on context switching between devices. Core features of the library:

  • heterogeneous system support (CPUs and GPUs)
  • CUDA, OpenCL and SIMD (SSE, AVX, NEON) support
  • Python support
  • multithreading support
  • cross-platform (Windows, Linux, MacOS)
  • compactness
  • ability to process separate parts of an image (ROI)
  • user-defined image types and more.

What can it do?

You can develop a software within minutes of your time to obtain high performance and accuracy. It is up to developer to decide which device (CPU or GPU) would execute the code or give such control to the library.

Example code for below images could look like this:

Image red = ExtractChannel( image, RED_CHANNEL );
Image binary = Threshold( red, // threshold
                          GetThreshold( // get weighted threshold
                              Histogram( red ) ) ) ); // get image histogram

BlobDetection detection;
...
detection.find( binary );
...
Image rgb = ConvertToRgb( binary );
rgb = BitwiseAnd( image, rgb );
...
rgb = BitwiseOr( image, rgb );

The trick behind the code is that you have a single interface for CPU as well as for GPU!

one two three four five six

Contribution

Actions Status Total alerts

We welcome and appreciate any help, even if it's a tiny text or code change. Please read contribution page before starting work on a pull request. Not sure what to start with? Feel free to refer to good first issue or help wanted tags.

Requirements

To compile the source code your compiler must support at least C++ 11 version.

How to install

The library is distributed in the form of source code. To use the library you need to include necessary files into your application project. That's it! No more extra moves!

How to compile an example

Open README.md file in any of example directories and follow instructions.

Multithreading support

The library contains it's own thread pool which creates multiple tasks to run image processing function for a given image via multiple threads. Such tenchnique gives a big boost on machines with major CPU usage.

GPU support

All source code and descriptions related to CUDA or OpenCL are located in separate src/cuda and src/opencl directories respectively. Read full description about CUDA or OpenCL support in README file in the directory.

License

This project is under 3-clause BSD License. Please refer to file LICENSE for more details.

API description

Directory doc contains latest and valid information and description of library's API.

penguinv's People

Contributors

0x72d0 avatar akhilgeothom avatar arcrode avatar bascodlowell avatar captain-darko avatar cdainmiller avatar dianarg avatar fullset avatar gkrls avatar gumeo avatar hrshbh avatar ihhub avatar josephnicholas avatar kgorecki avatar lrm25 avatar manekenpix avatar matthewmcgonagle avatar mekot avatar mexchip avatar moeharuna avatar phoffmeister avatar rab-h-sonmai avatar rithvikp1998 avatar seancyw avatar syclik avatar tbelaire avatar theoniko avatar vrozin avatar yannlabou avatar yunchih 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.