Sie sind auf Seite 1von 28

Piccante

/pik'kante/
the hottest HDR library

dr. Francesco Banterle


Visual Computing Laboratory, ISTI-CNR, Pisa, Italy

Piccante: who we are

dr. Francesco Banterle - architect and programmer


francesco.banterle@isti.cnr.it
dr. Luca Bendetti - library packer and programmer
l.benedetti@bath.ac.uk

Brno - 06/10/2014

Piccante: when and how it started

Piccante started as a debayering tool for PTGrey


cameras in early 2010 for acquiring Polynomial
Texture Maps

More functionalities were soon added such as a


noise removal, basic operators, filters until we
got Piccante

Brno - 06/10/2014

Piccante: is

A C++11 open source library header-only; no need to compile it

A library for processing classic and HDR images

Distributed using the LGPL v3 License (probably MPL2 license


soon)

Modular > easy to extend!!!

Multi-platform > it compiles on Windows, OS X, Linux

Fast > multi-threading using C++11 threads, and GPU via


OpenGL 4.0 Core Profile

Brno - 06/10/2014

Piccante: is not

OpenCV: great library meant for computer vision

ImageStack: great but abandoned project for imaging

Image Magick: great library for reading images

Free Image: great library for reading images

ImageJ: great library for medical imaging

Halide: great high-performance language for Imaging

Brno - 06/10/2014

Piccante: what can be done

CRF recovery
HDR assembly
Brno - 06/10/2014

Piccante: what can be done

Tone Mapping
Brno - 06/10/2014

Piccante: what can be done

Color Space Conversion


Brno - 06/10/2014

Piccante: what can be done

Filtering: linear, edge-preserving, non-linear, etc.


Brno - 06/10/2014

Piccante: what can be done

Extracting features, matching them, aligning images


Brno - 06/10/2014

Piccante: depends on

OpenGL: if you want to access the OpenGL


module. You can choose your favourite OpenGL
loading library; e.g. GLEW, GL3W, etc.

QT: for running some examples and for some I/O It is multi-platform

Eigen: linear algebra library; already included in


the folder include/externals

Brno - 06/10/2014

Piccante: how to installation

Download piccante-master.zip from:!

http://piccantelib.net!

http://github.com/banterle/piccante!

Unzip Piccante into your favorite folder!

Add piccante/include in you include path

Brno - 06/10/2014

Piccante: main classes


sub-class
Image

used in

ImageRAW

d
e
b
em

Histogram

Brno - 06/10/2014

d
e
d

o
t
in

used in

Filter

Piccante: mapping the space


Piccante

First Level

Second Level

algorithms
colors
include

filtering
tone_mapping
Image

FOLDER

ImageRAW
Histogram

CLASS
Brno - 06/10/2014

Filter

Piccante: Image class

An image in Piccante is a linear array of pixels stored


in a packed format and row major:

Pixel

!
!

Number of color channels are specified by the user;


i.e. images are not limited to have three components

Images can have multiple frames; images can be


videos or 3D images!

Brno - 06/10/2014

Piccante: Image class

It provides:

functions for memory management

accessing pixels (stored as float)

basic operators between images and single values:


max, min, +, -, *, /

functions for gathering statistics for the entire image


or a window of it: mean, variance, max, min, etc..

Brno - 06/10/2014

Piccante: ImageRAW class

It provides functions for I/O:

Native: HDR, PFM EXR (through optional


OpenEXR library), BMP, TGA, PPM, PGM, PBM

Through QT: PNG, JPEG, TIFF, etc. Note it


manages QImage as well

Brno - 06/10/2014

Piccante: Histogram class

Given an image, it creates a classic histogram

It is general; working for LDR and HDR images

It is meant for a single color plane

It can be embedded into an ImageRAW for using it in Filter


!
!

Brno - 06/10/2014

Piccante: Filter class

This class defines a Piccante filter:


f

n ImageRAW > 1 ImageRAW

It provides:

Multi-threading management

Mechanisms for allocating memory for outputs

Brno - 06/10/2014

Piccante: the OpenGL module

This is a subset of Piccante

It exploits the graphics pipeline for fast


computations on the GPU

It is based mostly on OpenGL 4.0 Core profile

Future versions of this module may use GL Compute


shaders (from the OpenGL 4.3 Core profile)

Not bound to a particular OpenGL Loading Library

Brno - 06/10/2014

Piccante: main classes

ImageRAWGL

used in

ImageStatisticsGL

Brno - 06/10/2014

used in

FilterGL

Piccante: mapping the space


Piccante

First Level

Second Level

algorithms
colors
include/gl

filtering
tone_mapping
ImageRAWGL

FOLDER
CLASS
Brno - 06/10/2014

ImageStatisticsGL

FilterGL

Piccante: ImageRAWGL

Inheriting from ImageRAW

Basically an OpenGL version of ImageRAW

mechanisms for allocating memory on the GPU and


copying data

Operators are implemented as filters

Supporting different kind of images:

GL_TEXTURE_2D, GL_TEXTURE_3D,
GL_TEXTURE_2D_ARRAY, GL_TEXTURE_CUBE_MAP

Brno - 06/10/2014

Piccante: ImageStatisticsGL

This class is meant for gathering statistics (max,


min, mean, etc.) from an image stored on the GPU

It is based on a Redux paradigm (early GP-GPU)


for compatibility:

future versions may use OpenGL 4.x features

Brno - 06/10/2014

Piccante: redux paradigm


Computing the minimum:
First Pass

Second Pass

10

10

Third Pass

1
0

14

22

Brno - 06/10/2014

Piccante: FilterGL

Basically an OpenGL version of Filter

It provides mechanisms for managing OpenGL with


ease: setting shaders up, allocating memory for
outputs, etc.

Brno - 06/10/2014

and now
Piccante in action

Brno - 06/10/2014

Thank you for your attention


francesco.banterle@isti.cnr.it
l.benedetti@bath.ac.uk
http://piccantelib.net
http://github.com/banterle/piccante
Brno - 06/10/2014

Das könnte Ihnen auch gefallen